本帖最后由 xhackerustc 于 2024-5-13 23:20 编辑
与https://bbs.21ic.com/icview-3375412-1-1.html 一样也是充分利用APM32F411大sram的特性,在开发阶段尽可能避免烧写flash,从而加快开发验证速度和延长flash寿命。只不过上次帖子是裸机程序,这次换成RT-Thread RTOS的bring up和开发,本帖所用原理对于其它芯片bring up RT-Thread时同样适用。在第三个测评贴我们已经在RT-Thread主线仓库中bring up好一个基本的系统,有uart和gpio,那么接下来SPI、ADC、I2C这些在RT-Thread中一个一个bring up过程其实可以分块测试,并由sram启动。到最后把所有外设bsp都bring up完毕后再整合起来,烧录flash后全部验证一次。
方法和上次帖子基本差不多,重点是添加一个适合于sram用的RT-Thread link script,基于目前已有的bsp/apm32/apm32f411v-tinyboard/board/linker_scripts/link.lds比较简单,删除section对于FLASH的使用全挪进SRAM中,笔者改好的bsp/apm32/apm32f411v-tinyboard/board/linker_scripts/link_ram.lds如下:
然后修改bsp/apm32/apm32f411v-tinyboard/rtconfig.py使用sram版本的link script如下:
- diff --git a/bsp/apm32/apm32f411v-tinyboard/rtconfig.py b/bsp/apm32/apm32f411v-tinyboard/r
- tconfig.py
- index 37b0d21d3a..e354b55a49 100644
- --- a/bsp/apm32/apm32f411v-tinyboard/rtconfig.py
- +++ b/bsp/apm32/apm32f411v-tinyboard/rtconfig.py
- @@ -46,7 +46,7 @@ if PLATFORM == 'gcc':
- DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sect
- ions -fdata-sections'
- CFLAGS = DEVICE + ' -Dgcc'
- AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
- - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds'
- + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link_ram.lds'
- CPATH = ''
- LPATH = ''
再修改下bsp/apm32/libraries/APM32F4xx_Library/Device/Geehy/APM32F4xx/Source/system_apm32f4xx.c,定义VECT_TAB_SRAM
- --- a/bsp/apm32/libraries/APM32F4xx_Library/Device/Geehy/APM32F4xx/Source/system_apm32f4xx.c
- +++ b/bsp/apm32/libraries/APM32F4xx_Library/Device/Geehy/APM32F4xx/Source/system_apm32f4xx.c
- @@ -43,7 +43,7 @@
- /* #define DATA_IN_ExtSRAM */
- /* Uncomment the following line if you need to relocate your vector Table in Internal SRAM. */
- -/* #define VECT_TAB_SRAM */
- +#define VECT_TAB_SRAM
编译后再由pyocd加载进sram重启就能丝般顺滑地从sram启动RT-Thread了
|