From a64f36f1981e6ed6f53802123f790e89359559e7 Mon Sep 17 00:00:00 2001 From: Huaqi Fang <578567190@qq.com> Date: Wed, 2 Sep 2020 11:10:54 +0800 Subject: [PATCH] bsp/nuclei: Fix issues mentioned in PR #3868 Signed-off-by: Huaqi Fang <578567190@qq.com> --- bsp/nuclei/hbird_eval/README.md | 50 ++++++----- bsp/nuclei/hbird_eval/SConscript | 2 - bsp/nuclei/hbird_eval/applications/main.c | 86 ++----------------- .../libraries/hbird/HAL_Drivers/drv_uart.c | 2 +- 4 files changed, 32 insertions(+), 108 deletions(-) diff --git a/bsp/nuclei/hbird_eval/README.md b/bsp/nuclei/hbird_eval/README.md index c4210cac8e..6664ed5a32 100644 --- a/bsp/nuclei/hbird_eval/README.md +++ b/bsp/nuclei/hbird_eval/README.md @@ -94,16 +94,16 @@ Nuclei OpenOCD, i386 Open On-Chip Debugger 0.10.0+dev-g11f0cf429 (2020-07-15-04: Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html -rt_thread_idle_entry (parameter=) at D:\workspace\Sourcecode\rt-thread\src\idle.c:249 -249 for (i = 0; i < RT_IDLE_HOOK_LIST_SIZE; i++) +rt_list_insert_before (n=0xdeadbeef, l=0x90000f80 ) at D:\workspace\Sourcecode\rt-thread\include/rtservice.h:79 +79 n->next = l; cleared protection for sectors 0 through 63 on flash bank 0 Loading section .init, size 0x284 lma 0x80000000 -Loading section .text, size 0xb57e lma 0x800002c0 -Loading section .rodata, size 0x3248 lma 0x8000b840 -Loading section .data, size 0x350 lma 0x8000ea88 -Start address 0x80000198, load size 60826 -Transfer rate: 49 KB/sec, 10137 bytes/write. +Loading section .text, size 0xb30a lma 0x800002c0 +Loading section .rodata, size 0x3248 lma 0x8000b5d0 +Loading section .data, size 0x340 lma 0x8000e818 +Start address 0x80000198, load size 60182 +Transfer rate: 48 KB/sec, 10030 bytes/write. shutdown command invoked A debugging session is active. @@ -140,12 +140,10 @@ msh /> msh />ps thread pri status sp stack size max used left tick error -------- --- ------- ---------- ---------- ------ ---------- --- -thread01 19 suspend 0x00000158 0x0000018c 87% 0x00000005 000 -thread00 19 suspend 0x00000158 0x0000018c 87% 0x00000005 000 -tshell 20 running 0x00000258 0x00001000 18% 0x00000004 000 -tidle0 31 ready 0x000000a8 0x0000018c 59% 0x0000000e 000 -timer 4 suspend 0x000000f8 0x00000200 49% 0x00000009 000 -main 10 suspend 0x00000168 0x00000800 36% 0x00000006 000 +serrxsim 5 suspend 0x00000134 0x0000018c 77% 0x00000005 000 +tshell 20 running 0x000002b0 0x00001000 17% 0x00000005 000 +tidle0 31 ready 0x00000164 0x0000018c 89% 0x0000000b 000 +timer 4 suspend 0x00000120 0x00000200 56% 0x00000009 000 msh /> ~~~ @@ -182,26 +180,26 @@ Nuclei OpenOCD, i386 Open On-Chip Debugger 0.10.0+dev-g11f0cf429 (2020-07-15-04: Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html -0x0000000080000f14 in _has_defunct_thread () at D:\workspace\Sourcecode\rt-thread\src\idle.c:153 -153 while (_has_defunct_thread()) +0x0000000080000e80 in rt_thread_idle_entry (parameter=) + at D:\workspace\Sourcecode\rt-thread\src\idle.c:253 +253 idle_hook_list[i](); (gdb) load Loading section .init, size 0x284 lma 0x80000000 -Loading section .text, size 0xb57e lma 0x800002c0 -Loading section .rodata, size 0x3248 lma 0x8000b840 -Loading section .data, size 0x350 lma 0x8000ea88 -Start address 0x80000198, load size 60826 -Transfer rate: 48 KB/sec, 10137 bytes/write. +Loading section .text, size 0xb30a lma 0x800002c0 +Loading section .rodata, size 0x3248 lma 0x8000b5d0 +Loading section .data, size 0x340 lma 0x8000e818 +Start address 0x80000198, load size 60182 +Transfer rate: 49 KB/sec, 10030 bytes/write. (gdb) b main -Breakpoint 1 at 0x800002c0: file applications\main.c, line 95. +Breakpoint 1 at 0x800002c0: file applications\main.c, line 35. (gdb) c Continuing. -Breakpoint 1, main () at applications\main.c:95 -95 board_gpio_init(); +Breakpoint 1, main () at applications\main.c:35 +35 board_serial_init(); (gdb) n -96 create_thread_demo(); -(gdb) n -99 board_serial_init(); +rt_thread_exit () at D:\workspace\Sourcecode\rt-thread\src\thread.c:277 +277 return rt_current_thread; (gdb) c Continuing. ~~~ diff --git a/bsp/nuclei/hbird_eval/SConscript b/bsp/nuclei/hbird_eval/SConscript index 014c428d0a..20f7689c53 100644 --- a/bsp/nuclei/hbird_eval/SConscript +++ b/bsp/nuclei/hbird_eval/SConscript @@ -7,8 +7,6 @@ cwd = GetCurrentDir() objs = [] list = os.listdir(cwd) -ASFLAGS = ' -I' + cwd - for d in list: path = os.path.join(cwd, d) if os.path.isfile(os.path.join(path, 'SConscript')): diff --git a/bsp/nuclei/hbird_eval/applications/main.c b/bsp/nuclei/hbird_eval/applications/main.c index 0fe26c049b..be57f97b1e 100644 --- a/bsp/nuclei/hbird_eval/applications/main.c +++ b/bsp/nuclei/hbird_eval/applications/main.c @@ -5,84 +5,25 @@ * * Change Logs: * Date Author Notes - * 2019-07-23 tyustli first version + * 2020-09-02 hqfang first version */ #include #include #include -#define THREAD_PRIORITY 19 -#define THREAD_STACK_SIZE 396 -#define THREAD_TIMESLICE 5 -#define THREAD_NUM 2 -// #define APP_DEBUG_PRINT - -/* Align stack when using static thread */ -ALIGN(RT_ALIGN_SIZE) -static rt_uint8_t thread_stack[THREAD_NUM][THREAD_STACK_SIZE]; -static struct rt_thread tid[THREAD_NUM]; - -/* Thread entry function */ -static void thread_entry(void *parameter) -{ - rt_uint32_t count = 0; - - while (1) { -#ifdef APP_DEBUG_PRINT - rt_kprintf("thread %d count: %d\n", (rt_uint32_t)parameter, count++); -#endif - rt_thread_mdelay(500); - if (((uint32_t)parameter) % 2) { - gpio_toggle(GPIO, SOC_LED_BLUE_GPIO_MASK); - } else { - gpio_toggle(GPIO, SOC_LED_GREEN_GPIO_MASK); - } - } -} - -/* Thread demo */ -int create_thread_demo(void) -{ - int i; - static char tname[9] = "thread"; - - for (i = 0; i < THREAD_NUM; i ++) { - /* Create static threads */ - tname[6] = i/10 + '0'; - tname[7] = i%10 + '0'; - tname[8] = '\0'; - rt_thread_init(&tid[i], tname, thread_entry, (void *)i, thread_stack[i], - THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); - } - - /* Startup threads */ - for (i = 0; i < THREAD_NUM; i ++) { - rt_thread_startup(&tid[i]); - } - - return 0; -} - -void board_gpio_init(void) -{ - gpio_enable_input(GPIO, SOC_BUTTON_GPIO_MASK); - gpio_set_pue(GPIO, SOC_BUTTON_GPIO_MASK, GPIO_BIT_ALL_ONE); - - gpio_enable_output(GPIO, SOC_LED_GPIO_MASK); - gpio_write(GPIO, SOC_LED_GPIO_MASK, GPIO_BIT_ALL_ZERO); -} - #ifdef RT_USING_SERIAL - -#define SERIAL_THREAD_STACK_SIZE 396 +/* Currently UART IRQ is not connected, + * So I use task to interact with uart input + */ +#define SERIAL_THREAD_STACK_SIZE 396 static rt_uint8_t serial_stack[SERIAL_THREAD_STACK_SIZE]; static struct rt_thread serial_tid; -extern void rt_hw_serial_thread_entry(void *parameter); +extern void rt_hw_serial_rcvtsk(void *parameter); void board_serial_init(void) { - rt_thread_init(&serial_tid, "serrxsim", rt_hw_serial_thread_entry, + rt_thread_init(&serial_tid, "serrxsim", rt_hw_serial_rcvtsk, (void *)NULL, serial_stack, SERIAL_THREAD_STACK_SIZE, 5, 5); rt_thread_startup(&serial_tid); } @@ -90,22 +31,9 @@ void board_serial_init(void) int main(void) { - rt_uint32_t count = 0; - - board_gpio_init(); - create_thread_demo(); - #ifdef RT_USING_SERIAL board_serial_init(); #endif /* RT_USING_SERIAL */ - - while (1) { -#ifdef APP_DEBUG_PRINT - rt_kprintf("Main thread count: %d\n", count++); -#endif - rt_thread_mdelay(1000); - gpio_toggle(GPIO, SOC_LED_RED_GPIO_MASK); - } } /******************** end of file *******************/ diff --git a/bsp/nuclei/libraries/hbird/HAL_Drivers/drv_uart.c b/bsp/nuclei/libraries/hbird/HAL_Drivers/drv_uart.c index ea01d03c9b..038ed0f0e9 100644 --- a/bsp/nuclei/libraries/hbird/HAL_Drivers/drv_uart.c +++ b/bsp/nuclei/libraries/hbird/HAL_Drivers/drv_uart.c @@ -219,7 +219,7 @@ int rt_hw_uart_init(void) return result; } -void rt_hw_serial_thread_entry(void *parameter) +void rt_hw_serial_rcvtsk(void *parameter) { struct hbird_uart_config *uart_cfg; -- GitLab