diff --git a/.gitignore b/.gitignore index 5950895ba6002cc0980dbb71b9f74c6e72dcca46..9d2c198ef0ca236a75377d647a6be9a8d5fa783e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ etctmp.c chips/r528/**/*.ddc Make.dep apps/Kconfig +*.su \ No newline at end of file diff --git a/apps/bt_instance/gattc_op.c b/apps/bt_instance/gattc_op.c index b9f9394d671ba946f94ea7996a92aa736e17afcd..f9714617ca743f6a9b7365c130f79b2c1650b30f 100644 --- a/apps/bt_instance/gattc_op.c +++ b/apps/bt_instance/gattc_op.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include diff --git a/boards/r528/drivers/realtek_ieee80211/realtek_netdev.c b/boards/r528/drivers/realtek_ieee80211/realtek_netdev.c index 2f86dec2d2f49018a10a2f2174609e5fe738b32d..87c607da70dcdf77b31580d6c46ad44a5a51aaf9 100755 --- a/boards/r528/drivers/realtek_ieee80211/realtek_netdev.c +++ b/boards/r528/drivers/realtek_ieee80211/realtek_netdev.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include "net_stack_intf.h" @@ -13,6 +14,15 @@ #include #include #include + +#ifdef atomic_set +#undef atomic_set +#endif + +#ifdef atomic_read +#undef atomic_read +#endif + /* Get index from dev pointer. */ #define DEVIDX(p) ((struct realtek_dev_s *)(p) - g_realtek_dev) @@ -381,7 +391,6 @@ int realtek_netdev_init(void) for (devidx = 0; devidx < 2; devidx++) { dev = &g_realtek_dev[devidx].dev; - atomic_init(&dev->quota[NETPKT_TX], 100); atomic_init(&dev->quota[NETPKT_RX], 200); diff --git a/boards/r528/r528s3-gemini-s1/configs/nsh/defconfig b/boards/r528/r528s3-gemini-s1/configs/nsh/defconfig index f54af75262d8ea00d23461785ef0af88bc414875..c6c27fe3574057f92f751fe7d4979265cdad322f 100644 --- a/boards/r528/r528s3-gemini-s1/configs/nsh/defconfig +++ b/boards/r528/r528s3-gemini-s1/configs/nsh/defconfig @@ -12,6 +12,7 @@ # CONFIG_DISABLE_MQUEUE is not set # CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set # CONFIG_DISABLE_PTHREAD is not set +# CONFIG_DISABLE_SIGNALS is not set # CONFIG_FS_PROCFS_EXCLUDE_BLOCKS is not set # CONFIG_FS_PROCFS_EXCLUDE_CPUINFO is not set # CONFIG_FS_PROCFS_EXCLUDE_ENVIRON is not set @@ -199,7 +200,6 @@ CONFIG_BT_PRIVACY=y CONFIG_BT_RX_STACK_SIZE=4096 CONFIG_BT_SAMPLE=y CONFIG_BUILTIN=y -CONFIG_CM_KVDB_TEST=y CONFIG_COMPONENTS_AW_ALSA_UTILS=y CONFIG_COMPONENTS_AW_ALSA_UTILS_ALOOP=y CONFIG_COMPONENTS_AW_EQ_TEST=y @@ -318,6 +318,7 @@ CONFIG_LCD_SUPPORT_T070S140B=y CONFIG_LED_RGB_TEST=y CONFIG_LED_RGB_WS2812=y CONFIG_LIBCXXTOOLCHAIN=y +CONFIG_LIBC_LOCALE=y CONFIG_LIBC_LONG_LONG=y CONFIG_LIBM=y CONFIG_LIBSUPCXX=y @@ -331,7 +332,6 @@ CONFIG_LIB_PNG=y CONFIG_LIB_SSH=y CONFIG_LIB_ZLIB=y CONFIG_LINE_MAX=256 -CONFIG_LTO_FULL=y CONFIG_LV_BIN_DECODER_RAM_LOAD=y CONFIG_LV_CACHE_DEF_SIZE=1048576 CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY=y @@ -461,7 +461,6 @@ CONFIG_NSH_PROMPT_MAX=256 CONFIG_NSH_QUOTE=y CONFIG_NXPLAYER_MAINTHREAD_STACKSIZE=3072 CONFIG_NXRECORDER_MAINTHREAD_STACKSIZE=3072 -CONFIG_PSEUDOFS_SOFTLINKS=y CONFIG_PTHREAD_MUTEX_TYPES=y CONFIG_PTHREAD_STACK_DEFAULT=4096 CONFIG_PWM=y diff --git a/boards/r528/r528s3-gemini-s1/configs/nsh_minidisplay/defconfig b/boards/r528/r528s3-gemini-s1/configs/nsh_minidisplay/defconfig index 1d4f8151f03a590e8c6a55d79221e1cc9d448d81..b688da6b08f5a30ed6f10352dba0da8641a241da 100644 --- a/boards/r528/r528s3-gemini-s1/configs/nsh_minidisplay/defconfig +++ b/boards/r528/r528s3-gemini-s1/configs/nsh_minidisplay/defconfig @@ -14,6 +14,7 @@ # CONFIG_DISABLE_POSIX_TIMERS is not set # CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set # CONFIG_DISABLE_PTHREAD is not set +# CONFIG_DISABLE_SIGNALS is not set # CONFIG_FS_PROCFS_EXCLUDE_BLOCKS is not set # CONFIG_FS_PROCFS_EXCLUDE_CPUINFO is not set # CONFIG_FS_PROCFS_EXCLUDE_ENVIRON is not set @@ -465,7 +466,6 @@ CONFIG_NSH_PROMPT_MAX=256 CONFIG_NSH_QUOTE=y CONFIG_NXPLAYER_MAINTHREAD_STACKSIZE=3072 CONFIG_NXRECORDER_MAINTHREAD_STACKSIZE=3072 -CONFIG_PSEUDOFS_SOFTLINKS=y CONFIG_PTHREAD_MUTEX_TYPES=y CONFIG_PTHREAD_STACK_DEFAULT=4096 CONFIG_PWM=y diff --git a/boards/r528/r528s3-gemini-s1/scripts/sdram.ld.S b/boards/r528/r528s3-gemini-s1/scripts/sdram.ld.S index f29ad00383197ea29325f84b18b96c132576a4f8..a467810a54e05ddd17baa9cdb7456348e02b8d58 100644 --- a/boards/r528/r528s3-gemini-s1/scripts/sdram.ld.S +++ b/boards/r528/r528s3-gemini-s1/scripts/sdram.ld.S @@ -70,10 +70,14 @@ SECTIONS *(.gnu.linkonce.r.*) *(.gnu.linkonce.armextab.*) *(.ARM.extab*) + _etext = ABSOLUTE(.); + } > sdram + + .ARM.exidx : ALIGN(4) + { PROVIDE_HIDDEN (__exidx_start = .); *(.ARM.exidx* .gnu.linkonce.armexidx.*) PROVIDE_HIDDEN (__exidx_end = .); - _etext = ABSOLUTE(.); } > sdram .init_section : diff --git a/boards/r528/r528s3-gemini-s1/src/etc/init.d/rcS.nsh b/boards/r528/r528s3-gemini-s1/src/etc/init.d/rcS.nsh index a9d386b77ec249fb7a947a0c74c025103d064187..a8e4fde60c2a9d1c074ac07aec1dd95e044db791 100644 --- a/boards/r528/r528s3-gemini-s1/src/etc/init.d/rcS.nsh +++ b/boards/r528/r528s3-gemini-s1/src/etc/init.d/rcS.nsh @@ -57,9 +57,6 @@ then reboot fi -echo "Starting bluetoothd..." -bluetoothd & - #ifndef CONFIG_LCD_DEV #ifdef CONFIG_SHOW_LOGO /* Do not show logo if system crashed or during silient OTA. */ @@ -91,6 +88,11 @@ fi luncher_mini & #endif -echo "Boot nsh ok" - +#ifdef CONFIG_BLUETOOTH_SERVER +sleep 8 +echo "Starting bluetoothd..." +bluetoothd & #endif + +echo "Boot nsh ok" +#endif /* CONFIG_GEMINI_S1_NSH */ diff --git a/boards/r528/r528s3-gemini-s1/src/shim_binary_compat.c b/boards/r528/r528s3-gemini-s1/src/shim_binary_compat.c index 67b655d1f3fc66f57054ee10843921ddb2ba50d8..55edcf583f4477abf2f539eb623a797a94003b99 100644 --- a/boards/r528/r528s3-gemini-s1/src/shim_binary_compat.c +++ b/boards/r528/r528s3-gemini-s1/src/shim_binary_compat.c @@ -1,3 +1,4 @@ +#include #include #include @@ -6,6 +7,8 @@ void up_perf_init(void *arg) { } /* Bluetooth AVRCP stubs needed by frameworks/connectivity/bluetooth/service/stacks/zephyr/sal_avrcp_interface.c */ +#ifndef CONFIG_BLUETOOTH_STACK_BREDR_ZBLUE + void bt_avrcp_cttg_register_cb(void *cb) { } int bt_avrcp_cttg_connect(void *conn) { return 0; } int bt_avrcp_cttg_disconnect(void *conn) { return 0; } @@ -14,3 +17,4 @@ int bt_avrcp_ct_pass_through_cmd(void *conn, int op_id, int state) { return 0; } int bt_avrcp_ct_get_play_status(void *conn) { return 0; } int bt_avrcp_ct_get_id3_info(void *conn) { return 0; } int bt_pts_avrcp_ct_get_capabilities(void *conn) { return 0; } +#endif diff --git a/chips/r528/components/bluetooth/rtk_hci.c b/chips/r528/components/bluetooth/rtk_hci.c index 4d26df55907ed398ada05e47a3e06e1c4cedb6e2..035ad1d5c472526b63898b6687cc6b76cc4fd7bf 100644 --- a/chips/r528/components/bluetooth/rtk_hci.c +++ b/chips/r528/components/bluetooth/rtk_hci.c @@ -98,6 +98,17 @@ struct bt_hci_evt_hdr static struct rtk_bt_priv_s g_bthci_dev = { 0 }; +static FAR struct rtk_bt_priv_s *bthci_from_drv(FAR struct bt_driver_s *drv) +{ + if (drv != &g_bthci_dev.drv) + { + wlerr("invalid drv:%p expect:%p", drv, &g_bthci_dev.drv); + return NULL; + } + + return &g_bthci_dev; +} + /**************************************************************************** * Private Function Prototypes ****************************************************************************/ @@ -148,6 +159,19 @@ static void bthci_poll_cb(FAR struct rtk_bt_priv_s *dev, void *userdata) FAR uint8_t *pstart; FAR uint8_t *pend; + if (dev->filep_uart.f_inode == NULL) + { + wlerr("%s: uart file closed", __func__); + return; + } + + if (dev->rxlen >= sizeof(dev->rxbuf)) + { + wlerr("%s: rxlen overflow:%u", __func__, dev->rxlen); + dev->rxlen = 0; + return; + } + do { ret = file_read(&dev->filep_uart, &dev->rxbuf[dev->rxlen], @@ -239,7 +263,12 @@ static int btuart_rx_task(int argc, FAR char **argv) static int bthci_open(FAR struct bt_driver_s *drv) { - FAR struct rtk_bt_priv_s *dev = (struct rtk_bt_priv_s *)drv; + FAR struct rtk_bt_priv_s *dev = bthci_from_drv(drv); + + if (dev == NULL) + { + return -EINVAL; + } wlinfo("%s, id:%d", __func__, dev->id); return OK; @@ -248,9 +277,20 @@ static int bthci_open(FAR struct bt_driver_s *drv) static int bthci_send(FAR struct bt_driver_s *drv, enum bt_buf_type_e type, FAR void *data, size_t len) { - FAR struct rtk_bt_priv_s *dev = (struct rtk_bt_priv_s *)drv; + FAR struct rtk_bt_priv_s *dev = bthci_from_drv(drv); int ret; + if (dev == NULL) + { + return -EINVAL; + } + + if (dev->filep_uart.f_inode == NULL) + { + wlerr("%s: uart file closed, state:%u", __func__, dev->state); + return -ENODEV; + } + bt_dump("bthci tx", data, len); do @@ -274,6 +314,11 @@ static int bthci_ioctl(FAR struct bt_driver_s *driver, int cmd, unsigned long ar static void bthci_close(struct bt_driver_s *drv) { + if (bthci_from_drv(drv) == NULL) + { + return; + } + wlinfo("%s", __func__); } diff --git a/chips/r528/r528_boot.c b/chips/r528/r528_boot.c index 1cc1fe245cfa95a1b27f4389b62476084377bc15..5fc5de0a7c80ae2e4912117d6e3172c9eabd79d7 100755 --- a/chips/r528/r528_boot.c +++ b/chips/r528/r528_boot.c @@ -41,7 +41,20 @@ #include #include #include -#include +#if defined(__has_include) +# if __has_include() +# include +# define R528_USE_MODLIB 1 +# elif __has_include() +# include +# define R528_USE_LIBELF 1 +# else +# error "Neither nor is available" +# endif +#else +# include +# define R528_USE_MODLIB 1 +#endif #ifdef CONFIG_VIDEO_FB #include #endif @@ -155,6 +168,25 @@ int r528_read_resetflag(void); extern uint32_t _vector_start; /* Beginning of vector block */ extern uint32_t _vector_end; /* End+1 of vector block */ +static int r528_module_initialize(FAR const char *path, + FAR struct mod_loadinfo_s *loadinfo) +{ +#ifdef R528_USE_MODLIB + return modlib_initialize(path, loadinfo); +#else + return libelf_initialize(path, loadinfo); +#endif +} + +static int r528_module_load(FAR struct mod_loadinfo_s *loadinfo) +{ +#ifdef R528_USE_MODLIB + return modlib_load(loadinfo); +#else + return libelf_load(loadinfo); +#endif +} + /**************************************************************************** * Private Data ****************************************************************************/ @@ -984,7 +1016,7 @@ int board_boot_image(const char *path, uint32_t hdr_size) #ifdef CONFIG_ARCH_TRUSTZONE_SECURE up_irq_enable(); #endif - uint32_t ret; + int ret; struct mod_loadinfo_s loadinfo; @@ -993,20 +1025,20 @@ int board_boot_image(const char *path, uint32_t hdr_size) /* Initialize the ELF library to load the program binary. */ syslog(LOG_INFO, "elf_init...\n"); - ret = modlib_initialize(path, &loadinfo); + ret = r528_module_initialize(path, &loadinfo); if (ret != 0) { - syslog(LOG_ERR, "Failed to modlib_initialize: %ld\n", ret); + syslog(LOG_ERR, "Failed to initialize module image: %d\n", ret); syslog_flush(); return -1; } /* Load the program binary */ syslog(LOG_INFO, "elf_load...\n"); - ret = modlib_load(&loadinfo); + ret = r528_module_load(&loadinfo); if (ret != 0) { - syslog(LOG_ERR, "Failed to modlib_load: %ld\n", ret); + syslog(LOG_ERR, "Failed to load module image: %d\n", ret); syslog_flush(); }