diff --git a/bsp/maxim/MAX32660_EVSYS/rtconfig.py b/bsp/maxim/MAX32660_EVSYS/rtconfig.py index 97130e34f58787ace3529601e702e32e5777bc3b..70faf43ff9f233caf26271b428a779f498a11dd1 100644 --- a/bsp/maxim/MAX32660_EVSYS/rtconfig.py +++ b/bsp/maxim/MAX32660_EVSYS/rtconfig.py @@ -133,3 +133,11 @@ elif PLATFORM == 'iar': EXEC_PATH = EXEC_PATH + '/arm/bin/' POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' + + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) \ No newline at end of file diff --git a/bsp/maxim/tools/sdk_dist.py b/bsp/maxim/tools/sdk_dist.py new file mode 100644 index 0000000000000000000000000000000000000000..2bc57c6b954c025a6238884d24daefcc535d1b0e --- /dev/null +++ b/bsp/maxim/tools/sdk_dist.py @@ -0,0 +1,21 @@ +import os +import sys +import shutil + +cwd_path = os.getcwd() +sys.path.append(os.path.join(os.path.dirname(cwd_path), 'rt-thread', 'tools')) + + +# BSP dist function +def dist_do_building(BSP_ROOT, dist_dir): + from mkdist import bsp_copy_files + import rtconfig + + print("=> copy maxim bsp library") + library_dir = os.path.join(dist_dir, 'libraries') + library_path = os.path.join(os.path.dirname(BSP_ROOT), 'libraries') + + print("=> copy bsp drivers") + bsp_copy_files(os.path.join(library_path, 'HAL_Drivers'), os.path.join(library_dir, 'HAL_Drivers')) + bsp_copy_files(os.path.join(library_path, 'MAX32660PeriphDriver'), os.path.join(library_dir, 'MAX32660PeriphDriver')) + \ No newline at end of file diff --git a/bsp/smartfusion2/project.uvopt b/bsp/smartfusion2/project.uvopt index 99ce043dfead821fe44cc52ff12f187ae3695142..51eba0e604d5e5e13d090bf23c5985710008d641 100644 --- a/bsp/smartfusion2/project.uvopt +++ b/bsp/smartfusion2/project.uvopt @@ -110,10 +110,10 @@ 1 0 1 - 1 + 0 1 1 - 0 + 1 0 0 6 @@ -177,7 +177,7 @@ - Kernel + Applications 0 0 0 @@ -193,8 +193,8 @@ 0 0 0 - ..\..\src\clock.c - clock.c + applications\main.c + main.c 0 0 @@ -209,8 +209,8 @@ 0 0 0 - ..\..\src\components.c - components.c + board\board.c + board.c 0 0 @@ -225,13 +225,21 @@ 0 0 0 - ..\..\src\device.c - device.c + board\config.c + config.c 0 0 + + + + CMSIS + 0 + 0 + 0 + 0 - 1 + 2 4 1 0 @@ -241,13 +249,13 @@ 0 0 0 - ..\..\src\idle.c - idle.c + CMSIS\core_cm3.c + core_cm3.c 0 0 - 1 + 2 5 1 0 @@ -257,15 +265,15 @@ 0 0 0 - ..\..\src\ipc.c - ipc.c + CMSIS\system_m2sxxx.c + system_m2sxxx.c 0 0 - 1 + 2 6 - 1 + 2 0 0 0 @@ -273,13 +281,21 @@ 0 0 0 - ..\..\src\irq.c - irq.c + CMSIS\startup_arm\startup_m2sxxx.s + startup_m2sxxx.s 0 0 + + + + CPU + 0 + 0 + 0 + 0 - 1 + 3 7 1 0 @@ -289,13 +305,13 @@ 0 0 0 - ..\..\src\kservice.c - kservice.c + ..\..\libcpu\arm\common\backtrace.c + backtrace.c 0 0 - 1 + 3 8 1 0 @@ -305,13 +321,13 @@ 0 0 0 - ..\..\src\mem.c - mem.c + ..\..\libcpu\arm\common\div0.c + div0.c 0 0 - 1 + 3 9 1 0 @@ -321,13 +337,13 @@ 0 0 0 - ..\..\src\mempool.c - mempool.c + ..\..\libcpu\arm\common\showmem.c + showmem.c 0 0 - 1 + 3 10 1 0 @@ -337,15 +353,15 @@ 0 0 0 - ..\..\src\object.c - object.c + ..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c 0 0 - 1 + 3 11 - 1 + 2 0 0 0 @@ -353,13 +369,21 @@ 0 0 0 - ..\..\src\scheduler.c - scheduler.c + ..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S 0 0 + + + + DeviceDrivers + 0 + 0 + 0 + 0 - 1 + 4 12 1 0 @@ -369,13 +393,13 @@ 0 0 0 - ..\..\src\signal.c - signal.c + ..\..\components\drivers\misc\pin.c + pin.c 0 0 - 1 + 4 13 1 0 @@ -385,13 +409,13 @@ 0 0 0 - ..\..\src\thread.c - thread.c + ..\..\components\drivers\serial\serial.c + serial.c 0 0 - 1 + 4 14 1 0 @@ -401,37 +425,29 @@ 0 0 0 - ..\..\src\timer.c - timer.c + ..\..\components\drivers\src\completion.c + completion.c 0 0 - - - - Applications - 1 - 0 - 0 - 0 - 2 + 4 15 1 0 0 - 14 + 0 0 - 1 - 16 + 0 + 0 0 - applications\main.c - main.c + ..\..\components\drivers\src\dataqueue.c + dataqueue.c 0 0 - 2 + 4 16 1 0 @@ -441,13 +457,13 @@ 0 0 0 - board\board.c - board.c + ..\..\components\drivers\src\pipe.c + pipe.c 0 0 - 2 + 4 17 1 0 @@ -457,21 +473,13 @@ 0 0 0 - board\config.c - config.c + ..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c 0 0 - - - - CMSIS - 0 - 0 - 0 - 0 - 3 + 4 18 1 0 @@ -481,13 +489,13 @@ 0 0 0 - CMSIS\core_cm3.c - core_cm3.c + ..\..\components\drivers\src\ringbuffer.c + ringbuffer.c 0 0 - 3 + 4 19 1 0 @@ -497,15 +505,15 @@ 0 0 0 - CMSIS\system_m2sxxx.c - system_m2sxxx.c + ..\..\components\drivers\src\waitqueue.c + waitqueue.c 0 0 - 3 + 4 20 - 2 + 1 0 0 0 @@ -513,8 +521,8 @@ 0 0 0 - CMSIS\startup_arm\startup_m2sxxx.s - startup_m2sxxx.s + ..\..\components\drivers\src\workqueue.c + workqueue.c 0 0 @@ -522,12 +530,12 @@ Drivers - 1 + 0 0 0 0 - 4 + 5 21 1 0 @@ -543,7 +551,7 @@ 0 - 4 + 5 22 1 0 @@ -561,13 +569,13 @@ - Libraries - 1 + finsh + 0 0 0 0 - 5 + 6 23 1 0 @@ -577,13 +585,13 @@ 0 0 0 - libraries\sys_config\sys_config.c - sys_config.c + ..\..\components\finsh\shell.c + shell.c 0 0 - 5 + 6 24 1 0 @@ -593,13 +601,13 @@ 0 0 0 - libraries\mss_gpio\mss_gpio.c - mss_gpio.c + ..\..\components\finsh\cmd.c + cmd.c 0 0 - 5 + 6 25 1 0 @@ -609,21 +617,21 @@ 0 0 0 - libraries\mss_uart\mss_uart.c - mss_uart.c + ..\..\components\finsh\msh.c + msh.c 0 0 - cpu + Kernel 0 0 0 0 - 6 + 7 26 1 0 @@ -633,13 +641,13 @@ 0 0 0 - ..\..\libcpu\arm\common\backtrace.c - backtrace.c + ..\..\src\clock.c + clock.c 0 0 - 6 + 7 27 1 0 @@ -649,13 +657,13 @@ 0 0 0 - ..\..\libcpu\arm\common\div0.c - div0.c + ..\..\src\components.c + components.c 0 0 - 6 + 7 28 1 0 @@ -665,13 +673,13 @@ 0 0 0 - ..\..\libcpu\arm\common\showmem.c - showmem.c + ..\..\src\device.c + device.c 0 0 - 6 + 7 29 1 0 @@ -681,15 +689,15 @@ 0 0 0 - ..\..\libcpu\arm\cortex-m3\cpuport.c - cpuport.c + ..\..\src\idle.c + idle.c 0 0 - 6 + 7 30 - 2 + 1 0 0 0 @@ -697,19 +705,11 @@ 0 0 0 - ..\..\libcpu\arm\cortex-m3\context_rvds.S - context_rvds.S + ..\..\src\ipc.c + ipc.c 0 0 - - - - DeviceDrivers - 0 - 0 - 0 - 0 7 31 @@ -721,8 +721,8 @@ 0 0 0 - ..\..\components\drivers\misc\pin.c - pin.c + ..\..\src\irq.c + irq.c 0 0 @@ -737,8 +737,8 @@ 0 0 0 - ..\..\components\drivers\serial\serial.c - serial.c + ..\..\src\kservice.c + kservice.c 0 0 @@ -753,8 +753,8 @@ 0 0 0 - ..\..\components\drivers\src\completion.c - completion.c + ..\..\src\mem.c + mem.c 0 0 @@ -769,8 +769,8 @@ 0 0 0 - ..\..\components\drivers\src\dataqueue.c - dataqueue.c + ..\..\src\mempool.c + mempool.c 0 0 @@ -785,8 +785,8 @@ 0 0 0 - ..\..\components\drivers\src\pipe.c - pipe.c + ..\..\src\object.c + object.c 0 0 @@ -801,8 +801,8 @@ 0 0 0 - ..\..\components\drivers\src\ringblk_buf.c - ringblk_buf.c + ..\..\src\scheduler.c + scheduler.c 0 0 @@ -817,8 +817,8 @@ 0 0 0 - ..\..\components\drivers\src\ringbuffer.c - ringbuffer.c + ..\..\src\thread.c + thread.c 0 0 @@ -833,13 +833,21 @@ 0 0 0 - ..\..\components\drivers\src\waitqueue.c - waitqueue.c + ..\..\src\timer.c + timer.c 0 0 + + + + libc + 0 + 0 + 0 + 0 - 7 + 8 39 1 0 @@ -849,19 +857,11 @@ 0 0 0 - ..\..\components\drivers\src\workqueue.c - workqueue.c + ..\..\components\libc\compilers\armlibc\libc.c + libc.c 0 0 - - - - finsh - 0 - 0 - 0 - 0 8 40 @@ -873,8 +873,8 @@ 0 0 0 - ..\..\components\finsh\shell.c - shell.c + ..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c 0 0 @@ -889,8 +889,8 @@ 0 0 0 - ..\..\components\finsh\cmd.c - cmd.c + ..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c 0 0 @@ -905,21 +905,13 @@ 0 0 0 - ..\..\components\finsh\msh.c - msh.c + ..\..\components\libc\compilers\common\stdlib.c + stdlib.c 0 0 - - - - libc - 0 - 0 - 0 - 0 - 9 + 8 43 1 0 @@ -929,11 +921,19 @@ 0 0 0 - ..\..\components\libc\compilers\armlibc\libc.c - libc.c + ..\..\components\libc\compilers\common\time.c + time.c 0 0 + + + + Libraries + 0 + 0 + 0 + 0 9 44 @@ -945,8 +945,8 @@ 0 0 0 - ..\..\components\libc\compilers\armlibc\mem_std.c - mem_std.c + libraries\sys_config\sys_config.c + sys_config.c 0 0 @@ -961,8 +961,8 @@ 0 0 0 - ..\..\components\libc\compilers\armlibc\stubs.c - stubs.c + libraries\mss_gpio\mss_gpio.c + mss_gpio.c 0 0 @@ -977,8 +977,8 @@ 0 0 0 - ..\..\components\libc\compilers\common\time.c - time.c + libraries\mss_uart\mss_uart.c + mss_uart.c 0 0 diff --git a/bsp/smartfusion2/project.uvoptx b/bsp/smartfusion2/project.uvoptx index a83e5093d3b60c196881cec354659498bea2ade2..57f994ae2b44755dc58a68d05aa16780fea84ce1 100644 --- a/bsp/smartfusion2/project.uvoptx +++ b/bsp/smartfusion2/project.uvoptx @@ -175,7 +175,7 @@ - Kernel + Applications 0 0 0 @@ -187,8 +187,8 @@ 0 0 0 - ..\..\src\clock.c - clock.c + applications\main.c + main.c 0 0 @@ -199,8 +199,8 @@ 0 0 0 - ..\..\src\components.c - components.c + board\board.c + board.c 0 0 @@ -211,228 +211,236 @@ 0 0 0 - ..\..\src\device.c - device.c + board\config.c + config.c 0 0 + + + + CMSIS + 0 + 0 + 0 + 0 - 1 + 2 4 1 0 0 0 - ..\..\src\idle.c - idle.c + CMSIS\core_cm3.c + core_cm3.c 0 0 - 1 + 2 5 1 0 0 0 - ..\..\src\ipc.c - ipc.c + CMSIS\system_m2sxxx.c + system_m2sxxx.c 0 0 - 1 + 2 6 - 1 + 2 0 0 0 - ..\..\src\irq.c - irq.c + CMSIS\startup_arm\startup_m2sxxx.s + startup_m2sxxx.s 0 0 + + + + CPU + 0 + 0 + 0 + 0 - 1 + 3 7 1 0 0 0 - ..\..\src\kservice.c - kservice.c + ..\..\libcpu\arm\common\backtrace.c + backtrace.c 0 0 - 1 + 3 8 1 0 0 0 - ..\..\src\mem.c - mem.c + ..\..\libcpu\arm\common\div0.c + div0.c 0 0 - 1 + 3 9 1 0 0 0 - ..\..\src\mempool.c - mempool.c + ..\..\libcpu\arm\common\showmem.c + showmem.c 0 0 - 1 + 3 10 1 0 0 0 - ..\..\src\object.c - object.c + ..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c 0 0 - 1 + 3 11 - 1 + 2 0 0 0 - ..\..\src\scheduler.c - scheduler.c + ..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S 0 0 + + + + DeviceDrivers + 0 + 0 + 0 + 0 - 1 + 4 12 1 0 0 0 - ..\..\src\signal.c - signal.c + ..\..\components\drivers\misc\pin.c + pin.c 0 0 - 1 + 4 13 1 0 0 0 - ..\..\src\thread.c - thread.c + ..\..\components\drivers\serial\serial.c + serial.c 0 0 - 1 + 4 14 1 0 0 0 - ..\..\src\timer.c - timer.c + ..\..\components\drivers\src\completion.c + completion.c 0 0 - - - - Applications - 1 - 0 - 0 - 0 - 2 + 4 15 1 0 0 0 - applications\main.c - main.c + ..\..\components\drivers\src\dataqueue.c + dataqueue.c 0 0 - 2 + 4 16 1 0 0 0 - board\board.c - board.c + ..\..\components\drivers\src\pipe.c + pipe.c 0 0 - 2 + 4 17 1 0 0 0 - board\config.c - config.c + ..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c 0 0 - - - - CMSIS - 0 - 0 - 0 - 0 - 3 + 4 18 1 0 0 0 - CMSIS\core_cm3.c - core_cm3.c + ..\..\components\drivers\src\ringbuffer.c + ringbuffer.c 0 0 - 3 + 4 19 1 0 0 0 - CMSIS\system_m2sxxx.c - system_m2sxxx.c + ..\..\components\drivers\src\waitqueue.c + waitqueue.c 0 0 - 3 + 4 20 - 2 + 1 0 0 0 - CMSIS\startup_arm\startup_m2sxxx.s - startup_m2sxxx.s + ..\..\components\drivers\src\workqueue.c + workqueue.c 0 0 @@ -440,12 +448,12 @@ Drivers - 1 + 0 0 0 0 - 4 + 5 21 1 0 @@ -457,7 +465,7 @@ 0 - 4 + 5 22 1 0 @@ -471,123 +479,115 @@ - Libraries - 1 + finsh + 0 0 0 0 - 5 + 6 23 1 0 0 0 - libraries\sys_config\sys_config.c - sys_config.c + ..\..\components\finsh\shell.c + shell.c 0 0 - 5 + 6 24 1 0 0 0 - libraries\mss_gpio\mss_gpio.c - mss_gpio.c + ..\..\components\finsh\cmd.c + cmd.c 0 0 - 5 + 6 25 1 0 0 0 - libraries\mss_uart\mss_uart.c - mss_uart.c + ..\..\components\finsh\msh.c + msh.c 0 0 - cpu + Kernel 0 0 0 0 - 6 + 7 26 1 0 0 0 - ..\..\libcpu\arm\common\backtrace.c - backtrace.c + ..\..\src\clock.c + clock.c 0 0 - 6 + 7 27 1 0 0 0 - ..\..\libcpu\arm\common\div0.c - div0.c + ..\..\src\components.c + components.c 0 0 - 6 + 7 28 1 0 0 0 - ..\..\libcpu\arm\common\showmem.c - showmem.c + ..\..\src\device.c + device.c 0 0 - 6 + 7 29 1 0 0 0 - ..\..\libcpu\arm\cortex-m3\cpuport.c - cpuport.c + ..\..\src\idle.c + idle.c 0 0 - 6 + 7 30 - 2 + 1 0 0 0 - ..\..\libcpu\arm\cortex-m3\context_rvds.S - context_rvds.S + ..\..\src\ipc.c + ipc.c 0 0 - - - - DeviceDrivers - 0 - 0 - 0 - 0 7 31 @@ -595,8 +595,8 @@ 0 0 0 - ..\..\components\drivers\misc\pin.c - pin.c + ..\..\src\irq.c + irq.c 0 0 @@ -607,8 +607,8 @@ 0 0 0 - ..\..\components\drivers\serial\serial.c - serial.c + ..\..\src\kservice.c + kservice.c 0 0 @@ -619,8 +619,8 @@ 0 0 0 - ..\..\components\drivers\src\completion.c - completion.c + ..\..\src\mem.c + mem.c 0 0 @@ -631,8 +631,8 @@ 0 0 0 - ..\..\components\drivers\src\dataqueue.c - dataqueue.c + ..\..\src\mempool.c + mempool.c 0 0 @@ -643,8 +643,8 @@ 0 0 0 - ..\..\components\drivers\src\pipe.c - pipe.c + ..\..\src\object.c + object.c 0 0 @@ -655,8 +655,8 @@ 0 0 0 - ..\..\components\drivers\src\ringblk_buf.c - ringblk_buf.c + ..\..\src\scheduler.c + scheduler.c 0 0 @@ -667,8 +667,8 @@ 0 0 0 - ..\..\components\drivers\src\ringbuffer.c - ringbuffer.c + ..\..\src\thread.c + thread.c 0 0 @@ -679,31 +679,31 @@ 0 0 0 - ..\..\components\drivers\src\waitqueue.c - waitqueue.c + ..\..\src\timer.c + timer.c 0 0 + + + + libc + 0 + 0 + 0 + 0 - 7 + 8 39 1 0 0 0 - ..\..\components\drivers\src\workqueue.c - workqueue.c + ..\..\components\libc\compilers\armlibc\libc.c + libc.c 0 0 - - - - finsh - 0 - 0 - 0 - 0 8 40 @@ -711,8 +711,8 @@ 0 0 0 - ..\..\components\finsh\shell.c - shell.c + ..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c 0 0 @@ -723,8 +723,8 @@ 0 0 0 - ..\..\components\finsh\cmd.c - cmd.c + ..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c 0 0 @@ -735,31 +735,31 @@ 0 0 0 - ..\..\components\finsh\msh.c - msh.c + ..\..\components\libc\compilers\common\stdlib.c + stdlib.c 0 0 - - - - libc - 0 - 0 - 0 - 0 - 9 + 8 43 1 0 0 0 - ..\..\components\libc\compilers\armlibc\libc.c - libc.c + ..\..\components\libc\compilers\common\time.c + time.c 0 0 + + + + Libraries + 0 + 0 + 0 + 0 9 44 @@ -767,8 +767,8 @@ 0 0 0 - ..\..\components\libc\compilers\armlibc\mem_std.c - mem_std.c + libraries\sys_config\sys_config.c + sys_config.c 0 0 @@ -779,8 +779,8 @@ 0 0 0 - ..\..\components\libc\compilers\armlibc\stubs.c - stubs.c + libraries\mss_gpio\mss_gpio.c + mss_gpio.c 0 0 @@ -791,8 +791,8 @@ 0 0 0 - ..\..\components\libc\compilers\common\time.c - time.c + libraries\mss_uart\mss_uart.c + mss_uart.c 0 0 diff --git a/bsp/smartfusion2/project.uvproj b/bsp/smartfusion2/project.uvproj index 34dc3659865857dcb400f8a9f46466e7a9a22a1d..2ee7c71eee0452f6edefbb2adacedbe2f07b72f7 100644 --- a/bsp/smartfusion2/project.uvproj +++ b/bsp/smartfusion2/project.uvproj @@ -139,9 +139,9 @@ 1 0 1 - 1 + 0 1 - 0 + 1 0 6 @@ -170,7 +170,7 @@ 0 -1 - 1 + 0 BIN\UL2CM3.DLL @@ -356,13 +356,13 @@ 0 0 0 - 0 + 1 0 - RT_USING_ARM_LIBC + RT_USING_ARM_LIBC, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND - .;..\..\include;applications;board;CMSIS;drivers;libraries\sys_config;libraries\mss_gpio;libraries\mss_uart;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common + applications;board;CMSIS;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;drivers;..\..\components\finsh;.;..\..\include;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;libraries\sys_config;libraries\mss_gpio;libraries\mss_uart @@ -402,81 +402,6 @@ - - Kernel - - - clock.c - 1 - ..\..\src\clock.c - - - components.c - 1 - ..\..\src\components.c - - - device.c - 1 - ..\..\src\device.c - - - idle.c - 1 - ..\..\src\idle.c - - - ipc.c - 1 - ..\..\src\ipc.c - - - irq.c - 1 - ..\..\src\irq.c - - - kservice.c - 1 - ..\..\src\kservice.c - - - mem.c - 1 - ..\..\src\mem.c - - - mempool.c - 1 - ..\..\src\mempool.c - - - object.c - 1 - ..\..\src\object.c - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - signal.c - 1 - ..\..\src\signal.c - - - thread.c - 1 - ..\..\src\thread.c - - - timer.c - 1 - ..\..\src\timer.c - - - Applications @@ -518,42 +443,7 @@ - Drivers - - - drv_uart.c - 1 - drivers\drv_uart.c - - - drv_gpio.c - 1 - drivers\drv_gpio.c - - - - - Libraries - - - sys_config.c - 1 - libraries\sys_config\sys_config.c - - - mss_gpio.c - 1 - libraries\mss_gpio\mss_gpio.c - - - mss_uart.c - 1 - libraries\mss_uart\mss_uart.c - - - - - cpu + CPU backtrace.c @@ -632,6 +522,21 @@ + + Drivers + + + drv_uart.c + 1 + drivers\drv_uart.c + + + drv_gpio.c + 1 + drivers\drv_gpio.c + + + finsh @@ -652,6 +557,76 @@ + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + components.c + 1 + ..\..\src\components.c + + + device.c + 1 + ..\..\src\device.c + + + idle.c + 1 + ..\..\src\idle.c + + + ipc.c + 1 + ..\..\src\ipc.c + + + irq.c + 1 + ..\..\src\irq.c + + + kservice.c + 1 + ..\..\src\kservice.c + + + mem.c + 1 + ..\..\src\mem.c + + + mempool.c + 1 + ..\..\src\mempool.c + + + object.c + 1 + ..\..\src\object.c + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + thread.c + 1 + ..\..\src\thread.c + + + timer.c + 1 + ..\..\src\timer.c + + + libc @@ -666,9 +641,14 @@ ..\..\components\libc\compilers\armlibc\mem_std.c - stubs.c + syscalls.c + 1 + ..\..\components\libc\compilers\armlibc\syscalls.c + + + stdlib.c 1 - ..\..\components\libc\compilers\armlibc\stubs.c + ..\..\components\libc\compilers\common\stdlib.c time.c @@ -677,6 +657,26 @@ + + Libraries + + + sys_config.c + 1 + libraries\sys_config\sys_config.c + + + mss_gpio.c + 1 + libraries\mss_gpio\mss_gpio.c + + + mss_uart.c + 1 + libraries\mss_uart\mss_uart.c + + + diff --git a/bsp/smartfusion2/project.uvprojx b/bsp/smartfusion2/project.uvprojx index 16914df12de7502feba994633f59eef2d72bc0df..738524c6cbe0c3df987401494034c7de05f96bac 100644 --- a/bsp/smartfusion2/project.uvprojx +++ b/bsp/smartfusion2/project.uvprojx @@ -10,7 +10,7 @@ project 0x4 ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::.\ARMCC 0 @@ -185,6 +185,7 @@ 0 0 0 + 0 0 0 8 @@ -324,7 +325,7 @@ 2 0 0 - 0 + 1 0 0 1 @@ -336,9 +337,9 @@ 0 - RT_USING_ARM_LIBC + RT_USING_ARM_LIBC, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND - .;..\..\include;applications;board;CMSIS;drivers;libraries\sys_config;libraries\mss_gpio;libraries\mss_uart;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common + applications;board;CMSIS;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;drivers;..\..\components\finsh;.;..\..\include;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;libraries\sys_config;libraries\mss_gpio;libraries\mss_uart @@ -351,7 +352,7 @@ 0 0 0 - 0 + 4 @@ -379,81 +380,6 @@ - - Kernel - - - clock.c - 1 - ..\..\src\clock.c - - - components.c - 1 - ..\..\src\components.c - - - device.c - 1 - ..\..\src\device.c - - - idle.c - 1 - ..\..\src\idle.c - - - ipc.c - 1 - ..\..\src\ipc.c - - - irq.c - 1 - ..\..\src\irq.c - - - kservice.c - 1 - ..\..\src\kservice.c - - - mem.c - 1 - ..\..\src\mem.c - - - mempool.c - 1 - ..\..\src\mempool.c - - - object.c - 1 - ..\..\src\object.c - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - signal.c - 1 - ..\..\src\signal.c - - - thread.c - 1 - ..\..\src\thread.c - - - timer.c - 1 - ..\..\src\timer.c - - - Applications @@ -495,42 +421,7 @@ - Drivers - - - drv_uart.c - 1 - drivers\drv_uart.c - - - drv_gpio.c - 1 - drivers\drv_gpio.c - - - - - Libraries - - - sys_config.c - 1 - libraries\sys_config\sys_config.c - - - mss_gpio.c - 1 - libraries\mss_gpio\mss_gpio.c - - - mss_uart.c - 1 - libraries\mss_uart\mss_uart.c - - - - - cpu + CPU backtrace.c @@ -609,6 +500,21 @@ + + Drivers + + + drv_uart.c + 1 + drivers\drv_uart.c + + + drv_gpio.c + 1 + drivers\drv_gpio.c + + + finsh @@ -629,6 +535,76 @@ + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + components.c + 1 + ..\..\src\components.c + + + device.c + 1 + ..\..\src\device.c + + + idle.c + 1 + ..\..\src\idle.c + + + ipc.c + 1 + ..\..\src\ipc.c + + + irq.c + 1 + ..\..\src\irq.c + + + kservice.c + 1 + ..\..\src\kservice.c + + + mem.c + 1 + ..\..\src\mem.c + + + mempool.c + 1 + ..\..\src\mempool.c + + + object.c + 1 + ..\..\src\object.c + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + thread.c + 1 + ..\..\src\thread.c + + + timer.c + 1 + ..\..\src\timer.c + + + libc @@ -643,9 +619,14 @@ ..\..\components\libc\compilers\armlibc\mem_std.c - stubs.c + syscalls.c 1 - ..\..\components\libc\compilers\armlibc\stubs.c + ..\..\components\libc\compilers\armlibc\syscalls.c + + + stdlib.c + 1 + ..\..\components\libc\compilers\common\stdlib.c time.c @@ -654,6 +635,26 @@ + + Libraries + + + sys_config.c + 1 + libraries\sys_config\sys_config.c + + + mss_gpio.c + 1 + libraries\mss_gpio\mss_gpio.c + + + mss_uart.c + 1 + libraries\mss_uart\mss_uart.c + + + @@ -664,4 +665,19 @@ + + + + <Project Info> + + + + + + 0 + 1 + + + + diff --git a/bsp/smartfusion2/template.uvopt b/bsp/smartfusion2/template.uvopt index 70eae785e9888c3e9289adb57926a3d9ddb1884d..8735ccdd69fd820b84c4ae696de3fa6d96fe4887 100644 --- a/bsp/smartfusion2/template.uvopt +++ b/bsp/smartfusion2/template.uvopt @@ -110,10 +110,10 @@ 1 0 1 - 1 + 0 1 1 - 0 + 1 0 0 6 diff --git a/bsp/smartfusion2/template.uvproj b/bsp/smartfusion2/template.uvproj index 99fded24dc32f540d11e1f376e6de3c1ae574ddf..356db37361680f0cbff8b5ee9ba665e18fd8fc7a 100644 --- a/bsp/smartfusion2/template.uvproj +++ b/bsp/smartfusion2/template.uvproj @@ -139,9 +139,9 @@ 1 0 1 - 1 + 0 1 - 0 + 1 0 6 @@ -170,7 +170,7 @@ 0 -1 - 1 + 0 BIN\UL2CM3.DLL @@ -356,7 +356,7 @@ 0 0 0 - 0 + 1 0 diff --git a/bsp/smartfusion2/template.uvprojx b/bsp/smartfusion2/template.uvprojx index dbfd0815c27d7014df55a6de0b63a7c8e2163402..56ef79c76d2d9493b5a981292fd500e342997cf2 100644 --- a/bsp/smartfusion2/template.uvprojx +++ b/bsp/smartfusion2/template.uvprojx @@ -185,6 +185,7 @@ 0 0 0 + 0 0 0 8 @@ -324,7 +325,7 @@ 2 0 0 - 0 + 1 0 0 1 @@ -351,7 +352,7 @@ 0 0 0 - 0 + 4 @@ -392,4 +393,19 @@ + + + + <Project Info> + + + + + + 0 + 1 + + + + diff --git a/components/finsh/msh_file.c b/components/finsh/msh_file.c index 1368838b94c15ef897e79fce06d33b34ca928aae..aa182ff9b33b7e0dcf9bb82c9fc28688c854e509 100644 --- a/components/finsh/msh_file.c +++ b/components/finsh/msh_file.c @@ -101,7 +101,7 @@ int msh_exec_script(const char *cmd_line, int size) int length; line_buf = (char *) rt_malloc(RT_CONSOLEBUF_SIZE); - if (line_buf == RT_NULL) + if (line_buf == RT_NULL) { close(fd); return -RT_ENOMEM; @@ -295,7 +295,7 @@ static void directory_delete_for_msh(const char *pathname, char f, char v) if (dirent == RT_NULL) break; if (rt_strcmp(".", dirent->d_name) != 0 && - rt_strcmp("..", dirent->d_name) != 0) + rt_strcmp("..", dirent->d_name) != 0) { rt_sprintf(full_path, "%s/%s", pathname, dirent->d_name); if (dirent->d_type == DT_REG) @@ -347,13 +347,20 @@ int cmd_rm(int argc, char **argv) { switch (argv[1][n]) { - case 'f': f = 1; break; - case 'r': r = 1; break; - case 'v': v = 1; break; - case '-': break; - default: - rt_kprintf("Error: Bad option: %c\n", argv[1][n]); - return 0; + case 'f': + f = 1; + break; + case 'r': + r = 1; + break; + case 'v': + v = 1; + break; + case '-': + break; + default: + rt_kprintf("Error: Bad option: %c\n", argv[1][n]); + return 0; } } argc -= 1; @@ -363,7 +370,7 @@ int cmd_rm(int argc, char **argv) for (index = 1; index < argc; index ++) { struct stat s; - if (stat (argv[index], &s) == 0) + if (stat(argv[index], &s) == 0) { if (s.st_mode & S_IFDIR) { @@ -469,8 +476,81 @@ int cmd_mkfs(int argc, char **argv) } FINSH_FUNCTION_EXPORT_ALIAS(cmd_mkfs, __cmd_mkfs, format disk with file system); +extern struct dfs_filesystem filesystem_table[]; +int cmd_mount(int argc, char *argv[]) +{ + if (argc == 1) + { + struct dfs_filesystem *iter; + + /* display the mount history */ + rt_kprintf("filesystem device mountpoint\n"); + rt_kprintf("---------- ------ ----------\n"); + for (iter = &filesystem_table[0]; + iter < &filesystem_table[DFS_FILESYSTEMS_MAX]; iter++) + { + if ((iter != NULL) && (iter->path != NULL)) + { + rt_kprintf("%-10s %-6s %-s\n", + iter->ops->name, iter->dev_id->parent.name, iter->path); + } + } + return 0; + } + else if (argc == 4) + { + char *device = argv[1]; + char *path = argv[2]; + char *fstype = argv[3]; + + /* mount a filesystem to the specified directory */ + rt_kprintf("mount device %s(%s) onto %s ... ", device, fstype, path); + if (dfs_mount(device, path, fstype, 0, 0) == 0) + { + rt_kprintf("succeed!\n"); + return 0; + } + else + { + rt_kprintf("failed!\n"); + return -1; + } + } + else + { + rt_kprintf("Usage: mount .\n"); + return -1; + } +} +FINSH_FUNCTION_EXPORT_ALIAS(cmd_mount, __cmd_mount, mount ); + +/* unmount the filesystem from the specified mountpoint */ +int cmd_umount(int argc, char *argv[]) +{ + char *path = argv[1]; + + if (argc != 2) + { + rt_kprintf("Usage: unmount .\n"); + return -1; + } + + rt_kprintf("unmount %s ... ", path); + if (dfs_unmount(path) < 0) + { + rt_kprintf("failed!\n"); + return -1; + } + else + { + rt_kprintf("succeed!\n"); + return 0; + } +} +FINSH_FUNCTION_EXPORT_ALIAS(cmd_umount, __cmd_umount, Unmount device from file system); + extern int df(const char *path); -int cmd_df(int argc, char** argv) +int cmd_df(int argc, char **argv) { if (argc != 2) { @@ -492,7 +572,7 @@ int cmd_df(int argc, char** argv) } FINSH_FUNCTION_EXPORT_ALIAS(cmd_df, __cmd_df, disk free); -int cmd_echo(int argc, char** argv) +int cmd_echo(int argc, char **argv) { if (argc == 2) { @@ -505,7 +585,7 @@ int cmd_echo(int argc, char** argv) fd = open(argv[2], O_RDWR | O_APPEND | O_CREAT, 0); if (fd >= 0) { - write (fd, argv[1], strlen(argv[1])); + write(fd, argv[1], strlen(argv[1])); close(fd); } else diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index c2fbd6f3334c92f22fd822d0e153787e01dfcf39..ed72cc1f3f6b0c8c1a4394f0bfbda43e170c10c0 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -12,7 +12,6 @@ * 2021-02-08 Meco Man add settimeofday() stime() * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() * 2021-02-11 Meco Man fix bug #3183 - align days[] and months[] to 4 bytes - * add difftime() * 2021-02-12 Meco Man add errno * 2012-12-08 Bernard fix the issue of _timevalue.tv_usec initialization, * which found by Rob @@ -177,12 +176,6 @@ char* ctime(const time_t *tim_p) } RTM_EXPORT(ctime); -double difftime (time_t tim1, time_t tim2) -{ - return (double)(tim1 - tim2); -} -RTM_EXPORT(difftime); - /** * Returns the current time. * @@ -372,6 +365,10 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz) } RTM_EXPORT(settimeofday); +/* inherent in the toolchain */ +RTM_EXPORT(difftime); +RTM_EXPORT(strftime); + #ifdef RT_USING_POSIX static struct timeval _timevalue; static int clock_time_system_init() diff --git a/include/rtdef.h b/include/rtdef.h index 02566019492777ce3cd10190db86d5531950bcd7..44328b5447e3ccd92129720be14a4fdd04e583db 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -802,6 +802,9 @@ struct rt_memheap_item struct rt_memheap_item *next_free; /**< next free memheap item */ struct rt_memheap_item *prev_free; /**< prev free memheap item */ +#ifdef RT_USING_MEMTRACE + rt_uint8_t owner_thread_name[4]; /**< owner thread name */ +#endif }; /** diff --git a/src/memheap.c b/src/memheap.c index afa06fb9bf60280965089e170a0097e1815685e4..449e66e9757a62b17e996c9e7982449264bf201b 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -85,6 +85,10 @@ rt_err_t rt_memheap_init(struct rt_memheap *memheap, item->next_free = item; item->prev_free = item; +#ifdef RT_USING_MEMTRACE + rt_memset(item->owner_thread_name, ' ', sizeof(item->owner_thread_name)); +#endif + item->next = (struct rt_memheap_item *) ((rt_uint8_t *)item + memheap->available_size + RT_MEMHEAP_SIZE); item->prev = item->next; @@ -206,6 +210,10 @@ void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size) /* put the pool pointer into the new block. */ new_ptr->pool_ptr = heap; +#ifdef RT_USING_MEMTRACE + rt_memset(new_ptr->owner_thread_name, ' ', sizeof(new_ptr->owner_thread_name)); +#endif + /* break down the block list */ new_ptr->prev = header_ptr; new_ptr->next = header_ptr->next; @@ -257,6 +265,13 @@ void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size) /* Mark the allocated block as not available. */ header_ptr->magic |= RT_MEMHEAP_USED; +#ifdef RT_USING_MEMTRACE + if (rt_thread_self()) + rt_memcpy(header_ptr->owner_thread_name, rt_thread_self()->name, sizeof(header_ptr->owner_thread_name)); + else + rt_memcpy(header_ptr->owner_thread_name, "NONE", sizeof(header_ptr->owner_thread_name)); +#endif + /* release lock */ rt_sem_release(&(heap->lock)); @@ -381,6 +396,10 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) /* put the pool pointer into the new block. */ next_ptr->pool_ptr = heap; +#ifdef RT_USING_MEMTRACE + rt_memset(next_ptr->owner_thread_name, ' ', sizeof(next_ptr->owner_thread_name)); +#endif + next_ptr->prev = header_ptr; next_ptr->next = header_ptr->next; header_ptr->next->prev = next_ptr; @@ -445,6 +464,10 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) /* put the pool pointer into the new block. */ new_ptr->pool_ptr = heap; +#ifdef RT_USING_MEMTRACE + rt_memset(new_ptr->owner_thread_name, ' ', sizeof(new_ptr->owner_thread_name)); +#endif + /* break down the block list */ new_ptr->prev = header_ptr; new_ptr->next = header_ptr->next; @@ -590,6 +613,10 @@ void rt_memheap_free(void *ptr) header_ptr->next_free, header_ptr->prev_free)); } +#ifdef RT_USING_MEMTRACE + rt_memset(header_ptr->owner_thread_name, ' ', sizeof(header_ptr->owner_thread_name)); +#endif + /* release lock */ rt_sem_release(&(heap->lock)); } @@ -728,4 +755,78 @@ void rt_memory_info(rt_uint32_t *total, #endif -#endif +#ifdef RT_USING_MEMTRACE + +void dump_used_memheap(struct rt_memheap *mh) +{ + struct rt_memheap_item *header_ptr; + rt_uint32_t block_size; + + + rt_kprintf("\nmemory heap address:\n"); + rt_kprintf("heap_ptr: 0x%08x\n", mh->start_addr); + rt_kprintf("free : 0x%08x\n", mh->available_size); + rt_kprintf("max_used: 0x%08x\n", mh->max_used_size); + rt_kprintf("size : 0x%08x\n", mh->pool_size); + + rt_kprintf("\n--memory used information --\n"); + + header_ptr = mh->block_list; + while (header_ptr->next != mh->block_list) + { + if ((header_ptr->magic & RT_MEMHEAP_MASK) != RT_MEMHEAP_MAGIC) + { + rt_kprintf("[0x%08x - incorrect magic: 0x%08x\n", header_ptr, header_ptr->magic); + break; + } + + /* get current memory block size */ + block_size = MEMITEM_SIZE(header_ptr); + if (block_size < 0) + break; + + if (RT_MEMHEAP_IS_USED(header_ptr)) + { + /* dump information */ + rt_kprintf("[0x%08x - %d - %c%c%c%c] used\n", header_ptr, block_size, + header_ptr->owner_thread_name[0], header_ptr->owner_thread_name[1], + header_ptr->owner_thread_name[2], header_ptr->owner_thread_name[3]); + } + else + { + /* dump information */ + rt_kprintf("[0x%08x - %d - %c%c%c%c] free\n", header_ptr, block_size, + header_ptr->owner_thread_name[0], header_ptr->owner_thread_name[1], + header_ptr->owner_thread_name[2], header_ptr->owner_thread_name[3]); + } + + /* move to next used memory block */ + header_ptr = header_ptr->next; + } +} + +void memtrace_heap() +{ + struct rt_object_information *info; + struct rt_list_node *list; + struct rt_memheap *mh; + struct rt_list_node *node; + + info = rt_object_get_information(RT_Object_Class_MemHeap); + list = &info->object_list; + + for (node = list->next; node != list; node = node->next) + { + mh = (struct rt_memheap *)rt_list_entry(node, struct rt_object, list); + dump_used_memheap(mh); + } +} + +#ifdef RT_USING_FINSH +#include +MSH_CMD_EXPORT(memtrace_heap, dump memory trace for heap); +#endif /* end of RT_USING_FINSH */ + +#endif /* end of RT_USING_MEMTRACE */ + +#endif /* end of RT_USING_MEMHEAP */ diff --git a/tools/building.py b/tools/building.py index ba995af2782742ec648957a8c2e00360edbb045f..00a9f04107adcf5e4419dce95c4c51c763546e07 100644 --- a/tools/building.py +++ b/tools/building.py @@ -626,6 +626,8 @@ def DefineGroup(name, src, depend, **parameters): group['name'] = name group['path'] = group_path if type(src) == type([]): + # remove duplicate elements from list + src = list(set(src)) group['src'] = File(src) else: group['src'] = src