新闻中心

EEPW首页>嵌入式系统>设计应用> μC/OS-III在Cortex-M3处理器上的移植

μC/OS-III在Cortex-M3处理器上的移植

作者: 时间:2012-05-03 来源:网络 收藏

d.JPG
2.2.3 编写os_cpu_c.c
os_cpu_c.c文件包含了OSTaskStkInit()函数和若干钩子函数。OSTaskStkInit()函数的作用是在创建任务时初始化任务栈,并返回新的栈顶位置。μC/基于的任务栈结构如图1所示。其中PSR、PC、LR、R1、R0五个寄存器应赋予正确的初值,而其他11个寄存器的初值无关重要。

本文引用地址://m.amcfsurvey.com/article/149143.htm

e.JPG


os_cpu_c.c文件中的钩子函数是μC/为了扩展用户功能而定义的。进行μC/时至少需要定义OSTaskSwHook()、OSIn itHook()、OSTimeTickHook()、OSIdleTaskHook()、OSStatTaskHook()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskReturnHook()
八个钩子函数。为了简单起见,本次不埘钩子函数作功能扩展。
2.3 CPU相关
2.3.1 编写cpu. h
cpu.h头文件主要包括对标准数据类型、字长、栈、临界区的相关定义。标准数据类型与具体的编译器相关,需要查阅相应的编译器手册。字长是32位,则CPU_DATA和CPU_ADDR皆定义为CPU_INT32U类型。使用满降序栈,栈增长方向应为从高地址到低地址。临界区方法选用CPU_CRITICAL_METHOD_STATUS_LOCAL。
2.3.2 编写cpu_a.asm
cpu_a.asm文件的最主要部分是临界区函数的实现。根据所选用的临界区方法,中断使能函数CPU_SR_Save()和中断禁用函数CPU_SR_Res tore()代码实现如下:
f.JPG
Cortex_M3的指令集提供了CLZ指令,则可选地使用汇编指令实现CPU_CntLeadZeros()函数,以加快μC/OS-III调度器查找最高优先级的就绪任务的速度,CPU_CntLeadZeros()函数汇编代码实现如下:
CPU_CntLeadZeros
CLZ R0,R0
BX LR



评论


相关推荐

技术专区

关闭