helper2416上移植ucosii V290

该博客详细介绍了如何在Helper2416开发板上移植uCosII V290操作系统。首先从官方获取源码,参照相似板子的移植代码,特别是Micrium的AN1018.pdf文档,它提供了移植的详细步骤。移植工作主要在Portsarm2416GenericMDK路径下进行,涉及OS_CPU.h文件的修改,包括全局变量、外部定义符号的设定以及基本数据类型的定义。整个过程遵循AN1018.pdf的指导逐步操作。
摘要由CSDN通过智能技术生成

 

首先到ucos的官网上下载ucosii的源码(实际上是很多已经移植好的目标板,寻找下你说需要的板子是否在其上),找到一个相似的板子的源码。我们的设备是开发板Help2416;采用的源码是Micrium-uCOS-II-V290,参考源码Micrium_STM32xxx_uCOS-II。在Micrium\AppNotes\AN1xxx-RTOS\AN1018-uCOS-II-Cortex-M3\这个路径下的AN-1018.pdf非常重要,这文档详细的介绍了文件夹结构,关系,以及移植的细节。下面我们来慢慢分析。

首先参考STM32工程建立Ports\arm2416\Generic\MDK路径,此路径主要存放移植相关的代码。新建

 
 
 
  1. OS_CPU.H  
  2. OS_CPU_C.C  
  3. OS_CPU_A.ASM  
  4. OS_DBG.C //needless 

OS_CPU.h中一般声明了常量,宏和基本类型定义。先按照AN1018.pdf中的步骤来一步一步制作:

  先定义全局变量与外部定义符号

 

 
 
 
  1. #ifdef  OS_CPU_GLOBALS  
  2. #define OS_CPU_EXT  
  3. #else  
  4. #define OS_CPU_EXT  extern  
  5. #endif  

 

这是一个很智能的宏,在一些必要函数前加上,宏的定义位置就取决于文件中是否定义了OS_CPU_GLOBALS.

 

2.定义了基本数据

 
 
 
  1. typedef unsigned char  BOOLEAN;  
  2. typedef unsigned char  INT8U;   
  3. typedef signed   char  INT8S;   
  4. typedef unsigned short INT16U;              
  5. typedef signed   short INT16S;   
  6. typedef unsigned int   INT32U;  
  7. typedef signed   int   INT32S;   
  8. typedef float          FP32;               
  9. typedef double         FP64;   
  10. typedef unsigned int   OS_STK;             
  11. typedef unsigned int   OS_CPU_SR;         

由于都是32位小端,基本上基本类型都没有什么可修改的,继续往下看。(在实际的工作中,需要按照目标CPU的位宽修改基本类型,以满足有/无符号及位宽。

 

1.设置临界区模式

这里我们用常用的模式3,具体为什么不用模式1, 模式2,还不是很清楚,求了解的大大告之:eagleqingluo@gmail.com。

  
  
  
  1. #define  OS_CRITICAL_METHOD    3    
  2. #define  OS_ENTER_CRITICAL()  { cpu_sr = OS_CPU_SR_Save();}  
  3. #define  OS_EXIT_CRITICAL()   {OS_CPU_SR_Restore(cpu_sr);} 
这里的实质就是将CPSR暂存于cpu_sr这个unsigned long型的临时变量里面(内核使用到的时候已经自动添加了定义)。

2.设置堆栈增长方向

  
  
  
  1. #define  OS_STK_GROWTH        1  
1表示从高地址到低地址(实际上,除了个别8位单片机及特殊用途的芯片,大多数都是这样的)。 3.定义上下文切换函数
  
  
  
  1. #define  OS_TASK_SW()         OSCtxSw()  
OSCtxSw()稍后我们会在os_cpu_a.s中实现。

4.定义函数原型

  
  
  
  1. #if OS_CRITICAL_METHOD =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值