[STM32F4] 【STM32F469I试用】移植rt-thread

[复制链接]
 楼主| blueskycoco 发表于 2016-1-11 17:31 | 显示全部楼层 |阅读模式
本帖最后由 blueskycoco 于 2016-1-11 20:38 编辑

拿到这块板子有一段时间了,苦于年底公司事情实在是太多,一直没时间来玩。今天抽了点空把rt-thread弄了上去,发现效果还不错,速度比早期的几款disco系列的板子快多了。以后有空了再把ucos,ucgui,uclinux都弄上去玩玩,这么大的屏幕,不玩下qt实在有点亏。

下面是移植rt-thread的步骤。从www.rt-thread.org下载源码

1 复制bsp下的stm32f40x文件夹,将里面的Libraries文件下的两个文件夹删除,替换刚才www.st.com下载的对应于stm32f469ni这颗芯片的标准库(其实不替换也行,主要是st的兼容性做的太好了:lol)
2 修改\bsp\stm32f469\Libraries\SConscript 为下面这样
   # The set of source files associated with this SConscript file.
src = Split("""
CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
""")

src += Glob('STM32F4xx_StdPeriph_Driver/src/*.c')


#add for startup script
if rtconfig.CROSS_TOOL == 'gcc':
     src = src + ['CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc_ride7/startup_stm32f429_439xx.s']
elif rtconfig.CROSS_TOOL == 'keil':
     src = src + ['CMSIS/ST/STM32F4xx/Source/Templates/arm/startup_stm32f4xx.s']
# elif rtconfig.CROSS_TOOL == 'iar':
    # src = src + ['CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/iar/' + startup_scripts[rtconfig.STM32_TYPE]]

path = [cwd + '/STM32F4xx_StdPeriph_Driver/inc',
    cwd + '/CMSIS/Device/ST/STM32F4xx/Include',
    cwd + '/CMSIS/Include']

CPPDEFINES = ['USE_STDPERIPH_DRIVER', rtconfig.STM32_TYPE]
#CPPDEFINES = ['USE_STDPERIPH_DRIVER']

主要是加入Device和加入rtconfig.STM32_TYPE这两个。

3 修改rtconfig.py 加入了stm32f469ni的类型定义
STM32_TYPE = 'STM32F469_479xx'

4 修改rtconfig.h
//#define RT_USING_UART1
//#define RT_USING_UART2
#define RT_USING_UART3
由于这块板子的控制台串口用的是UART3,所以将其打开,其他的注释掉,有兴趣的话可以把其他所有的串口支持都加上。

5 修改stm32_rom.ld
MEMORY
{
    CODE (rx) : ORIGIN = 0x08000000, LENGTH = 2048k /* 1024KB flash */
    DATA (rw) : ORIGIN = 0x20000000, LENGTH =  320k /* 128K sram */
}

这个是gcc下的链接配置文件,主要改下flash和sram的大小,这个芯片应该是支持384k的,为了保险起见(担心内存不连续),没用后面的64K

6 修改usart.c
将串口的管脚配置上
#define UART3_GPIO_TX       GPIO_Pin_10
#define UART3_TX_PIN_SOURCE GPIO_PinSource10
#define UART3_GPIO_RX       GPIO_Pin_11
#define UART3_RX_PIN_SOURCE GPIO_PinSource11
#define UART3_GPIO          GPIOB
#define UART3_GPIO_RCC      RCC_AHB1Periph_GPIOB
#define RCC_APBPeriph_UART3 RCC_APB1Periph_USART3


7 编译
scons.bat
得到rtthread.bin,就可以用st的下载工具去下载了。(将下面文件的后缀名pdf改为bin就可以下载到板子了)
rtthread.pdf (69.48 KB, 下载次数: 22)
8 下载的时候是要用最新的st下载工具,否则会报错的。
9 串口打印消息
QQ截图20160111173358.png
stm32f469nih6-rtthread.7z.001.zip (4 MB, 下载次数: 39)


stm32f469nih6-rtthread.7z.002.zip (4 MB, 下载次数: 35)

stm32f469nih6-rtthread.7z.003.zip (2.27 MB, 下载次数: 26)





huangcunxiake 发表于 2016-1-11 17:36 | 显示全部楼层
起初RT-Thread是一个实时的内核(全抢占优先级调度,调度器时间复杂度O(1)),但在发展过程中,RT-Thread实时操作系统得到了来自全国嵌入式开发工程师的鼎力支持,为RT-Thread添砖加瓦,现在它不仅仅是一款高效、稳定的实时核心,也是一套面向嵌入式系统的软件平台,覆盖了全抢占的实时操作系统内核,小巧而与底层具体实现无关的文件系统,轻型的TCP/IP协议栈以及轻型的多窗口多线程图形用户界面。
 楼主| blueskycoco 发表于 2016-1-11 17:52 | 显示全部楼层
huangcunxiake 发表于 2016-1-11 17:36
起初RT-Thread是一个实时的内核(全抢占优先级调度,调度器时间复杂度O(1)),但在发展过程中,RT-Thread实时 ...

:handshake
我还以为没几个人用这个呢
huangcunxiake 发表于 2016-1-22 17:11 | 显示全部楼层
RT-Thread国产的吧,用的人还不是很多,主要太多了这些,不知道学哪个好。
energyplants 发表于 2016-1-31 16:20 | 显示全部楼层
这个rt-thread和free RTOS类似吧,用起来有什么差别呢
whgtsq 发表于 2016-2-26 14:07 | 显示全部楼层
楼主这是咋压缩的, 我下载后咋解不开啊
zhanghl45 发表于 2017-8-29 16:44 | 显示全部楼层
001.zip有问题,打不开!
mintspring 发表于 2017-8-29 20:37 | 显示全部楼层
没用过,试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

67

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部