- 1、本文档共131页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
六、嵌入式系统初始化与操作系统的移植解读
关于移植 相对于其他的嵌入式操作系统,uCOS-II的移植虽然是一个很简单的过程,但是,对于不熟悉uCOS-II的开发者,移植还是有一定难度的。 移植要点 定义函数OS_ENTER_CRITICAL和OS_ENTER_CRITICAL。 定义函数OS_TASK_SW执行任务切换。 定义函数OSCtxSw实现用户级上下文切换,用纯汇编实现。 定义函数OSIntCtxSw实现中断级任务切换,用纯汇编实现。 定义函数OSTickISR。 定义OSTaskStkInit来初始化任务的堆栈。 uC/OS的完善 固定的基于优先级的调度,不支持时间片,使用起来不方便。一个任务的基础上增加一个基于时间片的微型调度核 系统时钟中断,没有提供用户使用定时器,可以借鉴linux的定时器加以修改 在对临界资源的访问上使用关闭中断实现,没有使用CPU提供的硬件指令,例如测试并置位。 只是一个实时多任务内核,没有图形用户接口(GUI)、文件系统(FS)和TCP/IP协议栈 谢 谢 各 位 * 中断服务 中断服务程序 关于栈指针调整 栈指针调整 调整堆栈指针(加一个数在堆栈指针上)来完成的。加在堆栈指针上的数必须是明确的,而这个数主要依赖于移植的目标处理器(地址空间可能是16,32或64位),所用的编译器,编译器选项,内存模式等等。另外,处理器状态字可能是8,16,32甚至64位宽,并且OSIntExit()可能会分配局部变量。有些处理器允许用户直接增加常量到堆栈指针中,而有些则不允许。在后一种情况下,可以通过简单的执行一定数量的pop(出栈)指令来实现相同的功能。一旦堆栈指针完成调整,新的堆栈指针会被保存到被切换出去的任务的OS_TCB中 OSIntCtxSW的实现 OSIntCtxSw()的原型 void OSIntCtxSw(void) { 调整堆栈指针来去掉在调用: OSIntExit(), OSIntCtxSw()过程中压入堆栈的多余内容; 将当前任务堆栈指针保存到当前任务的OS_TCB中: OSTCBCur-OSTCBStkPtr = 堆栈指针; 调用用户定义的OSTaskSwHook(); OSTCBCur = OSTCBHighRdy; OSPrioCur = OSPrioHighRdy; 得到需要恢复的任务的堆栈指针: 堆栈指针 = OSTCBHighRdy-OSTCBStkPtr; 将所有处理器寄存器从新任务的堆栈中恢复出来; 执行中断返回指令; } OSIntCtxSW ();中断级的任务切换函数(1) OSIntCtxSw LDR sp, =IRQStack ;FIQ_STACK Sub r7,sp,#4 mrs r1, SPSR ; 得到暂停的 PSR orr r1, r1, #0xC0 ; 关闭 IRQ, FIQ. msr CPSR_cxsf, r1 ; 转换模式 (应该是 SVC_MODE) ldr r0, [r7] ; 从IRQ堆栈中得到IRQs LR (任务 PC) sub r0, r0, #4 ; 当前PC地址是(saved_LR - 4) STMFD sp!, {r0} ; 保存任务 PC STMFD sp!, {lr} ; 保存 LR sub lr, r7 ,#52 ; 保存 FIQ 堆栈 ptr in LR (转到 nuke r7) ldmfd lr!, {r0-r12} ; 从FIQ堆栈中得到保存的寄存器 STMFD sp!, {r0-r12} ;在任务堆栈中保存寄存器 OSIntCtxSW ();中断级的任务切换函数(2) ;在任务堆栈上保存PSR 和任务 PSR MRS r4, CPSR bic r4, r4, #0xC0 ; 使中断位处于使能态 STMFD sp!, {r4} ; 保存任务当前 PSR MRS r4, SPSR STMFD sp!, {r4} ; SPSR ; OSPrioCur = OSPrioHighRdy // 改变当前程序 LDR r4, addr_OSPrioCur LDR r5, addr_OSPrioHighRdy LDRB r6, [r5] STRB r6, [r4] ; 得到被占先的任务TCB LDR r4, addr_OSTCBCur LDR r5,
您可能关注的文档
- 消防工程分项质量验收记录表讲述.doc
- 公司保密协议、保密制度等解读.doc
- 消防安全培训(在职员工培训)讲述.ppt
- 公司2016年消防安全培训课件解读.ppt
- 消防培训2讲述.ppt
- 公司学习贯彻党的十八届六中全会精神暨四季度会议精神考试参考题库解读.doc
- 消防工程师技术实务思考题讲述.doc
- 消防工程基础知识、识图及工程量计算、清单编制20140615讲述.ppt
- 德国统一的背景和过程精要.ppt
- 消防安全课件3月讲述.ppt
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
最近下载
- 重庆市两江新区2024-2025学年数学六年级第一学期期末检测试题含解析.doc VIP
- 人教版(2024年新版)七年级上册美术全册教学设计.docx
- Desouttter马头电动装配系统CVI3 系列 CVI3 Controllers CVI3 Vision (6159326910) CVI3 tightening controllers Conf.pdf
- 【MOOC】时间序列分析-中南财经政法大学 中国大学慕课MOOC答案.docx
- 2024-2025学年重庆市六年级数学第一学期期末检测试题含解析.doc VIP
- 高中政治(必修1+必修2)期末测试卷(二)(原卷版).docx VIP
- 高中生物 2023-2024学年安徽省合肥高一(上)期末生物试卷.pdf
- 太阳能光伏产业链垂直一体化构建研究.docx VIP
- SSCI收录管理学种期刊目录.docx
- GB51016-2014 非煤露天矿边坡工程技术规范.pdf
文档评论(0)