移植uC/OS到CK-CPU

本文详细记录了将uC/OS操作系统移植到CK-CPU上的过程,包括移植工作量分析、移植记录,重点讨论了os_cpu.h、os_cpu_c.c和os_cpu_a.S的修改。在移植过程中,针对CK-CPU的特性进行了数据类型、临界区保护方法、堆栈增长方向等方面的适配,并解决了CDS编译问题和定时器设置等挑战。最终通过测试验证了移植的成功。
摘要由CSDN通过智能技术生成

背景

某自研芯片使用了杭州中天微研发的CK-CPU内核。中天微已经移植了uC/OS实时操作系统和Linux操作系统。然而有两方面原因要求我们再进行一些额外的适配工作:
一方面中天微的移植版本基于其CK610芯片和三叶虫开发板,而我们是在其内核上自研芯片,自研电路板;另一方面中天微提供的uC/OS版本是2.00和3.03,与我们使用的稳定版本2.91均不相同。

移植工作量分析

根据《嵌入式实时操作系统uC/OS-II》中的介绍,uC/OS的移植只需要修改os_cpu_c.c、os_cpu_a.S和os_cpu.h这三个文件,其中有11个数据类型,4个宏和14个函数。这些从现有的移植范例修改即可,无需从零开始编写。
uC/OS-III的文件结构做了大幅度调整,我们不按其文件结构修改,只在其中摘抄需要的代码片断。这样移植工作量并不大,只需要修改约几百行代码。

移植记录

os_cpu.h

数据类型

BOOLEAN、INT8U等都容易定义;OS_STK表示栈入口宽度,因为CK是32位CPU,定义为无符号int型;OS_CPU_SR表示状态寄存器的宽度,也是32位。

OS_CRITICAL_METHOD

表示临界区保护的方法,共有三种,分别是直接开关中断、在堆栈中保存中断状态、用局部变量保存中断状态。第一种方法不支持临界区嵌套,第二种方法有的编译器不能很好支持。我们选用了第三种方法,因此该宏定义为3,然后再定

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值