LPC11C14__uCOS-II V2.91 移植笔记(三)

本文详细记录了在LPC11C14上移植uCOS-II V2.91的过程,重点讨论了OS_CPU_A.ASM中涉及的汇编指令,特别是如何利用PenSV中断进行任务切换。在Cortex-M0内核中,作者发现与Cortex-M3存在差异,当设置NVIC_SYSPRI14为最低优先级时,SysTick中断无法正常触发。文中还提到了OSStartHighRdy和OS_CPU_PendSVHandler两个函数在启动和切换任务中的作用。
摘要由CSDN通过智能技术生成


OS_CPU_A.ASM这个文件是移植UCOS-II到LPC1114最关键的部分,里面用到一些汇编指令,Cortex-M3和Cortex-M0的任务切换都用到PenSV中断,被来向在OSStartHighRdy也安装Cortex-M3的方式来完成,就是也触发PenSV中断来完成第一个任务的执行,发现这两个内核还有有点不一样的,只要我设置NVIC_SYSPRI14为最低优先级,就不能触发SysTick这个中断了。OSStartHighRdy,OS_CPU_PendSVHandler这两个函数,启动任务和切换任务


NVIC_INT_CTRL   EQU     0xE000ED04 ;中断控制状态寄存器
NVIC_SYSPRI14   EQU     0xE000ED22;系统第14号中断
NVIC_PENDSVSET  EQU     0x10000000;触发PenSV中断的值
OSStartHighRdy这个函数是在启动OS时调用的,就不是权限教给OS,启动第一个任务。我做了中文解释,如有不对请,帮忙指出啊。
OSStartHighRdy  
    LDR     R0, =OSRunning         ;OSRunning = TRUE 
    MOVS     R1, #1 
    STRB     R1, [R0]     ;实际上就让OSRunning = 1 表示OS正在运行中
    
    LDR     R0, =OSTaskSwHook     ;call OSTaskSwHook() 
    BLX     R0                     ; 跳到OSTaskSwHook执行    
    
    ;选择已经准备好的最高优先级的任务
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值