summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bsp/gd32e230k-start/Libraries/SConscript22
-rw-r--r--bsp/gd32e230k-start/SConstruct2
-rw-r--r--bsp/gd32e230k-start/drivers/SConscript4
-rw-r--r--bsp/gd32e230k-start/drivers/board.h2
-rw-r--r--bsp/gd32e230k-start/project.uvoptx564
-rw-r--r--bsp/gd32e230k-start/project.uvprojx318
-rw-r--r--bsp/gd32e230k-start/rtconfig.h61
-rw-r--r--bsp/gd32e230k-start/rtconfig.py4
-rw-r--r--bsp/gd32e230k-start/template.uvoptx18
-rw-r--r--bsp/gd32e230k-start/template.uvprojx62
-rw-r--r--libcpu/arm/cortex-m23/context_gcc.S120
-rw-r--r--libcpu/arm/cortex-m23/context_iar.S90
-rw-r--r--libcpu/arm/cortex-m23/context_rvds.S84
-rw-r--r--libcpu/arm/cortex-m23/cpuport.c328
14 files changed, 617 insertions, 1062 deletions
diff --git a/bsp/gd32e230k-start/Libraries/SConscript b/bsp/gd32e230k-start/Libraries/SConscript
index eb4cfb77c7..e79dc34216 100644
--- a/bsp/gd32e230k-start/Libraries/SConscript
+++ b/bsp/gd32e230k-start/Libraries/SConscript
@@ -6,27 +6,21 @@ cwd = GetCurrentDir()
# The set of source files associated with this SConscript file.
-src = Glob('GD32F30x_standard_peripheral/Source/*.c')
-src += [cwd + '/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c']
+src = Glob('GD32E230_standard_peripheral/Source/*.c')
+src += [cwd + '/CMSIS/GD/GD32E230/Source/system_gd32e230.c']
#add for startup script
-if rtconfig.CROSS_TOOL == 'gcc':
- src += [cwd + '/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s']
-elif rtconfig.CROSS_TOOL == 'keil':
- src += [cwd + '/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s']
+if rtconfig.CROSS_TOOL == 'keil':
+ src += [cwd + '/CMSIS/GD/GD32E230/Source/ARM/startup_gd32e230.s']
elif rtconfig.CROSS_TOOL == 'iar':
- src += [cwd + '/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s']
+ src += [cwd + '/CMSIS/GD/GD32E230/Source/IAR/startup_gd32e230.s']
path = [
- cwd + '/CMSIS/GD/GD32F30x/Include',
+ cwd + '/CMSIS/GD/GD32E230/Include',
cwd + '/CMSIS',
- cwd + '/GD32F30x_standard_peripheral/Include',]
-
-if GetDepend(['RT_USING_BSP_USB']):
- path += [cwd + '/GD32F30x_usb_driver/Include']
- src += [cwd + '/GD32F30x_usb_driver/Source']
+ cwd + '/GD32E230_standard_peripheral/Include',]
-CPPDEFINES = ['USE_STDPERIPH_DRIVER', 'GD32F30X_HD']
+CPPDEFINES = ['GD32E230']
group = DefineGroup('GD32_Lib', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)
diff --git a/bsp/gd32e230k-start/SConstruct b/bsp/gd32e230k-start/SConstruct
index 1cdbaab4a8..57a8ac59fc 100644
--- a/bsp/gd32e230k-start/SConstruct
+++ b/bsp/gd32e230k-start/SConstruct
@@ -15,7 +15,7 @@ except:
print(RTT_ROOT)
exit(-1)
-TARGET = 'rtthread-gd32f30x.' + rtconfig.TARGET_EXT
+TARGET = 'rtthread-gd32f230.' + rtconfig.TARGET_EXT
env = Environment(tools = ['mingw'],
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
diff --git a/bsp/gd32e230k-start/drivers/SConscript b/bsp/gd32e230k-start/drivers/SConscript
index ef03e2dcf0..45fd672f5f 100644
--- a/bsp/gd32e230k-start/drivers/SConscript
+++ b/bsp/gd32e230k-start/drivers/SConscript
@@ -24,10 +24,6 @@ if GetDepend('RT_USING_I2C'):
if GetDepend('RT_USING_PIN'):
src += ['drv_gpio.c']
-# add spi flash drivers.
-if GetDepend('RT_USING_SFUD'):
- src += ['drv_spi_flash.c']
-
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
Return('group')
diff --git a/bsp/gd32e230k-start/drivers/board.h b/bsp/gd32e230k-start/drivers/board.h
index de344e8768..bff43464b4 100644
--- a/bsp/gd32e230k-start/drivers/board.h
+++ b/bsp/gd32e230k-start/drivers/board.h
@@ -29,7 +29,7 @@ extern char __ICFEDIT_region_RAM_end__;
#define GD32_SRAM_END (0x20000000 + GD32_SRAM_SIZE * 1024)
#endif
-#ifdef __CC_ARM
+#ifdef __ARMCC_VERSION
extern int Image$$RW_IRAM1$$ZI$$Limit;
#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit)
#elif __ICCARM__
diff --git a/bsp/gd32e230k-start/project.uvoptx b/bsp/gd32e230k-start/project.uvoptx
index c97d8a37d1..aa084f2049 100644
--- a/bsp/gd32e230k-start/project.uvoptx
+++ b/bsp/gd32e230k-start/project.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>rt-thread_gd32f30x</TargetName>
+ <TargetName>rt-thread_gd32e230</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
- <nTsel>19</nTsel>
+ <nTsel>14</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -175,8 +175,8 @@
</Target>
<Group>
- <GroupName>Applications</GroupName>
- <tvExp>1</tvExp>
+ <GroupName>Kernel</GroupName>
+ <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@@ -187,207 +187,207 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>applications\main.c</PathWithFileName>
- <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\clock.c</PathWithFileName>
+ <FilenameWithoutPath>clock.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
- </Group>
-
- <Group>
- <GroupName>Drivers</GroupName>
- <tvExp>1</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>0</RteFlg>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>drivers\board.c</PathWithFileName>
- <FilenameWithoutPath>board.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\components.c</PathWithFileName>
+ <FilenameWithoutPath>components.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>drivers\drv_usart.c</PathWithFileName>
- <FilenameWithoutPath>drv_usart.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\cpu.c</PathWithFileName>
+ <FilenameWithoutPath>cpu.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>drivers\drv_spi.c</PathWithFileName>
- <FilenameWithoutPath>drv_spi.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\device.c</PathWithFileName>
+ <FilenameWithoutPath>device.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>drivers\drv_i2c.c</PathWithFileName>
- <FilenameWithoutPath>drv_i2c.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\idle.c</PathWithFileName>
+ <FilenameWithoutPath>idle.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>drivers\drv_gpio.c</PathWithFileName>
- <FilenameWithoutPath>drv_gpio.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\ipc.c</PathWithFileName>
+ <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
- </Group>
-
- <Group>
- <GroupName>GD32_Lib</GroupName>
- <tvExp>1</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>0</RteFlg>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_adc.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_adc.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\irq.c</PathWithFileName>
+ <FilenameWithoutPath>irq.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_cmp.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_cmp.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\kservice.c</PathWithFileName>
+ <FilenameWithoutPath>kservice.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_crc.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_crc.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\mem.c</PathWithFileName>
+ <FilenameWithoutPath>mem.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_dbg.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_dbg.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\mempool.c</PathWithFileName>
+ <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_dma.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_dma.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\object.c</PathWithFileName>
+ <FilenameWithoutPath>object.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_exti.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_exti.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\scheduler.c</PathWithFileName>
+ <FilenameWithoutPath>scheduler.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_fmc.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_fmc.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\signal.c</PathWithFileName>
+ <FilenameWithoutPath>signal.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_fwdgt.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_fwdgt.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\thread.c</PathWithFileName>
+ <FilenameWithoutPath>thread.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_gpio.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_gpio.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\src\timer.c</PathWithFileName>
+ <FilenameWithoutPath>timer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
+ </Group>
+
+ <Group>
+ <GroupName>Applications</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>2</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_i2c.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_i2c.c</FilenameWithoutPath>
+ <PathWithFileName>applications\main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>17</FileNumber>
@@ -395,8 +395,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_misc.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_misc.c</FilenameWithoutPath>
+ <PathWithFileName>drivers\board.c</PathWithFileName>
+ <FilenameWithoutPath>board.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -407,8 +407,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_pmu.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_pmu.c</FilenameWithoutPath>
+ <PathWithFileName>drivers\drv_usart.c</PathWithFileName>
+ <FilenameWithoutPath>drv_usart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -419,8 +419,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_rcu.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_rcu.c</FilenameWithoutPath>
+ <PathWithFileName>drivers\drv_spi.c</PathWithFileName>
+ <FilenameWithoutPath>drv_spi.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -431,8 +431,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_rtc.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_rtc.c</FilenameWithoutPath>
+ <PathWithFileName>drivers\drv_i2c.c</PathWithFileName>
+ <FilenameWithoutPath>drv_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -443,91 +443,91 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_spi.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_spi.c</FilenameWithoutPath>
+ <PathWithFileName>drivers\drv_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>drv_gpio.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
+ </Group>
+
+ <Group>
+ <GroupName>GD32_Lib</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_syscfg.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_syscfg.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_adc.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_adc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_timer.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_timer.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_cmp.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_cmp.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_usart.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_usart.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_crc.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_crc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_wwdgt.c</PathWithFileName>
- <FilenameWithoutPath>gd32e230_wwdgt.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_dbg.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_dbg.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\CMSIS\GD\GD32E230\Source\system_gd32e230.c</PathWithFileName>
- <FilenameWithoutPath>system_gd32e230.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_dma.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_dma.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>27</FileNumber>
- <FileType>2</FileType>
+ <FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>.\Libraries\CMSIS\GD\GD32E230\Source\ARM\startup_gd32e230.s</PathWithFileName>
- <FilenameWithoutPath>startup_gd32e230.s</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_exti.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_exti.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
- </Group>
-
- <Group>
- <GroupName>Kernel</GroupName>
- <tvExp>1</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>28</FileNumber>
@@ -535,8 +535,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\clock.c</PathWithFileName>
- <FilenameWithoutPath>clock.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_fmc.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_fmc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -547,8 +547,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\components.c</PathWithFileName>
- <FilenameWithoutPath>components.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_fwdgt.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_fwdgt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -559,8 +559,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\device.c</PathWithFileName>
- <FilenameWithoutPath>device.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_gpio.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -571,8 +571,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\idle.c</PathWithFileName>
- <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_i2c.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -583,8 +583,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\ipc.c</PathWithFileName>
- <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_misc.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_misc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -595,8 +595,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\irq.c</PathWithFileName>
- <FilenameWithoutPath>irq.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_pmu.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_pmu.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -607,8 +607,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\kservice.c</PathWithFileName>
- <FilenameWithoutPath>kservice.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_rcu.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_rcu.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -619,8 +619,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\mem.c</PathWithFileName>
- <FilenameWithoutPath>mem.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_rtc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -631,8 +631,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\mempool.c</PathWithFileName>
- <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_spi.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_spi.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -643,8 +643,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\object.c</PathWithFileName>
- <FilenameWithoutPath>object.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_syscfg.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_syscfg.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -655,8 +655,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\scheduler.c</PathWithFileName>
- <FilenameWithoutPath>scheduler.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_timer.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_timer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -667,8 +667,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\signal.c</PathWithFileName>
- <FilenameWithoutPath>signal.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_usart.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_usart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -679,8 +679,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\thread.c</PathWithFileName>
- <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\GD32E230_standard_peripheral\Source\gd32e230_wwdgt.c</PathWithFileName>
+ <FilenameWithoutPath>gd32e230_wwdgt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -691,22 +691,34 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\src\timer.c</PathWithFileName>
- <FilenameWithoutPath>timer.c</FilenameWithoutPath>
+ <PathWithFileName>Libraries\CMSIS\GD\GD32E230\Source\system_gd32e230.c</PathWithFileName>
+ <FilenameWithoutPath>system_gd32e230.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>Libraries\CMSIS\GD\GD32E230\Source\ARM\startup_gd32e230.s</PathWithFileName>
+ <FilenameWithoutPath>startup_gd32e230.s</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
- <GroupName>CORTEX-M23</GroupName>
- <tvExp>1</tvExp>
+ <GroupName>cpu</GroupName>
+ <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>42</FileNumber>
+ <FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -718,7 +730,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>43</FileNumber>
+ <FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -730,7 +742,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>44</FileNumber>
+ <FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -742,7 +754,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>45</FileNumber>
+ <FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -754,7 +766,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
- <FileNumber>46</FileNumber>
+ <FileNumber>47</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -767,32 +779,20 @@
</Group>
<Group>
- <GroupName>Filesystem</GroupName>
- <tvExp>1</tvExp>
+ <GroupName>DeviceDrivers</GroupName>
+ <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
- <FileNumber>47</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\src\dfs.c</PathWithFileName>
- <FilenameWithoutPath>dfs.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>6</GroupNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\src\dfs_file.c</PathWithFileName>
- <FilenameWithoutPath>dfs_file.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\i2c\i2c_core.c</PathWithFileName>
+ <FilenameWithoutPath>i2c_core.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -803,8 +803,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\src\dfs_fs.c</PathWithFileName>
- <FilenameWithoutPath>dfs_fs.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\i2c\i2c_dev.c</PathWithFileName>
+ <FilenameWithoutPath>i2c_dev.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -815,8 +815,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\src\dfs_posix.c</PathWithFileName>
- <FilenameWithoutPath>dfs_posix.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\misc\pin.c</PathWithFileName>
+ <FilenameWithoutPath>pin.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -827,8 +827,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\filesystems\devfs\devfs.c</PathWithFileName>
- <FilenameWithoutPath>devfs.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\serial\serial.c</PathWithFileName>
+ <FilenameWithoutPath>serial.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -839,8 +839,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\filesystems\elmfat\dfs_elm.c</PathWithFileName>
- <FilenameWithoutPath>dfs_elm.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\spi\spi_core.c</PathWithFileName>
+ <FilenameWithoutPath>spi_core.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -851,142 +851,98 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\dfs\filesystems\elmfat\ff.c</PathWithFileName>
- <FilenameWithoutPath>ff.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\spi\spi_dev.c</PathWithFileName>
+ <FilenameWithoutPath>spi_dev.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
- </Group>
-
- <Group>
- <GroupName>DeviceDrivers</GroupName>
- <tvExp>1</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>0</RteFlg>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\i2c\i2c_core.c</PathWithFileName>
- <FilenameWithoutPath>i2c_core.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\spi\spi_flash_sfud.c</PathWithFileName>
+ <FilenameWithoutPath>spi_flash_sfud.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\i2c\i2c_dev.c</PathWithFileName>
- <FilenameWithoutPath>i2c_dev.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\spi\sfud\src\sfud.c</PathWithFileName>
+ <FilenameWithoutPath>sfud.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\misc\pin.c</PathWithFileName>
- <FilenameWithoutPath>pin.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\src\completion.c</PathWithFileName>
+ <FilenameWithoutPath>completion.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\serial\serial.c</PathWithFileName>
- <FilenameWithoutPath>serial.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\src\dataqueue.c</PathWithFileName>
+ <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\spi\spi_core.c</PathWithFileName>
- <FilenameWithoutPath>spi_core.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\src\pipe.c</PathWithFileName>
+ <FilenameWithoutPath>pipe.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\spi\spi_dev.c</PathWithFileName>
- <FilenameWithoutPath>spi_dev.c</FilenameWithoutPath>
+ <PathWithFileName>..\..\components\drivers\src\ringblk_buf.c</PathWithFileName>
+ <FilenameWithoutPath>ringblk_buf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\src\completion.c</PathWithFileName>
- <FilenameWithoutPath>completion.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>7</GroupNumber>
- <FileNumber>61</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\src\dataqueue.c</PathWithFileName>
- <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>7</GroupNumber>
- <FileNumber>62</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\drivers\src\pipe.c</PathWithFileName>
- <FilenameWithoutPath>pipe.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>7</GroupNumber>
- <FileNumber>63</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
<PathWithFileName>..\..\components\drivers\src\ringbuffer.c</PathWithFileName>
<FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
- <FileNumber>64</FileNumber>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -997,8 +953,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>7</GroupNumber>
- <FileNumber>65</FileNumber>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1017,8 +973,8 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>66</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1029,8 +985,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>67</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1041,8 +997,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>68</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1053,8 +1009,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>69</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1065,8 +1021,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>70</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1077,8 +1033,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>71</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1089,8 +1045,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>72</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1101,8 +1057,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>73</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1113,8 +1069,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>74</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1125,8 +1081,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>75</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1137,8 +1093,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>76</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1149,8 +1105,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>77</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1161,8 +1117,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>78</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1173,8 +1129,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>79</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1185,8 +1141,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>80</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1197,8 +1153,8 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>8</GroupNumber>
- <FileNumber>81</FileNumber>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1211,86 +1167,6 @@
</Group>
<Group>
- <GroupName>libc</GroupName>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>0</RteFlg>
- <File>
- <GroupNumber>9</GroupNumber>
- <FileNumber>82</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\libc\compilers\armlibc\libc.c</PathWithFileName>
- <FilenameWithoutPath>libc.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>9</GroupNumber>
- <FileNumber>83</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\libc\compilers\armlibc\libc_syms.c</PathWithFileName>
- <FilenameWithoutPath>libc_syms.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>9</GroupNumber>
- <FileNumber>84</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\libc\compilers\armlibc\mem_std.c</PathWithFileName>
- <FilenameWithoutPath>mem_std.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>9</GroupNumber>
- <FileNumber>85</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\libc\compilers\armlibc\stdio.c</PathWithFileName>
- <FilenameWithoutPath>stdio.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>9</GroupNumber>
- <FileNumber>86</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\libc\compilers\armlibc\stubs.c</PathWithFileName>
- <FilenameWithoutPath>stubs.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- <File>
- <GroupNumber>9</GroupNumber>
- <FileNumber>87</FileNumber>
- <FileType>1</FileType>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <bDave2>0</bDave2>
- <PathWithFileName>..\..\components\libc\compilers\armlibc\time.c</PathWithFileName>
- <FilenameWithoutPath>time.c</FilenameWithoutPath>
- <RteFlg>0</RteFlg>
- <bShared>0</bShared>
- </File>
- </Group>
-
- <Group>
<GroupName>::CMSIS</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
diff --git a/bsp/gd32e230k-start/project.uvprojx b/bsp/gd32e230k-start/project.uvprojx
index 66d282d567..4466ae7d45 100644
--- a/bsp/gd32e230k-start/project.uvprojx
+++ b/bsp/gd32e230k-start/project.uvprojx
@@ -7,11 +7,10 @@
<Targets>
<Target>
- <TargetName>rt-thread_gd32f30x</TargetName>
+ <TargetName>rt-thread_gd32e230</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
- <pArmCC>6120000::V6.12::.\ARMCLANG</pArmCC>
- <pCCUsed>6120000::V6.12::.\ARMCLANG</pCCUsed>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
<uAC6>1</uAC6>
<TargetOption>
<TargetCommonOption>
@@ -50,7 +49,7 @@
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\build\</OutputDirectory>
- <OutputName>rtthread-gd32f30x</OutputName>
+ <OutputName>rtthread-gd32e230</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>0</CreateHexFile>
@@ -313,7 +312,7 @@
</ArmAdsMisc>
<Cads>
<interw>1</interw>
- <Optim>7</Optim>
+ <Optim>1</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>0</OneElfS>
@@ -322,14 +321,14 @@
<PlainCh>0</PlainCh>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
- <wLevel>3</wLevel>
+ <wLevel>0</wLevel>
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
<uGnu>0</uGnu>
<useXO>0</useXO>
- <v6Lang>3</v6Lang>
- <v6LangP>3</v6LangP>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
<vShortEn>1</vShortEn>
<vShortWch>1</vShortWch>
<v6Lto>0</v6Lto>
@@ -337,9 +336,9 @@
<v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
- <Define>GD32E230, RT_USING_ARM_LIBC</Define>
+ <Define>GD32E230</Define>
<Undefine></Undefine>
- <IncludePath>applications;.;drivers;Libraries\CMSIS;..\..\include;..\..\libcpu\arm\common;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\spi\sfud\inc;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;.\Libraries\GD32E230_standard_peripheral\Include;.\Libraries\CMSIS\GD\GD32E230\Include;..\..\libcpu\arm\cortex-m23</IncludePath>
+ <IncludePath>.;..\..\include;applications;.;drivers;Libraries\CMSIS\GD\GD32E230\Include;Libraries\CMSIS;Libraries\GD32E230_standard_peripheral\Include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m23;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\spi\sfud\inc;..\..\components\drivers\include;..\..\components\finsh</IncludePath>
</VariousControls>
</Cads>
<Aads>
@@ -373,7 +372,7 @@
<ScatterFile></ScatterFile>
<IncludeLibs></IncludeLibs>
<IncludeLibsPath></IncludeLibsPath>
- <Misc>--keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab)</Misc>
+ <Misc></Misc>
<LinkerInputFile></LinkerInputFile>
<DisabledWarnings></DisabledWarnings>
</LDads>
@@ -381,6 +380,86 @@
</TargetOption>
<Groups>
<Group>
+ <GroupName>Kernel</GroupName>
+ <Files>
+ <File>
+ <FileName>clock.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\clock.c</FilePath>
+ </File>
+ <File>
+ <FileName>components.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\components.c</FilePath>
+ </File>
+ <File>
+ <FileName>cpu.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\cpu.c</FilePath>
+ </File>
+ <File>
+ <FileName>device.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\device.c</FilePath>
+ </File>
+ <File>
+ <FileName>idle.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\idle.c</FilePath>
+ </File>
+ <File>
+ <FileName>ipc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\ipc.c</FilePath>
+ </File>
+ <File>
+ <FileName>irq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\irq.c</FilePath>
+ </File>
+ <File>
+ <FileName>kservice.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\kservice.c</FilePath>
+ </File>
+ <File>
+ <FileName>mem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\mem.c</FilePath>
+ </File>
+ <File>
+ <FileName>mempool.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\mempool.c</FilePath>
+ </File>
+ <File>
+ <FileName>object.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\object.c</FilePath>
+ </File>
+ <File>
+ <FileName>scheduler.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\scheduler.c</FilePath>
+ </File>
+ <File>
+ <FileName>signal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\signal.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\thread.c</FilePath>
+ </File>
+ <File>
+ <FileName>timer.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\timer.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
<GroupName>Applications</GroupName>
<Files>
<File>
@@ -426,187 +505,112 @@
<File>
<FileName>gd32e230_adc.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_adc.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_adc.c</FilePath>
</File>
<File>
<FileName>gd32e230_cmp.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_cmp.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_cmp.c</FilePath>
</File>
<File>
<FileName>gd32e230_crc.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_crc.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_crc.c</FilePath>
</File>
<File>
<FileName>gd32e230_dbg.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_dbg.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_dbg.c</FilePath>
</File>
<File>
<FileName>gd32e230_dma.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_dma.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_dma.c</FilePath>
</File>
<File>
<FileName>gd32e230_exti.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_exti.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_exti.c</FilePath>
</File>
<File>
<FileName>gd32e230_fmc.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_fmc.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_fmc.c</FilePath>
</File>
<File>
<FileName>gd32e230_fwdgt.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_fwdgt.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_fwdgt.c</FilePath>
</File>
<File>
<FileName>gd32e230_gpio.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_gpio.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_gpio.c</FilePath>
</File>
<File>
<FileName>gd32e230_i2c.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_i2c.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_i2c.c</FilePath>
</File>
<File>
<FileName>gd32e230_misc.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_misc.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_misc.c</FilePath>
</File>
<File>
<FileName>gd32e230_pmu.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_pmu.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_pmu.c</FilePath>
</File>
<File>
<FileName>gd32e230_rcu.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_rcu.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_rcu.c</FilePath>
</File>
<File>
<FileName>gd32e230_rtc.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_rtc.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_rtc.c</FilePath>
</File>
<File>
<FileName>gd32e230_spi.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_spi.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_spi.c</FilePath>
</File>
<File>
<FileName>gd32e230_syscfg.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_syscfg.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_syscfg.c</FilePath>
</File>
<File>
<FileName>gd32e230_timer.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_timer.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_timer.c</FilePath>
</File>
<File>
<FileName>gd32e230_usart.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_usart.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_usart.c</FilePath>
</File>
<File>
<FileName>gd32e230_wwdgt.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\GD32E230_standard_peripheral\Source\gd32e230_wwdgt.c</FilePath>
+ <FilePath>Libraries\GD32E230_standard_peripheral\Source\gd32e230_wwdgt.c</FilePath>
</File>
<File>
<FileName>system_gd32e230.c</FileName>
<FileType>1</FileType>
- <FilePath>.\Libraries\CMSIS\GD\GD32E230\Source\system_gd32e230.c</FilePath>
+ <FilePath>Libraries\CMSIS\GD\GD32E230\Source\system_gd32e230.c</FilePath>
</File>
<File>
<FileName>startup_gd32e230.s</FileName>
<FileType>2</FileType>
- <FilePath>.\Libraries\CMSIS\GD\GD32E230\Source\ARM\startup_gd32e230.s</FilePath>
- </File>
- </Files>
- </Group>
- <Group>
- <GroupName>Kernel</GroupName>
- <Files>
- <File>
- <FileName>clock.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\clock.c</FilePath>
- </File>
- <File>
- <FileName>components.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\components.c</FilePath>
- </File>
- <File>
- <FileName>device.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\device.c</FilePath>
- </File>
- <File>
- <FileName>idle.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\idle.c</FilePath>
- </File>
- <File>
- <FileName>ipc.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\ipc.c</FilePath>
- </File>
- <File>
- <FileName>irq.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\irq.c</FilePath>
- </File>
- <File>
- <FileName>kservice.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\kservice.c</FilePath>
- </File>
- <File>
- <FileName>mem.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\mem.c</FilePath>
- </File>
- <File>
- <FileName>mempool.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\mempool.c</FilePath>
- </File>
- <File>
- <FileName>object.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\object.c</FilePath>
- </File>
- <File>
- <FileName>scheduler.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\scheduler.c</FilePath>
- </File>
- <File>
- <FileName>signal.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\signal.c</FilePath>
- </File>
- <File>
- <FileName>thread.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\thread.c</FilePath>
- </File>
- <File>
- <FileName>timer.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\src\timer.c</FilePath>
+ <FilePath>Libraries\CMSIS\GD\GD32E230\Source\ARM\startup_gd32e230.s</FilePath>
</File>
</Files>
</Group>
<Group>
- <GroupName>CORTEX-M23</GroupName>
+ <GroupName>cpu</GroupName>
<Files>
<File>
<FileName>backtrace.c</FileName>
@@ -636,46 +640,6 @@
</Files>
</Group>
<Group>
- <GroupName>Filesystem</GroupName>
- <Files>
- <File>
- <FileName>dfs.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\src\dfs.c</FilePath>
- </File>
- <File>
- <FileName>dfs_file.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\src\dfs_file.c</FilePath>
- </File>
- <File>
- <FileName>dfs_fs.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\src\dfs_fs.c</FilePath>
- </File>
- <File>
- <FileName>dfs_posix.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\src\dfs_posix.c</FilePath>
- </File>
- <File>
- <FileName>devfs.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\filesystems\devfs\devfs.c</FilePath>
- </File>
- <File>
- <FileName>dfs_elm.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\filesystems\elmfat\dfs_elm.c</FilePath>
- </File>
- <File>
- <FileName>ff.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\dfs\filesystems\elmfat\ff.c</FilePath>
- </File>
- </Files>
- </Group>
- <Group>
<GroupName>DeviceDrivers</GroupName>
<GroupOption>
<CommonProperty>
@@ -720,9 +684,9 @@
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
- <MiscControls></MiscControls>
- <Define></Define>
- <Undefine></Undefine>
+ <MiscControls> --c99</MiscControls>
+ <Define> </Define>
+ <Undefine> </Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
@@ -778,6 +742,16 @@
<FilePath>..\..\components\drivers\spi\spi_dev.c</FilePath>
</File>
<File>
+ <FileName>spi_flash_sfud.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\spi\spi_flash_sfud.c</FilePath>
+ </File>
+ <File>
+ <FileName>sfud.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\spi\sfud\src\sfud.c</FilePath>
+ </File>
+ <File>
<FileName>completion.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\components\drivers\src\completion.c</FilePath>
@@ -793,6 +767,11 @@
<FilePath>..\..\components\drivers\src\pipe.c</FilePath>
</File>
<File>
+ <FileName>ringblk_buf.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\components\drivers\src\ringblk_buf.c</FilePath>
+ </File>
+ <File>
<FileName>ringbuffer.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\components\drivers\src\ringbuffer.c</FilePath>
@@ -895,41 +874,6 @@
</Files>
</Group>
<Group>
- <GroupName>libc</GroupName>
- <Files>
- <File>
- <FileName>libc.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\libc\compilers\armlibc\libc.c</FilePath>
- </File>
- <File>
- <FileName>libc_syms.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\libc\compilers\armlibc\libc_syms.c</FilePath>
- </File>
- <File>
- <FileName>mem_std.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\libc\compilers\armlibc\mem_std.c</FilePath>
- </File>
- <File>
- <FileName>stdio.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\libc\compilers\armlibc\stdio.c</FilePath>
- </File>
- <File>
- <FileName>stubs.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\libc\compilers\armlibc\stubs.c</FilePath>
- </File>
- <File>
- <FileName>time.c</FileName>
- <FileType>1</FileType>
- <FilePath>..\..\components\libc\compilers\armlibc\time.c</FilePath>
- </File>
- </Files>
- </Group>
- <Group>
<GroupName>::CMSIS</GroupName>
</Group>
</Groups>
@@ -942,7 +886,7 @@
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.2.0" condition="ARMv6_7_8-M Device">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.5.1"/>
<targetInfos>
- <targetInfo name="rt-thread_gd32f30x"/>
+ <targetInfo name="rt-thread_gd32e230"/>
</targetInfos>
</component>
</components>
diff --git a/bsp/gd32e230k-start/rtconfig.h b/bsp/gd32e230k-start/rtconfig.h
index 77e9056395..b490faaf8a 100644
--- a/bsp/gd32e230k-start/rtconfig.h
+++ b/bsp/gd32e230k-start/rtconfig.h
@@ -11,13 +11,13 @@
#define RT_THREAD_PRIORITY_32
#define RT_THREAD_PRIORITY_MAX 32
#define RT_TICK_PER_SECOND 100
-#define RT_DEBUG
-#define RT_DEBUG_COLOR
#define RT_USING_OVERFLOW_CHECK
-#define RT_DEBUG_INIT 0
-#define RT_DEBUG_THREAD 0
#define RT_USING_HOOK
+#define RT_USING_IDLE_HOOK
+#define RT_IDEL_HOOK_LIST_SIZE 4
#define IDLE_THREAD_STACK_SIZE 256
+#define RT_DEBUG
+#define RT_DEBUG_COLOR
/* Inter-Thread communication */
@@ -39,12 +39,14 @@
#define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 128
#define RT_CONSOLE_DEVICE_NAME "uart0"
+#define RT_VER_NUM 0x40001
/* RT-Thread Components */
#define RT_USING_COMPONENTS_INIT
#define RT_USING_USER_MAIN
#define RT_MAIN_THREAD_STACK_SIZE 2048
+#define RT_MAIN_THREAD_PRIORITY 10
/* C++ features */
@@ -62,45 +64,37 @@
#define FINSH_CMD_SIZE 80
#define FINSH_USING_MSH
#define FINSH_USING_MSH_DEFAULT
+#define FINSH_ARG_MAX 10
/* Device virtual file system */
-#define RT_USING_DFS
-#define DFS_USING_WORKDIR
-#define DFS_FILESYSTEMS_MAX 2
-#define DFS_FILESYSTEM_TYPES_MAX 2
-#define DFS_FD_MAX 4
-#define RT_USING_DFS_ELMFAT
-
-/* elm-chan's FatFs, Generic FAT Filesystem Module */
-
-#define RT_DFS_ELM_CODE_PAGE 437
-#define RT_DFS_ELM_WORD_ACCESS
-#define RT_DFS_ELM_USE_LFN_0
-#define RT_DFS_ELM_USE_LFN 0
-#define RT_DFS_ELM_MAX_LFN 255
-#define RT_DFS_ELM_DRIVES 2
-#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096
-#define RT_DFS_ELM_REENTRANT
-#define RT_USING_DFS_DEVFS
/* Device Drivers */
#define RT_USING_DEVICE_IPC
+#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
#define RT_SERIAL_USING_DMA
+#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_I2C
#define RT_USING_PIN
#define RT_USING_SPI
+#define RT_USING_SFUD
+#define RT_SFUD_USING_FLASH_INFO_TABLE
+
+/* Using WiFi */
+
/* Using USB */
/* POSIX layer and C standard library */
-#define RT_USING_LIBC
-/* Network stack */
+/* Network */
+
+/* Socket abstraction layer */
+
/* light weight TCP/IP stack */
@@ -108,6 +102,9 @@
/* Modbus master and slave stack */
+/* AT commands */
+
+
/* VBUS(Virtual Software BUS) */
@@ -116,11 +113,6 @@
/* RT-Thread online packages */
-/* system packages */
-
-/* RT-Thread GUI Engine */
-
-
/* IoT - internet of things */
@@ -132,6 +124,9 @@
/* Wiced WiFi */
+/* IoT Cloud */
+
+
/* security packages */
@@ -144,10 +139,16 @@
/* tools packages */
+/* system packages */
+
+
+/* peripheral libraries and drivers */
+
+
/* miscellaneous packages */
-/* example package: hello */
+/* samples: kernel and components samples */
#define RT_USING_USART0
#define RT_USING_USART1
diff --git a/bsp/gd32e230k-start/rtconfig.py b/bsp/gd32e230k-start/rtconfig.py
index c631bc3e44..f953a5e67b 100644
--- a/bsp/gd32e230k-start/rtconfig.py
+++ b/bsp/gd32e230k-start/rtconfig.py
@@ -2,7 +2,7 @@ import os
# toolchains options
ARCH='arm'
-CPU='cortex-m4'
+CPU='cortex-m23'
CROSS_TOOL='keil'
if os.getenv('RTT_CC'):
@@ -71,8 +71,6 @@ elif PLATFORM == 'armcc':
EXEC_PATH += '/ARM/ARMCC/bin'
print(EXEC_PATH)
- CFLAGS += ' --c99'
-
if BUILD == 'debug':
CFLAGS += ' -g -O0'
AFLAGS += ' -g'
diff --git a/bsp/gd32e230k-start/template.uvoptx b/bsp/gd32e230k-start/template.uvoptx
index 8fc841b0e1..93d9c266ef 100644
--- a/bsp/gd32e230k-start/template.uvoptx
+++ b/bsp/gd32e230k-start/template.uvoptx
@@ -22,11 +22,11 @@
</DaveTm>
<Target>
- <TargetName>rt-thread_gd32f30x</TargetName>
+ <TargetName>rt-thread_gd32e230</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
- <CLKADS>16000000</CLKADS>
+ <CLKADS>12000000</CLKADS>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
@@ -73,7 +73,7 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
@@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
- <nTsel>4</nTsel>
+ <nTsel>14</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -114,18 +114,18 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
- <pMon>Segger\JL2CM3.dll</pMon>
+ <pMon>BIN\UL2V8M.DLL</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
- <Key>JL2CM3</Key>
- <Name>-U30000299 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000</Name>
+ <Key>UL2V8M</Key>
+ <Name>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32E230 -FS08000000 -FL010000 -FP0($$Device:GD32E230K8$Flash\GD32E230.FLM))</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
- <Key>UL2CM3</Key>
- <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL010000 -FP0($$Device:GD32F303ZE$Flash\GD32F30x_HD.FLM))</Name>
+ <Key>JL2CM3</Key>
+ <Name>-U30000299 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
diff --git a/bsp/gd32e230k-start/template.uvprojx b/bsp/gd32e230k-start/template.uvprojx
index 9b0a830d22..cf0ba886d1 100644
--- a/bsp/gd32e230k-start/template.uvprojx
+++ b/bsp/gd32e230k-start/template.uvprojx
@@ -7,23 +7,23 @@
<Targets>
<Target>
- <TargetName>rt-thread_gd32f30x</TargetName>
+ <TargetName>rt-thread_gd32e230</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
- <uAC6>0</uAC6>
+ <uAC6>1</uAC6>
<TargetOption>
<TargetCommonOption>
- <Device>GD32F303ZE</Device>
+ <Device>GD32E230K8</Device>
<Vendor>GigaDevice</Vendor>
- <PackID>GigaDevice.GD32F30x_DFP.1.0.1</PackID>
+ <PackID>GigaDevice.GD32E230_DFP.1.0.0</PackID>
<PackURL>http://gd32mcu.21ic.com/data/documents/yingyongruanjian</PackURL>
- <Cpu>IRAM(0x20000000-0x2000FFFF)IROM(0x08000000-0x0807FFFF) CLOCK(16000000) CPUTYPE("Cortex-M4")</Cpu>
+ <Cpu>IRAM(0x20000000,0x0002000) IROM(0x08000000,0x0010000) CPUTYPE("Cortex-M23") CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
- <StartupFile>"Startup\GD\GD32F30x\startup_gd32f30x_hd.s" ("GD32F30x Startup Code")</StartupFile>
- <FlashDriverDll>UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000)</FlashDriverDll>
+ <StartupFile></StartupFile>
+ <FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32E230 -FS08000000 -FL010000 -FP0($$Device:GD32E230K8$Flash\GD32E230.FLM))</FlashDriverDll>
<DeviceId>0</DeviceId>
- <RegisterFile>gd32f30x.h</RegisterFile>
+ <RegisterFile>$$Device:GD32E230K8$Device\Include\gd32e230.h</RegisterFile>
<MemoryEnv></MemoryEnv>
<Cmp></Cmp>
<Asm></Asm>
@@ -33,14 +33,14 @@
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
- <SFDFile>SFD\GD\GD32F30x\GD32F30x_HD.SFR</SFDFile>
+ <SFDFile>$$Device:GD32E230K8$SVD\GD32E230.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
<IncludePath></IncludePath>
<LibPath></LibPath>
- <RegisterFilePath>GD\GD32F30x\</RegisterFilePath>
- <DBRegisterFilePath>GD\GD32F30x\</DBRegisterFilePath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -49,7 +49,7 @@
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\build\</OutputDirectory>
- <OutputName>rtthread-gd32f30x</OutputName>
+ <OutputName>rtthread-gd32e230</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>0</CreateHexFile>
@@ -109,14 +109,14 @@
<ComprImg>1</ComprImg>
</CommonProperty>
<DllOption>
- <SimDllName>SARMCM3.DLL</SimDllName>
- <SimDllArguments> -REMAP</SimDllArguments>
- <SimDlgDll>DCM.DLL</SimDlgDll>
- <SimDlgDllArguments>-pCM3</SimDlgDllArguments>
- <TargetDllName>SARMCM3.DLL</TargetDllName>
- <TargetDllArguments></TargetDllArguments>
+ <SimDllName></SimDllName>
+ <SimDllArguments></SimDllArguments>
+ <SimDlgDll></SimDlgDll>
+ <SimDlgDllArguments></SimDlgDllArguments>
+ <TargetDllName>SARMV8M.DLL</TargetDllName>
+ <TargetDllArguments> -MPU</TargetDllArguments>
<TargetDlgDll>TCM.DLL</TargetDlgDll>
- <TargetDlgDllArguments>-pCM3</TargetDlgDllArguments>
+ <TargetDlgDllArguments>-pCM23</TargetDlgDllArguments>
</DllOption>
<DebugOption>
<OPTHX>
@@ -137,8 +137,8 @@
<DriverSelection>4096</DriverSelection>
</Flash1>
<bUseTDR>1</bUseTDR>
- <Flash2>BIN\UL2CM3.DLL</Flash2>
- <Flash3>"" ()</Flash3>
+ <Flash2>BIN\UL2V8M.DLL</Flash2>
+ <Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
@@ -174,7 +174,7 @@
<AdsLsxf>1</AdsLsxf>
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
- <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <AdsCpuType>"Cortex-M23"</AdsCpuType>
<RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
@@ -184,6 +184,7 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP>
+ <RvdsMve>0</RvdsMve>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@@ -192,7 +193,7 @@
<uLtcg>0</uLtcg>
<nSecure>0</nSecure>
<RoSelD>3</RoSelD>
- <RwSelD>4</RwSelD>
+ <RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
<OptFeed>0</OptFeed>
<NoZi1>0</NoZi1>
@@ -244,12 +245,12 @@
<IRAM>
<Type>0</Type>
<StartAddress>0x20000000</StartAddress>
- <Size>0x10000</Size>
+ <Size>0x2000</Size>
</IRAM>
<IROM>
<Type>1</Type>
<StartAddress>0x8000000</StartAddress>
- <Size>0x80000</Size>
+ <Size>0x10000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -274,7 +275,7 @@
<OCR_RVCT4>
<Type>1</Type>
<StartAddress>0x8000000</StartAddress>
- <Size>0x80000</Size>
+ <Size>0x10000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -299,7 +300,7 @@
<OCR_RVCT9>
<Type>0</Type>
<StartAddress>0x20000000</StartAddress>
- <Size>0x10000</Size>
+ <Size>0x2000</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -324,6 +325,7 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
<v6Lang>1</v6Lang>
<v6LangP>1</v6LangP>
@@ -387,10 +389,10 @@
<RTE>
<apis/>
<components>
- <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.0.1" condition="ARMv6_7_8-M Device">
- <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.0.1"/>
+ <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.2.0" condition="ARMv6_7_8-M Device">
+ <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.5.1"/>
<targetInfos>
- <targetInfo name="rt-thread_gd32f30x"/>
+ <targetInfo name="rt-thread_gd32e230"/>
</targetInfos>
</component>
</components>
diff --git a/libcpu/arm/cortex-m23/context_gcc.S b/libcpu/arm/cortex-m23/context_gcc.S
index d17a8aa12c..d9993247e2 100644
--- a/libcpu/arm/cortex-m23/context_gcc.S
+++ b/libcpu/arm/cortex-m23/context_gcc.S
@@ -5,26 +5,25 @@
*
* Change Logs:
* Date Author Notes
- * 2009-10-11 Bernard First version
- * 2010-12-29 onelife Modify for EFM32
- * 2011-06-17 onelife Merge all of the assembly source code into context_gcc.S
- * 2011-07-12 onelife Add interrupt context check function
- * 2013-06-18 aozima add restore MSP feature.
- * 2013-07-09 aozima enhancement hard fault exception handler.
+ * 2010-01-25 Bernard first version
+ * 2012-06-01 aozima set pendsv priority to 0xFF.
+ * 2012-08-17 aozima fixed bug: store r8 - r11.
+ * 2013-02-20 aozima port to gcc.
+ * 2013-06-18 aozima add restore MSP feature.
+ * 2013-11-04 bright fixed hardfault bug for gcc.
*/
- .cpu cortex-m3
+ .cpu cortex-m0
.fpu softvfp
.syntax unified
.thumb
.text
- .equ SCB_VTOR, 0xE000ED08 /* Vector Table Offset Register */
- .equ ICSR, 0xE000ED04 /* interrupt control state register */
- .equ PENDSVSET_BIT, 0x10000000 /* value to trigger PendSV exception */
-
- .equ SHPR3, 0xE000ED20 /* system priority register (3) */
- .equ PENDSV_PRI_LOWEST, 0x00FF0000 /* PendSV priority value (lowest) */
+ .equ SCB_VTOR, 0xE000ED08 /* Vector Table Offset Register */
+ .equ NVIC_INT_CTRL, 0xE000ED04 /* interrupt control state register */
+ .equ NVIC_SHPR3, 0xE000ED20 /* system priority register (3) */
+ .equ NVIC_PENDSV_PRI, 0x00FF0000 /* PendSV priority value (lowest) */
+ .equ NVIC_PENDSVSET, 0x10000000 /* value to trigger PendSV exception */
/*
* rt_base_t rt_hw_interrupt_disable();
@@ -61,7 +60,7 @@ rt_hw_context_switch:
LDR R3, [R2]
CMP R3, #1
BEQ _reswitch
- MOV R3, #1
+ MOVS R3, #1
STR R3, [R2]
LDR R2, =rt_interrupt_from_thread /* set rt_interrupt_from_thread */
@@ -71,8 +70,8 @@ _reswitch:
LDR R2, =rt_interrupt_to_thread /* set rt_interrupt_to_thread */
STR R1, [R2]
- LDR R0, =ICSR /* trigger the PendSV exception (causes context switch) */
- LDR R1, =PENDSVSET_BIT
+ LDR R0, =NVIC_INT_CTRL /* trigger the PendSV exception (causes context switch) */
+ LDR R1, =NVIC_PENDSVSET
STR R1, [R0]
BX LR
@@ -90,36 +89,56 @@ PendSV_Handler:
/* get rt_thread_switch_interrupt_flag */
LDR R0, =rt_thread_switch_interrupt_flag
LDR R1, [R0]
- CBZ R1, pendsv_exit /* pendsv aLReady handled */
+ CMP R1, #0x00
+ BEQ pendsv_exit /* pendsv aLReady handled */
/* clear rt_thread_switch_interrupt_flag to 0 */
- MOV R1, #0
+ MOVS R1, #0
STR R1, [R0]
LDR R0, =rt_interrupt_from_thread
LDR R1, [R0]
- CBZ R1, switch_to_thread /* skip register save at the first time */
+ CMP R1, #0x00
+ BEQ switch_to_thread /* skip register save at the first time */
- MRS R1, PSP /* get from thread stack pointer */
- STMFD R1!, {R4 - R11} /* push R4 - R11 register */
+ MRS R1, PSP /* get from thread stack pointer */
+
+ SUBS R1, R1, #0x20 /* space for {R4 - R7} and {R8 - R11} */
LDR R0, [R0]
STR R1, [R0] /* update from thread stack pointer */
+ STMIA R1!, {R4 - R7} /* push thread {R4 - R7} register to thread stack */
+
+ MOV R4, R8 /* mov thread {R8 - R11} to {R4 - R7} */
+ MOV R5, R9
+ MOV R6, R10
+ MOV R7, R11
+ STMIA R1!, {R4 - R7} /* push thread {R8 - R11} high register to thread stack */
switch_to_thread:
LDR R1, =rt_interrupt_to_thread
LDR R1, [R1]
LDR R1, [R1] /* load thread stack pointer */
- LDMFD R1!, {R4 - R11} /* pop R4 - R11 register */
+ LDMIA R1!, {R4 - R7} /* pop thread {R4 - R7} register from thread stack */
+ PUSH {R4 - R7} /* push {R4 - R7} to MSP for copy {R8 - R11} */
+
+ LDMIA R1!, {R4 - R7} /* pop thread {R8 - R11} high register from thread stack to {R4 - R7} */
+ MOV R8, R4 /* mov {R4 - R7} to {R8 - R11} */
+ MOV R9, R5
+ MOV R10, R6
+ MOV R11, R7
+
+ POP {R4 - R7} /* pop {R4 - R7} from MSP */
+
MSR PSP, R1 /* update stack pointer */
pendsv_exit:
/* restore interrupt */
MSR PRIMASK, R2
- ORR LR, LR, #0x04
- BX LR
-
+ MOVS R0, #0x04
+ RSBS R0, R0, #0x00
+ BX R0
/*
* void rt_hw_context_switch_to(rt_uint32 to);
* R0 --> to
@@ -132,34 +151,33 @@ rt_hw_context_switch_to:
/* set from thread to 0 */
LDR R1, =rt_interrupt_from_thread
- MOV R0, #0
+ MOVS R0, #0
STR R0, [R1]
/* set interrupt flag to 1 */
LDR R1, =rt_thread_switch_interrupt_flag
- MOV R0, #1
+ MOVS R0, #1
STR R0, [R1]
/* set the PendSV exception priority */
- LDR R0, =SHPR3
- LDR R1, =PENDSV_PRI_LOWEST
- LDR.W R2, [R0,#0] /* read */
- ORR R1, R1, R2 /* modify */
- STR R1, [R0] /* write-back */
+ LDR R0, =NVIC_SHPR3
+ LDR R1, =NVIC_PENDSV_PRI
+ LDR R2, [R0,#0x00] /* read */
+ ORRS R1, R1, R2 /* modify */
+ STR R1, [R0] /* write-back */
- LDR R0, =ICSR /* trigger the PendSV exception (causes context switch) */
- LDR R1, =PENDSVSET_BIT
+ LDR R0, =NVIC_INT_CTRL /* trigger the PendSV exception (causes context switch) */
+ LDR R1, =NVIC_PENDSVSET
STR R1, [R0]
-
+ NOP
/* restore MSP */
- LDR r0, =SCB_VTOR
- LDR r0, [r0]
- LDR r0, [r0]
+ LDR R0, =SCB_VTOR
+ LDR R0, [R0]
+ LDR R0, [R0]
NOP
- MSR msp, r0
+ MSR MSP, R0
/* enable interrupts at processor level */
- CPSIE F
CPSIE I
/* never reach here! */
@@ -175,29 +193,11 @@ rt_hw_interrupt_thread_switch:
.type HardFault_Handler, %function
HardFault_Handler:
/* get current context */
- MRS r0, msp /* get fault context from handler. */
- TST lr, #0x04 /* if(!EXC_RETURN[2]) */
- BEQ _get_sp_done
- MRS r0, psp /* get fault context from thread. */
-_get_sp_done:
-
- STMFD r0!, {r4 - r11} /* push r4 - r11 register */
- STMFD r0!, {lr} /* push exec_return register */
-
- TST lr, #0x04 /* if(!EXC_RETURN[2]) */
- BEQ _update_msp
- MSR psp, r0 /* update stack pointer to PSP. */
- B _update_done
-_update_msp:
- MSR msp, r0 /* update stack pointer to MSP. */
-_update_done:
-
+ MRS R0, PSP /* get fault thread stack pointer */
PUSH {LR}
BL rt_hw_hard_fault_exception
- POP {LR}
+ POP {PC}
- ORR LR, LR, #0x04
- BX LR
/*
* rt_uint32_t rt_hw_interrupt_check(void);
diff --git a/libcpu/arm/cortex-m23/context_iar.S b/libcpu/arm/cortex-m23/context_iar.S
index 91645c48b3..50d3781359 100644
--- a/libcpu/arm/cortex-m23/context_iar.S
+++ b/libcpu/arm/cortex-m23/context_iar.S
@@ -5,20 +5,20 @@
; *
; * Change Logs:
; * Date Author Notes
-; * 2009-01-17 Bernard first version
-; * 2009-09-27 Bernard add protect when contex switch occurs
+; * 2010-01-25 Bernard first version
+; * 2012-06-01 aozima set pendsv priority to 0xFF.
+; * 2012-08-17 aozima fixed bug: store r8 - r11.
; * 2013-06-18 aozima add restore MSP feature.
-; * 2013-07-09 aozima enhancement hard fault exception handler.
; */
;/**
-; * @addtogroup cortex-m3
+; * @addtogroup CORTEX-M0
; */
;/*@{*/
SCB_VTOR EQU 0xE000ED08 ; Vector Table Offset Register
NVIC_INT_CTRL EQU 0xE000ED04 ; interrupt control state register
-NVIC_SYSPRI2 EQU 0xE000ED20 ; system priority register (2)
+NVIC_SHPR3 EQU 0xE000ED20 ; system priority register (2)
NVIC_PENDSV_PRI EQU 0x00FF0000 ; PendSV priority value (lowest)
NVIC_PENDSVSET EQU 0x10000000 ; value to trigger PendSV exception
@@ -62,7 +62,7 @@ rt_hw_context_switch:
LDR r3, [r2]
CMP r3, #1
BEQ _reswitch
- MOV r3, #1
+ MOVS r3, #0x1
STR r3, [r2]
LDR r2, =rt_interrupt_from_thread ; set rt_interrupt_from_thread
@@ -90,65 +90,91 @@ PendSV_Handler:
; get rt_thread_switch_interrupt_flag
LDR r0, =rt_thread_switch_interrupt_flag
LDR r1, [r0]
- CBZ r1, pendsv_exit ; pendsv already handled
+ CMP r1, #0x00
+ BEQ pendsv_exit ; pendsv already handled
; clear rt_thread_switch_interrupt_flag to 0
- MOV r1, #0x00
+ MOVS r1, #0x00
STR r1, [r0]
LDR r0, =rt_interrupt_from_thread
LDR r1, [r0]
- CBZ r1, switch_to_thread ; skip register save at the first time
+ CMP r1, #0x00
+ BEQ switch_to_thread ; skip register save at the first time
MRS r1, psp ; get from thread stack pointer
- STMFD r1!, {r4 - r11} ; push r4 - r11 register
+
+ SUBS r1, r1, #0x20 ; space for {r4 - r7} and {r8 - r11}
LDR r0, [r0]
STR r1, [r0] ; update from thread stack pointer
+ STMIA r1!, {r4 - r7} ; push thread {r4 - r7} register to thread stack
+
+ MOV r4, r8 ; mov thread {r8 - r11} to {r4 - r7}
+ MOV r5, r9
+ MOV r6, r10
+ MOV r7, r11
+ STMIA r1!, {r4 - r7} ; push thread {r8 - r11} high register to thread stack
+
switch_to_thread
LDR r1, =rt_interrupt_to_thread
LDR r1, [r1]
LDR r1, [r1] ; load thread stack pointer
- LDMFD r1!, {r4 - r11} ; pop r4 - r11 register
+ LDMIA r1!, {r4 - r7} ; pop thread {r4 - r7} register from thread stack
+ PUSH {r4 - r7} ; push {r4 - r7} to MSP for copy {r8 - r11}
+
+ LDMIA r1!, {r4 - r7} ; pop thread {r8 - r11} high register from thread stack to {r4 - r7}
+ MOV r8, r4 ; mov {r4 - r7} to {r8 - r11}
+ MOV r9, r5
+ MOV r10, r6
+ MOV r11, r7
+
+ POP {r4 - r7} ; pop {r4 - r7} from MSP
+
MSR psp, r1 ; update stack pointer
pendsv_exit
; restore interrupt
MSR PRIMASK, r2
- ORR lr, lr, #0x04
- BX lr
+ MOVS r0, #0x04
+ RSBS r0, r0, #0x00
+ BX r0
;/*
; * void rt_hw_context_switch_to(rt_uint32 to);
; * r0 --> to
+; * this fucntion is used to perform the first thread switch
; */
EXPORT rt_hw_context_switch_to
rt_hw_context_switch_to:
+ ; set to thread
LDR r1, =rt_interrupt_to_thread
STR r0, [r1]
; set from thread to 0
LDR r1, =rt_interrupt_from_thread
- MOV r0, #0x0
+ MOVS r0, #0x0
STR r0, [r1]
; set interrupt flag to 1
LDR r1, =rt_thread_switch_interrupt_flag
- MOV r0, #1
+ MOVS r0, #1
STR r0, [r1]
; set the PendSV exception priority
- LDR r0, =NVIC_SYSPRI2
+ LDR r0, =NVIC_SHPR3
LDR r1, =NVIC_PENDSV_PRI
- LDR.W r2, [r0,#0x00] ; read
- ORR r1,r1,r2 ; modify
+ LDR r2, [r0,#0x00] ; read
+ ORRS r1,r1,r2 ; modify
STR r1, [r0] ; write-back
- LDR r0, =NVIC_INT_CTRL ; trigger the PendSV exception (causes context switch)
+ ; trigger the PendSV exception (causes context switch)
+ LDR r0, =NVIC_INT_CTRL
LDR r1, =NVIC_PENDSVSET
STR r1, [r0]
+ NOP
; restore MSP
LDR r0, =SCB_VTOR
@@ -158,7 +184,6 @@ rt_hw_context_switch_to:
MSR msp, r0
; enable interrupts at processor level
- CPSIE F
CPSIE I
; never reach here!
@@ -173,30 +198,9 @@ rt_hw_interrupt_thread_switch:
HardFault_Handler:
; get current context
- MRS r0, msp ; get fault context from handler.
- TST lr, #0x04 ; if(!EXC_RETURN[2])
- BEQ _get_sp_done
- MRS r0, psp ; get fault context from thread.
-_get_sp_done
-
- STMFD r0!, {r4 - r11} ; push r4 - r11 register
- ;STMFD r0!, {lr} ; push exec_return register
- SUB r0, r0, #0x04
- STR lr, [r0]
-
- TST lr, #0x04 ; if(!EXC_RETURN[2])
- BEQ _update_msp
- MSR psp, r0 ; update stack pointer to PSP.
- B _update_done
-_update_msp
- MSR msp, r0 ; update stack pointer to MSP.
-_update_done
-
+ MRS r0, psp ; get fault thread stack pointer
PUSH {lr}
BL rt_hw_hard_fault_exception
- POP {lr}
-
- ORR lr, lr, #0x04
- BX lr
+ POP {pc}
END
diff --git a/libcpu/arm/cortex-m23/context_rvds.S b/libcpu/arm/cortex-m23/context_rvds.S
index c0a2130703..54145773d3 100644
--- a/libcpu/arm/cortex-m23/context_rvds.S
+++ b/libcpu/arm/cortex-m23/context_rvds.S
@@ -5,9 +5,10 @@
; *
; * Change Logs:
; * Date Author Notes
-; * 2009-01-17 Bernard first version
+; * 2010-01-25 Bernard first version
+; * 2012-06-01 aozima set pendsv priority to 0xFF.
+; * 2012-08-17 aozima fixed bug: store r8 - r11.
; * 2013-06-18 aozima add restore MSP feature.
-; * 2013-07-09 aozima enhancement hard fault exception handler.
; */
;/**
@@ -17,7 +18,7 @@
SCB_VTOR EQU 0xE000ED08 ; Vector Table Offset Register
NVIC_INT_CTRL EQU 0xE000ED04 ; interrupt control state register
-NVIC_SYSPRI2 EQU 0xE000ED20 ; system priority register (2)
+NVIC_SHPR3 EQU 0xE000ED20 ; system priority register (2)
NVIC_PENDSV_PRI EQU 0x00FF0000 ; PendSV priority value (lowest)
NVIC_PENDSVSET EQU 0x10000000 ; value to trigger PendSV exception
@@ -45,8 +46,8 @@ rt_hw_interrupt_disable PROC
; */
rt_hw_interrupt_enable PROC
EXPORT rt_hw_interrupt_enable
- MSR PRIMASK, r0
- BX LR
+ MSR PRIMASK, r0
+ BX LR
ENDP
;/*
@@ -64,7 +65,7 @@ rt_hw_context_switch PROC
LDR r3, [r2]
CMP r3, #1
BEQ _reswitch
- MOV r3, #1
+ MOVS r3, #0x01
STR r3, [r2]
LDR r2, =rt_interrupt_from_thread ; set rt_interrupt_from_thread
@@ -83,7 +84,7 @@ _reswitch
; r0 --> switch from thread stack
; r1 --> switch to thread stack
; psr, pc, lr, r12, r3, r2, r1, r0 are pushed into [from] stack
-PendSV_Handler PROC
+PendSV_Handler PROC
EXPORT PendSV_Handler
; disable interrupt to protect context switch
@@ -93,35 +94,57 @@ PendSV_Handler PROC
; get rt_thread_switch_interrupt_flag
LDR r0, =rt_thread_switch_interrupt_flag
LDR r1, [r0]
- CBZ r1, pendsv_exit ; pendsv already handled
+ CMP r1, #0x00
+ BEQ pendsv_exit ; pendsv already handled
; clear rt_thread_switch_interrupt_flag to 0
- MOV r1, #0x00
+ MOVS r1, #0x00
STR r1, [r0]
LDR r0, =rt_interrupt_from_thread
LDR r1, [r0]
- CBZ r1, switch_to_thread ; skip register save at the first time
+ CMP r1, #0x00
+ BEQ switch_to_thread ; skip register save at the first time
MRS r1, psp ; get from thread stack pointer
- STMFD r1!, {r4 - r11} ; push r4 - r11 register
+
+ SUBS r1, r1, #0x20 ; space for {r4 - r7} and {r8 - r11}
LDR r0, [r0]
STR r1, [r0] ; update from thread stack pointer
+ STMIA r1!, {r4 - r7} ; push thread {r4 - r7} register to thread stack
+
+ MOV r4, r8 ; mov thread {r8 - r11} to {r4 - r7}
+ MOV r5, r9
+ MOV r6, r10
+ MOV r7, r11
+ STMIA r1!, {r4 - r7} ; push thread {r8 - r11} high register to thread stack
+
switch_to_thread
LDR r1, =rt_interrupt_to_thread
LDR r1, [r1]
LDR r1, [r1] ; load thread stack pointer
- LDMFD r1!, {r4 - r11} ; pop r4 - r11 register
+ LDMIA r1!, {r4 - r7} ; pop thread {r4 - r7} register from thread stack
+ PUSH {r4 - r7} ; push {r4 - r7} to MSP for copy {r8 - r11}
+
+ LDMIA r1!, {r4 - r7} ; pop thread {r8 - r11} high register from thread stack to {r4 - r7}
+ MOV r8, r4 ; mov {r4 - r7} to {r8 - r11}
+ MOV r9, r5
+ MOV r10, r6
+ MOV r11, r7
+
+ POP {r4 - r7} ; pop {r4 - r7} from MSP
+
MSR psp, r1 ; update stack pointer
pendsv_exit
; restore interrupt
MSR PRIMASK, r2
- ORR lr, lr, #0x04
- BX lr
+ MOVS r0, #0x04
+ RSBS r0, r0, #0x00
+ BX r0
ENDP
;/*
@@ -137,19 +160,19 @@ rt_hw_context_switch_to PROC
; set from thread to 0
LDR r1, =rt_interrupt_from_thread
- MOV r0, #0x0
+ MOVS r0, #0x0
STR r0, [r1]
; set interrupt flag to 1
LDR r1, =rt_thread_switch_interrupt_flag
- MOV r0, #1
+ MOVS r0, #1
STR r0, [r1]
; set the PendSV exception priority
- LDR r0, =NVIC_SYSPRI2
+ LDR r0, =NVIC_SHPR3
LDR r1, =NVIC_PENDSV_PRI
- LDR.W r2, [r0,#0x00] ; read
- ORR r1,r1,r2 ; modify
+ LDR r2, [r0,#0x00] ; read
+ ORRS r1,r1,r2 ; modify
STR r1, [r0] ; write-back
; trigger the PendSV exception (causes context switch)
@@ -164,7 +187,6 @@ rt_hw_context_switch_to PROC
MSR msp, r0
; enable interrupts at processor level
- CPSIE F
CPSIE I
; never reach here!
@@ -177,29 +199,15 @@ rt_hw_interrupt_thread_switch PROC
ENDP
IMPORT rt_hw_hard_fault_exception
- EXPORT HardFault_Handler
+
HardFault_Handler PROC
+ EXPORT HardFault_Handler
; get current context
- TST lr, #0x04 ; if(!EXC_RETURN[2])
- ITE EQ
- MRSEQ r0, msp ; [2]=0 ==> Z=1, get fault context from handler.
- MRSNE r0, psp ; [2]=1 ==> Z=0, get fault context from thread.
-
- STMFD r0!, {r4 - r11} ; push r4 - r11 register
- STMFD r0!, {lr} ; push exec_return register
-
- TST lr, #0x04 ; if(!EXC_RETURN[2])
- ITE EQ
- MSREQ msp, r0 ; [2]=0 ==> Z=1, update stack pointer to MSP.
- MSRNE psp, r0 ; [2]=1 ==> Z=0, update stack pointer to PSP.
-
+ MRS r0, psp ; get fault thread stack pointer
PUSH {lr}
BL rt_hw_hard_fault_exception
- POP {lr}
-
- ORR lr, lr, #0x04
- BX lr
+ POP {pc}
ENDP
ALIGN 4
diff --git a/libcpu/arm/cortex-m23/cpuport.c b/libcpu/arm/cortex-m23/cpuport.c
index a386747750..5d36fa11fe 100644
--- a/libcpu/arm/cortex-m23/cpuport.c
+++ b/libcpu/arm/cortex-m23/cpuport.c
@@ -4,13 +4,11 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
- * Date Author Notes
- * 2009-01-05 Bernard first version
- * 2011-02-14 onelife Modify for EFM32
- * 2011-06-17 onelife Merge all of the C source code into cpuport.c
- * 2012-12-23 aozima stack addr align to 8byte.
- * 2012-12-29 Bernard Add exception hook.
- * 2013-07-09 aozima enhancement hard fault exception handler.
+ * Date Author Notes
+ * 2010-01-25 Bernard first version
+ * 2012-05-31 aozima Merge all of the C source code into cpuport.c
+ * 2012-08-17 aozima fixed bug: store r8 - r11.
+ * 2012-12-23 aozima stack addr align to 8byte.
*/
#include <rtthread.h>
@@ -29,11 +27,13 @@ struct exception_stack_frame
struct stack_frame
{
- /* r4 ~ r11 register */
+ /* r4 ~ r7 low register */
rt_uint32_t r4;
rt_uint32_t r5;
rt_uint32_t r6;
rt_uint32_t r7;
+
+ /* r8 ~ r11 high register */
rt_uint32_t r8;
rt_uint32_t r9;
rt_uint32_t r10;
@@ -45,8 +45,6 @@ struct stack_frame
/* flag in interrupt handling */
rt_uint32_t rt_interrupt_from_thread, rt_interrupt_to_thread;
rt_uint32_t rt_thread_switch_interrupt_flag;
-/* exception hook */
-static rt_err_t (*rt_exception_hook)(void *context) = RT_NULL;
/**
* This function will initialize thread stack
@@ -92,312 +90,46 @@ rt_uint8_t *rt_hw_stack_init(void *tentry,
return stk;
}
+extern long list_thread(void);
+extern rt_thread_t rt_current_thread;
/**
- * This function set the hook, which is invoked on fault exception handling.
- *
- * @param exception_handle the exception handling hook function.
+ * fault exception handling
*/
-void rt_hw_exception_install(rt_err_t (*exception_handle)(void* context))
+void rt_hw_hard_fault_exception(struct exception_stack_frame *contex)
{
- rt_exception_hook = exception_handle;
+ rt_kprintf("psr: 0x%08x\n", contex->psr);
+ rt_kprintf(" pc: 0x%08x\n", contex->pc);
+ rt_kprintf(" lr: 0x%08x\n", contex->lr);
+ rt_kprintf("r12: 0x%08x\n", contex->r12);
+ rt_kprintf("r03: 0x%08x\n", contex->r3);
+ rt_kprintf("r02: 0x%08x\n", contex->r2);
+ rt_kprintf("r01: 0x%08x\n", contex->r1);
+ rt_kprintf("r00: 0x%08x\n", contex->r0);
+
+ rt_kprintf("hard fault on thread: %s\n", rt_current_thread->name);
+
+#ifdef RT_USING_FINSH
+ list_thread();
+#endif
+
+ while (1);
}
#define SCB_CFSR (*(volatile const unsigned *)0xE000ED28) /* Configurable Fault Status Register */
#define SCB_HFSR (*(volatile const unsigned *)0xE000ED2C) /* HardFault Status Register */
#define SCB_MMAR (*(volatile const unsigned *)0xE000ED34) /* MemManage Fault Address register */
#define SCB_BFAR (*(volatile const unsigned *)0xE000ED38) /* Bus Fault Address Register */
-#define SCB_AIRCR (*(volatile unsigned long *)0xE000ED0C) /* Reset control Address Register */
+#define SCB_AIRCR (*(volatile unsigned long *)0xE000ED00) /* Reset control Address Register */
#define SCB_RESET_VALUE 0x05FA0004 /* Reset value, write to SCB_AIRCR can reset cpu */
#define SCB_CFSR_MFSR (*(volatile const unsigned char*)0xE000ED28) /* Memory-management Fault Status Register */
#define SCB_CFSR_BFSR (*(volatile const unsigned char*)0xE000ED29) /* Bus Fault Status Register */
#define SCB_CFSR_UFSR (*(volatile const unsigned short*)0xE000ED2A) /* Usage Fault Status Register */
-#ifdef RT_USING_FINSH
-static void usage_fault_track(void)
-{
- rt_kprintf("usage fault:\n");
- rt_kprintf("SCB_CFSR_UFSR:0x%02X ", SCB_CFSR_UFSR);
-
- if(SCB_CFSR_UFSR & (1<<0))
- {
- /* [0]:UNDEFINSTR */
- rt_kprintf("UNDEFINSTR ");
- }
-
- if(SCB_CFSR_UFSR & (1<<1))
- {
- /* [1]:INVSTATE */
- rt_kprintf("INVSTATE ");
- }
-
- if(SCB_CFSR_UFSR & (1<<2))
- {
- /* [2]:INVPC */
- rt_kprintf("INVPC ");
- }
-
- if(SCB_CFSR_UFSR & (1<<3))
- {
- /* [3]:NOCP */
- rt_kprintf("NOCP ");
- }
-
- if(SCB_CFSR_UFSR & (1<<8))
- {
- /* [8]:UNALIGNED */
- rt_kprintf("UNALIGNED ");
- }
-
- if(SCB_CFSR_UFSR & (1<<9))
- {
- /* [9]:DIVBYZERO */
- rt_kprintf("DIVBYZERO ");
- }
-
- rt_kprintf("\n");
-}
-
-static void bus_fault_track(void)
-{
- rt_kprintf("bus fault:\n");
- rt_kprintf("SCB_CFSR_BFSR:0x%02X ", SCB_CFSR_BFSR);
-
- if(SCB_CFSR_BFSR & (1<<0))
- {
- /* [0]:IBUSERR */
- rt_kprintf("IBUSERR ");
- }
-
- if(SCB_CFSR_BFSR & (1<<1))
- {
- /* [1]:PRECISERR */
- rt_kprintf("PRECISERR ");
- }
-
- if(SCB_CFSR_BFSR & (1<<2))
- {
- /* [2]:IMPRECISERR */
- rt_kprintf("IMPRECISERR ");
- }
-
- if(SCB_CFSR_BFSR & (1<<3))
- {
- /* [3]:UNSTKERR */
- rt_kprintf("UNSTKERR ");
- }
-
- if(SCB_CFSR_BFSR & (1<<4))
- {
- /* [4]:STKERR */
- rt_kprintf("STKERR ");
- }
-
- if(SCB_CFSR_BFSR & (1<<7))
- {
- rt_kprintf("SCB->BFAR:%08X\n", SCB_BFAR);
- }
- else
- {
- rt_kprintf("\n");
- }
-}
-
-static void mem_manage_fault_track(void)
-{
- rt_kprintf("mem manage fault:\n");
- rt_kprintf("SCB_CFSR_MFSR:0x%02X ", SCB_CFSR_MFSR);
-
- if(SCB_CFSR_MFSR & (1<<0))
- {
- /* [0]:IACCVIOL */
- rt_kprintf("IACCVIOL ");
- }
-
- if(SCB_CFSR_MFSR & (1<<1))
- {
- /* [1]:DACCVIOL */
- rt_kprintf("DACCVIOL ");
- }
-
- if(SCB_CFSR_MFSR & (1<<3))
- {
- /* [3]:MUNSTKERR */
- rt_kprintf("MUNSTKERR ");
- }
-
- if(SCB_CFSR_MFSR & (1<<4))
- {
- /* [4]:MSTKERR */
- rt_kprintf("MSTKERR ");
- }
-
- if(SCB_CFSR_MFSR & (1<<7))
- {
- /* [7]:MMARVALID */
- rt_kprintf("SCB->MMAR:%08X\n", SCB_MMAR);
- }
- else
- {
- rt_kprintf("\n");
- }
-}
-
-static void hard_fault_track(void)
-{
- if(SCB_HFSR & (1UL<<1))
- {
- /* [1]:VECTBL, Indicates hard fault is caused by failed vector fetch. */
- rt_kprintf("failed vector fetch\n");
- }
-
- if(SCB_HFSR & (1UL<<30))
- {
- /* [30]:FORCED, Indicates hard fault is taken because of bus fault,
- memory management fault, or usage fault. */
- if(SCB_CFSR_BFSR)
- {
- bus_fault_track();
- }
-
- if(SCB_CFSR_MFSR)
- {
- mem_manage_fault_track();
- }
-
- if(SCB_CFSR_UFSR)
- {
- usage_fault_track();
- }
- }
-
- if(SCB_HFSR & (1UL<<31))
- {
- /* [31]:DEBUGEVT, Indicates hard fault is triggered by debug event. */
- rt_kprintf("debug event\n");
- }
-}
-#endif /* RT_USING_FINSH */
-
-struct exception_info
-{
- rt_uint32_t exc_return;
- struct stack_frame stack_frame;
-};
-
-/*
- * fault exception handler
- */
-void rt_hw_hard_fault_exception(struct exception_info * exception_info)
-{
- extern long list_thread(void);
- struct stack_frame* context = &exception_info->stack_frame;
-
- if (rt_exception_hook != RT_NULL)
- {
- rt_err_t result;
-
- result = rt_exception_hook(exception_info);
- if (result == RT_EOK)
- return;
- }
-
- rt_kprintf("psr: 0x%08x\n", context->exception_stack_frame.psr);
-
- rt_kprintf("r00: 0x%08x\n", context->exception_stack_frame.r0);
- rt_kprintf("r01: 0x%08x\n", context->exception_stack_frame.r1);
- rt_kprintf("r02: 0x%08x\n", context->exception_stack_frame.r2);
- rt_kprintf("r03: 0x%08x\n", context->exception_stack_frame.r3);
- rt_kprintf("r04: 0x%08x\n", context->r4);
- rt_kprintf("r05: 0x%08x\n", context->r5);
- rt_kprintf("r06: 0x%08x\n", context->r6);
- rt_kprintf("r07: 0x%08x\n", context->r7);
- rt_kprintf("r08: 0x%08x\n", context->r8);
- rt_kprintf("r09: 0x%08x\n", context->r9);
- rt_kprintf("r10: 0x%08x\n", context->r10);
- rt_kprintf("r11: 0x%08x\n", context->r11);
- rt_kprintf("r12: 0x%08x\n", context->exception_stack_frame.r12);
- rt_kprintf(" lr: 0x%08x\n", context->exception_stack_frame.lr);
- rt_kprintf(" pc: 0x%08x\n", context->exception_stack_frame.pc);
-
- if(exception_info->exc_return & (1 << 2) )
- {
- rt_kprintf("hard fault on thread: %s\r\n\r\n", rt_thread_self()->name);
-
-#ifdef RT_USING_FINSH
- list_thread();
-#endif /* RT_USING_FINSH */
- }
- else
- {
- rt_kprintf("hard fault on handler\r\n\r\n");
- }
-
-#ifdef RT_USING_FINSH
- hard_fault_track();
-#endif /* RT_USING_FINSH */
-
- while (1);
-}
-
-/**
- * shutdown CPU
- */
-void rt_hw_cpu_shutdown(void)
-{
- rt_kprintf("shutdown...\n");
-
- RT_ASSERT(0);
-}
-
/**
* reset CPU
*/
RT_WEAK void rt_hw_cpu_reset(void)
{
- SCB_AIRCR = SCB_RESET_VALUE;
-}
-
-#ifdef RT_USING_CPU_FFS
-/**
- * This function finds the first bit set (beginning with the least significant bit)
- * in value and return the index of that bit.
- *
- * Bits are numbered starting at 1 (the least significant bit). A return value of
- * zero from any of these functions means that the argument was zero.
- *
- * @return return the index of the first bit set. If value is 0, then this function
- * shall return 0.
- */
-#if defined(__CC_ARM)
-__asm int __rt_ffs(int value)
-{
- CMP r0, #0x00
- BEQ exit
-
- RBIT r0, r0
- CLZ r0, r0
- ADDS r0, r0, #0x01
-
-exit
- BX lr
+ SCB_AIRCR = SCB_RESET_VALUE;//((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |SCB_AIRCR_SYSRESETREQ_Msk);
}
-#elif defined(__IAR_SYSTEMS_ICC__)
-int __rt_ffs(int value)
-{
- if (value == 0) return value;
-
- asm("RBIT %0, %1" : "=r"(value) : "r"(value));
- asm("CLZ %0, %1" : "=r"(value) : "r"(value));
- asm("ADDS %0, %1, #0x01" : "=r"(value) : "r"(value));
-
- return value;
-}
-#elif defined(__GNUC__)
-int __rt_ffs(int value)
-{
- return __builtin_ffs(value);
-}
-#endif
-
-#endif