uCOS-II移植(Freescale MPC5644A)
来源:互联网 发布:linux解压jar 编辑:程序博客网 时间:2024/05/22 04:51
uCOS-II移植(Freescale MPC5644A)
1、从官网上下载源码:点击打开链接
如果官网上有对应芯片移植好的源码,那么拿过来略微改动就可以用。
32位的MPC5644A支持两种汇编指令集--BookE(32位)和VLE(可变指令集,32位&16位),所以在新建工程或者导入工程时要统一选择其中的一种。
下载解压后会有这么一个文件夹,内部文件结构如下:
Micrium
{
EvalBoards
{
BSP --> Board Support Package 板级相关,(系统时钟,LED。。。)
uCOS-II --> 应用程序(main在这里)& uC-II的配置(os_cfg.h)
}
uC-CPU --> 芯片的CPU相关移植代码
uC-LIB --> micrium官网的一个库代码
uCOS-II
{
Ports -->移植主要需要改动或者自己写的几个文件(os_dbg.c 可以忽略)
Source -->uC-II源代码
}
}
MPC5644A内部有一个e200的核,uC-CPU的部分也是针对这个核的相关代码,主要用到了内部减数器,来完成系统的OSTickISR周期调用。
2、Import
在找到,详细介绍了如何将下载的工程导入CodeWarrior 10.x
这里只是你的函数和branch_table建立了关系,还需要对应到Exceptions中(如果你新建工程时没有生成ivor_branch_table.c,很大可能你的Exceptions.c需要修改):
导入后需要将BSP中板级相关的函数替换成自己板子的函数(可能还需要添加一些文件路径),这个时候操作系统就可以跑起来了!
下附一张CW10.6移植后的截图:
3、不那么简单的情况:
有的时候或许没有那么幸运,直接就可以下载到所需芯片(系列)已经移植好的工程;或者官网提供的工程与你所用的编译器不同(我就是这种情况),你无法import。这时就需要自己新建一个工程,自己来做一次移植。
第一种情况多数需要自己完成(或者是找相近的参考)Ports内部的几个文件,可以参考邵贝贝写的那本书中uC-II的移植那一章。
下面我们来说第二种情况:
官网提供的工程针对10.x编译器直接就可以用,而因为一些原因我必须使用CodeWarrior 2.8编译器,我先是在10.6上成功移植后,确认代码没有问题了,再在2.8上新建工程,一步步移植。
新建一个工程(指令集这里我选的BookE,中断选择的硬件中断!)
将uCOS-II的代码加载进来(这里我们不考虑需要自己写汇编的情况)
新建工程后在系统生成的Source文件夹下是没有ivor_branch_table.c的,需要手动添加进来,branch_table中用到了3个和系统相关的函数,这里直接替换并在上面extern
修改前: 修改后:
目录截图:
uCOS-II中系统的延时函数OSTimeDly(num)是通过周期调用OSTickISR实现的。先将减数器给定一个初始值(1个tick)后使能,在每一次减数器减到0时会产生一个Exception,也就会去执行branch_table中减数器的异常函数。
在Task中调用OSTimeDly(tick_num)时,会将当前任务挂起,当前任务让出CPU,在每次系统心跳中将挂起任务的时间tick_num--,减为0时则任务恢复,产生一次调度,根据优先级去选择要执行的任务。
1 0
- uCOS-II移植(Freescale MPC5644A)
- STM32移植uCOS-II系统(1)
- STM32移植uCOS-II系统(2)
- ucos-ii移植
- 移植ucos II
- STM32移植uCOS-II
- UCOS II移植内容
- uCOS-II移植
- lpc2200移植ucos-II总结(一 移植环境)
- lpc2200移植ucos-II总结(二 移植简介)
- Nios/uCOS II笔记---uCOS移植
- 移植UCOS-II到ARM7TDMI
- 移植uCOS ii到ARM920T
- 移植uCOS ii到ARM920T
- Ucos II 的移植之一
- Ucos II 移植之二
- 关于ucos-ii的移植
- lpc2200移植ucos-II心得
- CentOS/Linux 解决 SSH 连接慢
- Poj 1840 Eqs(Hash)
- 数据结构学习笔记(顺序表的基本操作)
- 关于ORACLE10gR2 ASM(raw实现和asmlib实现)使用GX2000透明代理测试报告
- 许你一场春暖花开
- uCOS-II移植(Freescale MPC5644A)
- 查找序列的下一个值
- 如何安装和设置 Git
- 循环-18. 龟兔赛跑(20)
- Ping转场动画的实现之二:转场动画
- Poj 2002 Squares
- 获取目录的的所有文件,并给出列表
- 图片文件上传工具类
- 黑马程序员——多线程第三天