LPC17xx芯片中对ucosii操作系统节拍时钟初始化的时机选择
2014-10-29 17:32
549 查看
这里要注意下,根据uCOS-II官方说明文档,操作系统节拍时钟一定要在OSStart()函数调用之后进行初始化,通常来讲在操作系统运行的第一个任务中进行,否则可能导致系统崩溃。
因为OSStart()函数中需要执行OSStartHighRdy(),而该函数执行后将直接跳转到优先级最高的任务中运行,至此uCOS-II算是正式运行了,因为它第一次执行了任务调度,此时再初始化系统节拍时钟,实现uCOS-II在中断中调度任务。
中断中实现任务调度,是uCOS-II高实时性特色的根源,当OSIntExit()函数内检索到有更高优先级的任务准备完毕时,会调用OSIntCtxSw(),而该函数需要根据不同的芯片架构进行相关移植代码的编写,而对于LPC17xx系列,通用做法是在OSIntCtxSw()函数中进行PendSV请求,这样在系统节拍定时中断退出时会执行PendSV的中断处理,在该处理中真正实现任务的调度。
因为OSStart()函数中需要执行OSStartHighRdy(),而该函数执行后将直接跳转到优先级最高的任务中运行,至此uCOS-II算是正式运行了,因为它第一次执行了任务调度,此时再初始化系统节拍时钟,实现uCOS-II在中断中调度任务。
中断中实现任务调度,是uCOS-II高实时性特色的根源,当OSIntExit()函数内检索到有更高优先级的任务准备完毕时,会调用OSIntCtxSw(),而该函数需要根据不同的芯片架构进行相关移植代码的编写,而对于LPC17xx系列,通用做法是在OSIntCtxSw()函数中进行PendSV请求,这样在系统节拍定时中断退出时会执行PendSV的中断处理,在该处理中真正实现任务的调度。
相关文章推荐
- stm8s 时钟库函数选择内部RC初始化
- (11)ok6410学习之芯片内部初始化之时钟初始化
- 选择适合目标应用的正确时钟芯片
- 嵌入式操作系统之时钟节拍下的任务切换
- ARM时钟初始化
- 如何选择适合你的linux操作系统,参考2016年的趋势吧。
- ARM芯片(stm32)学习笔记——时钟
- 我的软件选择-操作系统,浏览器
- u-boot移植与分析记录之二【S5PV210芯片手册时钟控制器部分的翻译】
- AVR单片机(ATMEGA16)DS1302时钟芯片程序
- 操作系统及IIS版本选择参考
- s3c6410时钟初始化
- Linux操作系统的选择
- SQL Server语句大全之二——提升部分(复制表、拷贝表、子查询、随即选择、初始化表)
- system_clock_init(初始化时钟)
- 联发科改变高端芯片发布时间或是好选择
- 实时操作系统基础概念总结——基于ucosii的使用
- 针对深度学习的GPU芯片选择
- NASM 纯汇编打造简单中文操作系统(2 init.asm初始化操作系统内存。进入32位保护模式)
- 你不可不知的final(3)-初始化时机(失手率比较高的一道面试题)