博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开启ucosii的移植之旅
阅读量:4486 次
发布时间:2019-06-08

本文共 1620 字,大约阅读时间需要 5 分钟。

开启ucosii的移植之旅:

4.6.1、移植和硬件平台的关系

(1)只要是cortex-m3内核内核的soc移植差异都不大。

同内核同soc的不同开发板移植差异都不大。

不同内核的开发板移植难度大,找的官方移植的同内核版本为起点。

移植的一般思路: 先找到相近的内核移植好的源码。(官网里找一个)

在开发环境上建立好工程模板后,将ucosii的核心代码添加进去。然后编译,解决报错和警告。(在这里我们只是解决了语法错误,并不知道整个代码具体干了什么事,自己是不清楚的)下载运行,并小幅修改代码查看结果(验证自己的想法),最后添加并调试项目需要的BSP,编写并调试项目app部分。

4.6.2开始移植代码

跟着朱老师实战一下: 自己的板子是 STM32F103RCT6,建好工程模板。

编译出错3个错误。

..\app\..\APP\includes.h(52): error:  #5: cannot open source input file "stm32f10x_lib.h": No such file or directory

找不到"stm32f10x_lib.h"头文件,因为老版本的缘故,实际上"stm32f10x_lib.h"里边包含了各个外设的头文件。这个在新版本里没有,但是我们有"stm32f10x.h"

还有绝对路径包含的问题,注意自己的文件名大小写以及对错。

.\Objects\project_template.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by app.o and main.o).

.\Objects\project_template.axf: Error: L6200E: Symbol main multiply defined (by app.o and main.o).      main函数重复了。我们在user里定义了main函数,而移植过来的app里面也有main函数。

.\Objects\project_template.axf: Error: L6218E: Undefined symbol OS_CPU_SysTickInit (referred from app.o).

.\Objects\project_template.axf: Error: L6218E: Undefined symbol OS_CPU_PendSVHandler (referred from vectors.o).

把一些文件没有添加进来。粗心造成的。 在这里遇到vectors.s这是以前的启动文件,现在用startup_stm32f10x_xx,,xx根据单片机的容量来选择。代码可以编译成功了。

4.6.3整理bsp部分:

实际移植发现的问题: 

stm32单片机硬件仿真时超过五个断点就会全速运行不了。

 自己对 OSTCBList的指针的理解有偏差:刚开始确实是OS_TCB      OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS]任务数组,按照元素下标依次连接(在TCB初始化函数中)但是每创建一个任务时(在此之前已经创建了两个任务,)

在OSTCBint函数中 :

ptcb->OSTCBNext = OSTCBList; /* Link into TCB chain */ptcb->OSTCBPrev = (OS_TCB *)0;if (OSTCBList != (OS_TCB *)0) {OSTCBList->OSTCBPrev = ptcb;}OSTCBList = ptcb;

 

OSTCBList保存的是是上一次的TCB的地址,所以每次OSTCBList

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/947033916-fwh/p/8325861.html

你可能感兴趣的文章
解锁scott用户
查看>>
多态的理解
查看>>
AspNet Core 发布到Linux系统和发布IIS 注意项
查看>>
Windows添加.NET Framework 3.0 NetFx3 失败 - 状态为:0x800f0950
查看>>
隐藏显示终端的光标(shell echo,linux c printf)
查看>>
SQL Server 存储过程
查看>>
JSP 标准标签库(JSTL)(JSP Standard Tag Library)
查看>>
导入项目遇到的问题: Some projects cannot be imported because they already exist in the workspace....
查看>>
华为:字符集合
查看>>
用Okhttp框架登录之后的Cookie设置到webView中(转)
查看>>
Java_Activiti5_菜鸟也来学Activiti5工作流_之入门简单例子(一)
查看>>
设计模式(一)工厂模式Factory(创建型)
查看>>
linux中安装软件的集中方法
查看>>
Express中间件,看这篇文章就够了(#^.^#)
查看>>
《构建之法》(五)
查看>>
创建django项目
查看>>
Linux Bash基本功能
查看>>
一则小脚本(工作中用)
查看>>
软件工程结对作业
查看>>
Keil 4.0 生成bin文件
查看>>