Rt-Thread学习笔记-----移植到stm32(一)
下面为Rt-Thread移植到stm32的过程。
一、下载 RT-Thread Nano 源码
RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。它去掉了master版本的BSP,保留了系统OS的核心功能。
RT-Thread 源代码下载(里面有Github、码云、百度云等下载方式选择)。
二、移植过程
该版本使用正点原子stm32F103ZET6的工程模板作为工程
2.1.1 拷贝相应文件到USER文件夹中
将rt-thread-3.1.3/bsp文件夹下的rtconfig.h、board.c、board.h拷贝到USER文件夹中。
将rt-thread-3.1.3/src文件夹下所有c文件拷贝到新建文件夹RTT_SOURCE中,并添加到工程。
将rt-thread-3.1.3\libcpu\arm\cortex-m3文件夹下context_rvds.S、cpuport.c拷贝到新建文件夹RTT_PORTS中,并添加到工程文件。
添加头文件路径。rt-thread-3.1.3\components\finsh、rt-thread-3.1.3\include、rt-thread-3.1.3\include\libc中有头文件,添加至Keil头文件索引。之前rtconfig.h复制到USER文件夹中,所以USER文件夹也要添加到头文件路径。
添加文件完毕,这个时候我们编译一下,看看怎么样。
挖槽,是不是吓尿了,16个错误。看看是什么错误。: error: #5: cannot open source input file “RTE_Components.h”: No such file or directory。找不到RTE_Components.h头文件。全局搜索一下,我们发现RTE_Components.h在rtconfig.h中。
头文件 RTE_Components.h是在 MDK中添加 RT-Thead Package 时
由 MDK 自动生成的,目前我们没有使用 MDK 中自带的 RT-Thread 的 Package,所以这个
头文件不存在,如果包含了该头文件,编译的时候会报错
注释掉该头文件。
然后我们再编译一下。
菊花一紧,怎么又是三个错误,我们来看看。HardFault_Handler、PendSV_Handler、SysTick_Handler在context_rvds和stm32f10x_it.c中重复定义了。
解决方法,将stm32f10x_it.c中PendSV_Handler、SysTick_Handler、HardFault_Handler删除或屏蔽。SysTick_Handler用作系统运行时钟、PendSV_Handler用于线程上下文切换。
再次编译,见证奇迹的时刻。
舒服。