uCOS-II 在 STM32 上的移植步骤
前言:说点废话,网上有很多关于 uCOS-ii 移植的文章,好多都是千篇一 律,理论性很强,分析了一大堆虚头巴脑的东西,真想问他们,你确定你分析 的这些东西是需要你做的工作吗?实操性严重欠缺。。。这方面我也走了很多弯 路,下面就将自己的移植过程一步步的记录下来,也给大家做做参考。首先, 简单总结一下移植的大概过程:(1) 去 uC/OS-ii 官网下载你要移植芯片 CPU 的相关案例,不一定完全对应,那就找相应系列吧。(2)
编程环境一般有两
种,分别是 IAR 和 MDK,这个根据你自己的编程环境进行下载。(3) 本案例 需要将 uC/OS-II 移植到 STM32F103ZET6 上,而我使用的编程环境是 MDK,很 遗憾,官网上提供的案例是基于 IAR 的,所以要基于 IAR 的案例进行更改。 (4) 使用 MDK 创建一个无操作系统的最简单程序,确保这个程序能够使用, 这样做的目的是为了一步步的排查错误,假如无操作系统时,都有错误,移植 过程中也肯定会有编译错误,那么在排查错误的时候也就增加了难度,不会写 物操作系统的简单程序怎么办。。。那就不要往下看了。(5)
移植的最大的改
动主要有两部分,一个是一些头文件的增减,另外一个就是向量表中
PendSV_Handler 和 SysTick_Handler 的修改。这里我要吐槽一下,网上说了一 大堆关于什么 OS_CPU.H 的更改还有各种函数的的分析,这都是扯淡。。。这些 根本就不用移植者去修改,官网提供的案例都已经提供了,除非你选择移植的 CPU 是比较偏的,那么这些东西需要移植者自己去编写。好了,下面就开始详 细的记录怎么去移植。一、 创建一个无操作系统的简单裸板系统 1. 创建源 文件工程文件夹,如下图所示:其中文件夹 CMSIS 为内核的接口,包含的文 件如下图文件夹 STM32_StdPeriph 为固件驱动文件夹,这个把 STM32 的固件 全都添加进去即可。文件夹 User 为其他文件,如下图所示:文件夹 Output 和
List 主要是放那些编译产生的乱七八糟的文件,为了使工程代码更加简洁。2. 使用 MDK 创建无操作系统工程项目,这一点就不一一说了,将创建后的工程 项目文件树截图如下:
这个时候还没有 main 文件,那么创建一个 mian.c 文
档即可,这里需要注意,创建 main.c 后,要将其添加到项目中才行,而不是简 单的保存。如下图所示:、注意:main.c 中要有一个 mian 函数,否则编译器 会报错提示你的。然后就是项目的配置,这个还是很重要的,下面分别说需要 配置的地方:(1)Output 选项如下:
这里面勾选了 Create HEX File 选项,
同时将项目输出放到了之前创建的 Output 文件夹。(2)List 选项,将 List 产生 的文件放入到之前创建的 List 文件夹中。(3)C/C++配置选项如下:其中 Define 选项中,填入:USE_STDPERIPH_DRIVER,STM32F10X_HD,这是告 诉编译器,使用标准外设,还有选择的 CPU 类型,其中 CPU 类型需要根据你 选择移植的 CPU 进行适当的更改。Include Paths 是要包含的头文件路径,这个 为了保险,将项目中的所有有.h 的文件的文件夹都包含进去就可以了。4.Debug 选项如下:,我使用的是 Jlink 进行烧写调试,所以选择了如图所示,还要进行 settings,如下:这里要勾选 Reset and Run,这样做的目的是,每当烧写下载后, CPU 进行复位并运行。5.Utilities 选项设置如下所示:至此,配置完毕,编译一 下,没有错误,创建一个简单的点亮 LED 程序,验证一下即可。备注说明: 如果按照这个步骤操作,编译,如果出现一些简单的错误,比如没有 main 函 数,没有发现某个头文件,那么按照提示解决即可,但是如果发现了很多怪怪 的编译错误,比如说未定义 u32,u8 这些符号时,那就要注意一下了,有可能是 MDK 版本的问题,我在使用 MDK 低版本的时候,发现有问题,而使用高版本 的时候就没问题了,所以需要注意一下。tips:感谢大家的阅读,本文由我司收 集整编。仅供参阅!
相关推荐: