初出茅庐的小李第2篇博客

假如想象 提交于 2020-01-15 04:08:07

嵌入式操作系统UCOSII移植笔记

记录学习、不断进步、第一次尝试边学习边记录的方式进行学习,总体感觉不错、也算是分享一下自己的学习心得吧!

看的是正点原子的教程,用的是精英版开发板,芯片是STM32F103ZET6
开发工具是Keil5 MDK

为什么要进行操作系统移植?

一般的嵌入式程序在51上运行的时候很少用到操作系统,不过也有用的(很少不抬杠),只有对时间要求比较高的时候才会用到操作系统,而RTOS不是一个系统,它是一类操作系统。UCOSII也只是众多嵌入式操作系统中的一个,还有其它的嵌入式操作系统,为什么我选择学习移植它,很简单因为它资料多、对于初学者来说,还是先照猫画虎吧!
其实还有一个原因,那就是毕业设计要用到操作系统的多任务管理功能,本应该上课就学会的,上课没学会那只能自己补喽,话不多少,开始干活~~

第一步、准备一份待移植的工程模板

因为我用的是原子哥的开发板,自然就用他们送的资料啦,嵌入式点灯工程师上线啦,哈哈哈哈哈;
我选用的是:跑马灯工程精英版

第二步、往工程模板中添加UCOSII文件

1、工程下建立UCOSII文件夹
2、文件夹里建立三个子文件夹
3、往子文件夹里添加相应文件
也就是把提供的Source文件夹里面的文件放在CORE里(UCOSII源码)
移植好的例程里的CONFIG文件夹里面东西放到新建的CONFIG文件夹里
移植好的例程里的PORT文件夹里面东西放到新建的PORT文件夹里
在这里插入图片描述
4把自己创建的UCOSII文件添加到移植的工程目录中去
新建三个分组
在这里插入图片描述
添加子文件,注意要删掉一个ucos_ii.c,要不然会报错的
在这里插入图片描述
同理添加PORT文件,注意这里要选择所有文件,然后只需要添加三个文件即可。
在这里插入图片描述
如图,
在这里插入图片描述
同上,继续添加文件
在这里插入图片描述
最后点击OK!我一开始就忘记点了,结果有操作了一遍,尴尬的一批
可以发现UCOSII-CORE里文件带钥匙还是带锁不管了,反正就是代表它是只读文件我们接下来可以修改文件属性
在这里插入图片描述
把只读取消掉,这样钥匙就没有了。

5、添加头文件路径
如果现在就编译会报错,我的报了12个错误,先不管错误我们先去添加头文件路径再看看
在这里插入图片描述
头文件路径只需要添加到文件夹路径进行了,我也不知道为啥,反正都是这么干的。
接下来再次编译还是会有错误,…\UCOSII\CORE\ucos_ii.h(44): error: #5: cannot open source input file “app_cfg.h”: No such file or directory
不能找到这个头文件,我们暂时不需要这个头文件,我们将其找到注释掉即可;
在这里插入图片描述
再次编译还有一个错误,提示…\OBJ\LED.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by os_cpu_a.o and stm32f10x_it.o).
在这里插入图片描述
这两个文件里都有这个函数实现,我们知道在实时操作系统中响应越快越好,所以我们保留相对底层的实现,把用C语言实现的注释掉
在这里插入图片描述
好的编译通过,继续进行接下来的操作把sys.h里面的使用UCOS的宏定义定义为1,我的理解是相当于一个开关;

再次编译发现还有一个错误,我滴妈呀,定时器有冲突了,还要继续修改。我们把刚才注释掉的那个函数下面,还要继续注释掉。
在这里插入图片描述
现在编译没有问题了,但应该还不代表移植就已经成功了
在这里插入图片描述
由于用的是正点原子的例程文件复制的,所以这个任务堆栈函数已经实现好了,实话讲这个函数具体实现什么功能现在我也不清楚,以后深入学习再来研究源码如何实现吧*

6、现在要编写程序测试一下我们移植的操作系统能否正常运行

我们按照正点原子的例子进行,创建一个开始任务、一个点亮和熄灭LED0的任务、一个点亮和熄灭LED1的任务、再进行一个浮点运算的任务测试一下;最后一个是为移植F4工程做准备的。具体如何创建我们不必纠结,后面会学到。具体如何编写,我也不会,先照猫画虎,比这例子粘贴一个。

CV大法好,复制一个移植好的工程,我们编译下到开发板里看一下效果。

7、实验效果
两个灯交替闪烁,串口会打印输出浮点数据,串口如果打印出数据有问题,可能是波特率的问题,设置修改一下就好。
在这里插入图片描述
第一次边记录边学习,感觉还是很不错的,我前面的时候建好的分组没有点击OK就关掉了,要是没有记录笔记,估计这次移植就要失败了,不管怎样这个实验成了还是比价高兴的,好好学习、天天向上,初出茅庐的小李,加油!

接下来的毕设还要用这种方式,记笔记确实有点浪费时间,但是学完可以回来再看看自己是如何一步步走过来的,出问题了也好去查找,浪费点时间应该也是值得的吧!移植所需要的文件我会打包好上传,同时我也会把我移植好的工程上传,希望能和大家一块进步!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!