diff --git a/bsp/smartfusion2/project.uvopt b/bsp/smartfusion2/project.uvopt
index 99ce043dfe..51eba0e604 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,246 +209,14 @@
0
0
0
- ..\..\src\components.c
- components.c
- 0
- 0
-
-
- 1
- 3
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\device.c
- device.c
- 0
- 0
-
-
- 1
- 4
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\idle.c
- idle.c
- 0
- 0
-
-
- 1
- 5
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\ipc.c
- ipc.c
- 0
- 0
-
-
- 1
- 6
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\irq.c
- irq.c
- 0
- 0
-
-
- 1
- 7
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\kservice.c
- kservice.c
- 0
- 0
-
-
- 1
- 8
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\mem.c
- mem.c
- 0
- 0
-
-
- 1
- 9
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\mempool.c
- mempool.c
- 0
- 0
-
-
- 1
- 10
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\object.c
- object.c
- 0
- 0
-
-
- 1
- 11
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\scheduler.c
- scheduler.c
- 0
- 0
-
-
- 1
- 12
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\signal.c
- signal.c
- 0
- 0
-
-
- 1
- 13
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\thread.c
- thread.c
- 0
- 0
-
-
- 1
- 14
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\src\timer.c
- timer.c
- 0
- 0
-
-
-
-
- Applications
- 1
- 0
- 0
- 0
-
- 2
- 15
- 1
- 0
- 0
- 14
- 0
- 1
- 16
- 0
- applications\main.c
- main.c
- 0
- 0
-
-
- 2
- 16
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
board\board.c
board.c
0
0
- 2
- 17
+ 1
+ 3
1
0
0
@@ -471,8 +239,8 @@
0
0
- 3
- 18
+ 2
+ 4
1
0
0
@@ -487,8 +255,8 @@
0
- 3
- 19
+ 2
+ 5
1
0
0
@@ -503,8 +271,8 @@
0
- 3
- 20
+ 2
+ 6
2
0
0
@@ -521,110 +289,14 @@
- Drivers
- 1
- 0
- 0
- 0
-
- 4
- 21
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- drivers\drv_uart.c
- drv_uart.c
- 0
- 0
-
-
- 4
- 22
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- drivers\drv_gpio.c
- drv_gpio.c
- 0
- 0
-
-
-
-
- Libraries
- 1
- 0
- 0
- 0
-
- 5
- 23
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- libraries\sys_config\sys_config.c
- sys_config.c
- 0
- 0
-
-
- 5
- 24
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- libraries\mss_gpio\mss_gpio.c
- mss_gpio.c
- 0
- 0
-
-
- 5
- 25
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- libraries\mss_uart\mss_uart.c
- mss_uart.c
- 0
- 0
-
-
-
-
- cpu
+ CPU
0
0
0
0
- 6
- 26
+ 3
+ 7
1
0
0
@@ -639,8 +311,8 @@
0
- 6
- 27
+ 3
+ 8
1
0
0
@@ -655,8 +327,8 @@
0
- 6
- 28
+ 3
+ 9
1
0
0
@@ -671,8 +343,8 @@
0
- 6
- 29
+ 3
+ 10
1
0
0
@@ -687,8 +359,8 @@
0
- 6
- 30
+ 3
+ 11
2
0
0
@@ -711,8 +383,8 @@
0
0
- 7
- 31
+ 4
+ 12
1
0
0
@@ -727,8 +399,8 @@
0
- 7
- 32
+ 4
+ 13
1
0
0
@@ -743,8 +415,8 @@
0
- 7
- 33
+ 4
+ 14
1
0
0
@@ -759,8 +431,8 @@
0
- 7
- 34
+ 4
+ 15
1
0
0
@@ -775,8 +447,8 @@
0
- 7
- 35
+ 4
+ 16
1
0
0
@@ -791,8 +463,8 @@
0
- 7
- 36
+ 4
+ 17
1
0
0
@@ -807,8 +479,8 @@
0
- 7
- 37
+ 4
+ 18
1
0
0
@@ -823,8 +495,8 @@
0
- 7
- 38
+ 4
+ 19
1
0
0
@@ -839,8 +511,8 @@
0
- 7
- 39
+ 4
+ 20
1
0
0
@@ -856,6 +528,46 @@
+
+ Drivers
+ 0
+ 0
+ 0
+ 0
+
+ 5
+ 21
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ drivers\drv_uart.c
+ drv_uart.c
+ 0
+ 0
+
+
+ 5
+ 22
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ drivers\drv_gpio.c
+ drv_gpio.c
+ 0
+ 0
+
+
+
finsh
0
@@ -863,8 +575,8 @@
0
0
- 8
- 40
+ 6
+ 23
1
0
0
@@ -879,8 +591,8 @@
0
- 8
- 41
+ 6
+ 24
1
0
0
@@ -895,8 +607,8 @@
0
- 8
- 42
+ 6
+ 25
1
0
0
@@ -912,6 +624,222 @@
+
+ Kernel
+ 0
+ 0
+ 0
+ 0
+
+ 7
+ 26
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\clock.c
+ clock.c
+ 0
+ 0
+
+
+ 7
+ 27
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\components.c
+ components.c
+ 0
+ 0
+
+
+ 7
+ 28
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\device.c
+ device.c
+ 0
+ 0
+
+
+ 7
+ 29
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\idle.c
+ idle.c
+ 0
+ 0
+
+
+ 7
+ 30
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\ipc.c
+ ipc.c
+ 0
+ 0
+
+
+ 7
+ 31
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\irq.c
+ irq.c
+ 0
+ 0
+
+
+ 7
+ 32
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\kservice.c
+ kservice.c
+ 0
+ 0
+
+
+ 7
+ 33
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\mem.c
+ mem.c
+ 0
+ 0
+
+
+ 7
+ 34
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\mempool.c
+ mempool.c
+ 0
+ 0
+
+
+ 7
+ 35
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\object.c
+ object.c
+ 0
+ 0
+
+
+ 7
+ 36
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\scheduler.c
+ scheduler.c
+ 0
+ 0
+
+
+ 7
+ 37
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\thread.c
+ thread.c
+ 0
+ 0
+
+
+ 7
+ 38
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\src\timer.c
+ timer.c
+ 0
+ 0
+
+
+
libc
0
@@ -919,8 +847,8 @@
0
0
- 9
- 43
+ 8
+ 39
1
0
0
@@ -935,8 +863,8 @@
0
- 9
- 44
+ 8
+ 40
1
0
0
@@ -951,8 +879,8 @@
0
- 9
- 45
+ 8
+ 41
1
0
0
@@ -961,14 +889,30 @@
0
0
0
- ..\..\components\libc\compilers\armlibc\stubs.c
- stubs.c
+ ..\..\components\libc\compilers\armlibc\syscalls.c
+ syscalls.c
0
0
- 9
- 46
+ 8
+ 42
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ..\..\components\libc\compilers\common\stdlib.c
+ stdlib.c
+ 0
+ 0
+
+
+ 8
+ 43
1
0
0
@@ -984,4 +928,60 @@
+
+ Libraries
+ 0
+ 0
+ 0
+ 0
+
+ 9
+ 44
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ libraries\sys_config\sys_config.c
+ sys_config.c
+ 0
+ 0
+
+
+ 9
+ 45
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ libraries\mss_gpio\mss_gpio.c
+ mss_gpio.c
+ 0
+ 0
+
+
+ 9
+ 46
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ libraries\mss_uart\mss_uart.c
+ mss_uart.c
+ 0
+ 0
+
+
+
diff --git a/bsp/smartfusion2/project.uvoptx b/bsp/smartfusion2/project.uvoptx
index a83e5093d3..57f994ae2b 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,190 +199,14 @@
0
0
0
- ..\..\src\components.c
- components.c
- 0
- 0
-
-
- 1
- 3
- 1
- 0
- 0
- 0
- ..\..\src\device.c
- device.c
- 0
- 0
-
-
- 1
- 4
- 1
- 0
- 0
- 0
- ..\..\src\idle.c
- idle.c
- 0
- 0
-
-
- 1
- 5
- 1
- 0
- 0
- 0
- ..\..\src\ipc.c
- ipc.c
- 0
- 0
-
-
- 1
- 6
- 1
- 0
- 0
- 0
- ..\..\src\irq.c
- irq.c
- 0
- 0
-
-
- 1
- 7
- 1
- 0
- 0
- 0
- ..\..\src\kservice.c
- kservice.c
- 0
- 0
-
-
- 1
- 8
- 1
- 0
- 0
- 0
- ..\..\src\mem.c
- mem.c
- 0
- 0
-
-
- 1
- 9
- 1
- 0
- 0
- 0
- ..\..\src\mempool.c
- mempool.c
- 0
- 0
-
-
- 1
- 10
- 1
- 0
- 0
- 0
- ..\..\src\object.c
- object.c
- 0
- 0
-
-
- 1
- 11
- 1
- 0
- 0
- 0
- ..\..\src\scheduler.c
- scheduler.c
- 0
- 0
-
-
- 1
- 12
- 1
- 0
- 0
- 0
- ..\..\src\signal.c
- signal.c
- 0
- 0
-
-
- 1
- 13
- 1
- 0
- 0
- 0
- ..\..\src\thread.c
- thread.c
- 0
- 0
-
-
- 1
- 14
- 1
- 0
- 0
- 0
- ..\..\src\timer.c
- timer.c
- 0
- 0
-
-
-
-
- Applications
- 1
- 0
- 0
- 0
-
- 2
- 15
- 1
- 0
- 0
- 0
- applications\main.c
- main.c
- 0
- 0
-
-
- 2
- 16
- 1
- 0
- 0
- 0
board\board.c
board.c
0
0
- 2
- 17
+ 1
+ 3
1
0
0
@@ -401,8 +225,8 @@
0
0
- 3
- 18
+ 2
+ 4
1
0
0
@@ -413,8 +237,8 @@
0
- 3
- 19
+ 2
+ 5
1
0
0
@@ -425,8 +249,8 @@
0
- 3
- 20
+ 2
+ 6
2
0
0
@@ -439,90 +263,14 @@
- Drivers
- 1
- 0
- 0
- 0
-
- 4
- 21
- 1
- 0
- 0
- 0
- drivers\drv_uart.c
- drv_uart.c
- 0
- 0
-
-
- 4
- 22
- 1
- 0
- 0
- 0
- drivers\drv_gpio.c
- drv_gpio.c
- 0
- 0
-
-
-
-
- Libraries
- 1
- 0
- 0
- 0
-
- 5
- 23
- 1
- 0
- 0
- 0
- libraries\sys_config\sys_config.c
- sys_config.c
- 0
- 0
-
-
- 5
- 24
- 1
- 0
- 0
- 0
- libraries\mss_gpio\mss_gpio.c
- mss_gpio.c
- 0
- 0
-
-
- 5
- 25
- 1
- 0
- 0
- 0
- libraries\mss_uart\mss_uart.c
- mss_uart.c
- 0
- 0
-
-
-
-
- cpu
+ CPU
0
0
0
0
- 6
- 26
+ 3
+ 7
1
0
0
@@ -533,8 +281,8 @@
0
- 6
- 27
+ 3
+ 8
1
0
0
@@ -545,8 +293,8 @@
0
- 6
- 28
+ 3
+ 9
1
0
0
@@ -557,8 +305,8 @@
0
- 6
- 29
+ 3
+ 10
1
0
0
@@ -569,8 +317,8 @@
0
- 6
- 30
+ 3
+ 11
2
0
0
@@ -589,8 +337,8 @@
0
0
- 7
- 31
+ 4
+ 12
1
0
0
@@ -601,8 +349,8 @@
0
- 7
- 32
+ 4
+ 13
1
0
0
@@ -613,8 +361,8 @@
0
- 7
- 33
+ 4
+ 14
1
0
0
@@ -625,8 +373,8 @@
0
- 7
- 34
+ 4
+ 15
1
0
0
@@ -637,8 +385,8 @@
0
- 7
- 35
+ 4
+ 16
1
0
0
@@ -649,8 +397,8 @@
0
- 7
- 36
+ 4
+ 17
1
0
0
@@ -661,8 +409,8 @@
0
- 7
- 37
+ 4
+ 18
1
0
0
@@ -673,8 +421,8 @@
0
- 7
- 38
+ 4
+ 19
1
0
0
@@ -685,8 +433,8 @@
0
- 7
- 39
+ 4
+ 20
1
0
0
@@ -698,6 +446,38 @@
+
+ Drivers
+ 0
+ 0
+ 0
+ 0
+
+ 5
+ 21
+ 1
+ 0
+ 0
+ 0
+ drivers\drv_uart.c
+ drv_uart.c
+ 0
+ 0
+
+
+ 5
+ 22
+ 1
+ 0
+ 0
+ 0
+ drivers\drv_gpio.c
+ drv_gpio.c
+ 0
+ 0
+
+
+
finsh
0
@@ -705,8 +485,8 @@
0
0
- 8
- 40
+ 6
+ 23
1
0
0
@@ -717,8 +497,8 @@
0
- 8
- 41
+ 6
+ 24
1
0
0
@@ -729,8 +509,8 @@
0
- 8
- 42
+ 6
+ 25
1
0
0
@@ -742,6 +522,170 @@
+
+ Kernel
+ 0
+ 0
+ 0
+ 0
+
+ 7
+ 26
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\clock.c
+ clock.c
+ 0
+ 0
+
+
+ 7
+ 27
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\components.c
+ components.c
+ 0
+ 0
+
+
+ 7
+ 28
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\device.c
+ device.c
+ 0
+ 0
+
+
+ 7
+ 29
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\idle.c
+ idle.c
+ 0
+ 0
+
+
+ 7
+ 30
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\ipc.c
+ ipc.c
+ 0
+ 0
+
+
+ 7
+ 31
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\irq.c
+ irq.c
+ 0
+ 0
+
+
+ 7
+ 32
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\kservice.c
+ kservice.c
+ 0
+ 0
+
+
+ 7
+ 33
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\mem.c
+ mem.c
+ 0
+ 0
+
+
+ 7
+ 34
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\mempool.c
+ mempool.c
+ 0
+ 0
+
+
+ 7
+ 35
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\object.c
+ object.c
+ 0
+ 0
+
+
+ 7
+ 36
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\scheduler.c
+ scheduler.c
+ 0
+ 0
+
+
+ 7
+ 37
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\thread.c
+ thread.c
+ 0
+ 0
+
+
+ 7
+ 38
+ 1
+ 0
+ 0
+ 0
+ ..\..\src\timer.c
+ timer.c
+ 0
+ 0
+
+
+
libc
0
@@ -749,8 +693,8 @@
0
0
- 9
- 43
+ 8
+ 39
1
0
0
@@ -761,8 +705,8 @@
0
- 9
- 44
+ 8
+ 40
1
0
0
@@ -773,20 +717,32 @@
0
- 9
- 45
+ 8
+ 41
1
0
0
0
- ..\..\components\libc\compilers\armlibc\stubs.c
- stubs.c
+ ..\..\components\libc\compilers\armlibc\syscalls.c
+ syscalls.c
0
0
- 9
- 46
+ 8
+ 42
+ 1
+ 0
+ 0
+ 0
+ ..\..\components\libc\compilers\common\stdlib.c
+ stdlib.c
+ 0
+ 0
+
+
+ 8
+ 43
1
0
0
@@ -798,4 +754,48 @@
+
+ Libraries
+ 0
+ 0
+ 0
+ 0
+
+ 9
+ 44
+ 1
+ 0
+ 0
+ 0
+ libraries\sys_config\sys_config.c
+ sys_config.c
+ 0
+ 0
+
+
+ 9
+ 45
+ 1
+ 0
+ 0
+ 0
+ libraries\mss_gpio\mss_gpio.c
+ mss_gpio.c
+ 0
+ 0
+
+
+ 9
+ 46
+ 1
+ 0
+ 0
+ 0
+ libraries\mss_uart\mss_uart.c
+ mss_uart.c
+ 0
+ 0
+
+
+
diff --git a/bsp/smartfusion2/project.uvproj b/bsp/smartfusion2/project.uvproj
index 34dc365986..2ee7c71eee 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\stubs.c
+ ..\..\components\libc\compilers\armlibc\syscalls.c
+
+
+ stdlib.c
+ 1
+ ..\..\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 16914df12d..738524c6cb 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 70eae785e9..8735ccdd69 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 99fded24dc..356db37361 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 dbfd0815c2..56ef79c76d 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 1368838b94..aa182ff9b3 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/include/rtdef.h b/include/rtdef.h
index 0256601949..44328b5447 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 afa06fb9bf..449e66e975 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 */