- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
threadX学习笔记
原链接:
/uidid-600146.html
?/uidid-600145.html
threadx学习笔记(一)?2008-10-11 20:31:55
分类:
tx_ill.s文件用来处理初始化过程中的汇编语言,它是面向处理器和开发工具的。
Void_tx_initialize_low_level{
??????1、CPSCR|= FIQ_ MODE,SET SP_fiq;
??????2、CPSCR|=IRQ_MODE,SET SP_irp;
??????3、CPSCR|=SVC_MODE,SET SP_svc;
??????4、设置中断向量表IRQ_TABLE;
??????5、设置内部TIMER线程的堆栈起始地址,堆栈大小和优先级::tx_timer_stack_start,_tx_timer_stack_size,_tx_timer_priorit;
??????6、设置初始化后未使用内存地址的初始值_tx_initialize_unused_memory;
}
??????Tx_tcs.s负责在中断发生时对上次的运行现场进行保存,它保存中断上下文,为了不覆盖R14_irq离得中断返回地址,TCS的返回是通过跳到__tx_irq_processing_return地址做到的。Tx_TCR.S负责中断处理程序执行完后的处理。
??????Void _tx_thread_context_save{
??????1、把表示中断嵌套个数的变量??_tx_thread_system_state++;
??????2、if _tx_thread_system_state1,PUSH R0-R3,CPSR,R14 in IRQ stack,B __tx_irq_processing_return;
??????3、else if _tx_thread_current_ptr=0判断是否有线程正在运行,if not ,B _tx_irq_processing_return;
??????4、else,PUSH Context_irq in thread’s stack,SP_thread=new SP,B _tx_irq_processing_return;
}
??????由于R13和R14在不同的CPU模式下对应的是不同的物理寄存器,所以若要得到中断前的线程堆栈指针,需要先返回到该线程的运行模式,同时禁止中断,取值后再返回到终端模式。R14_irq保存的是终端发生时PC值+8,R14_svc保存得失中断前线程自己的返回地址。所以在中段上下文中,(R14_irq-4)应该存在中断地址,而R14_svc存在R14的位置。
??????Void _tx_thread_context_restore{
???????????1、_tx_thread_system_state--,if _tx_thread_system_state0,POP R0-R3,CPSR,R14 from IRQ stack,BX R14;
???????????2、else if _tx_thread_current_ptr=0?if =0 CPSR|=VC_MODE,CPSR|=TX_INT_ENABLE,跳到线程调度程序B _tx_thread_schedule;
???????????3、if!=0,则判断线程抢占是否禁止?if _tx_thread_preempt_disable=0?if!=0,POP Context_irq from thread’s stack,BX R14;
???????????4、if=0,_tx_timer_time_slice=new value,_tx_thread_current_ptr=0,CPSR|=SVC_MODE,设置堆栈指针为系统指针SP=SP_svc,CPSR|=TX_INT_ENABLE;
???????????5、B _tx_thread_schedule;
}
??????Tx_tsr.s用于从线程退回到系统态,负责保存线程的最小语境并退回到Threadx的调度循环状态。它保存的上下文是请求上下文。
??????Void _tx_thread_system_return{
1、?????????????PUSH Context_request:in thread’s stack,CPSR|=TX_INT_DISABLE;
2、?????????????_tx_thread_current_ptr-SP=SP,CPSR|=SVC_MODE;
3、?????????????SP=SP_svc,_tx_thread_current_ptr=0,CPSR|=TX_
您可能关注的文档
- 勐臘县土地利用总体规划.doc
- 動力工程领域全日制工程硕士专业学位研究生培养方案.doc
- MATLAB论文12010245261赵旭阳.doc
- 動物用转基因微生物安全评价申报书式样.doc
- mic-5000绝缘电阻测试仪中文简陋翻译.doc
- MWC飞控调试方法总结交流.doc
- 動物病理学电子教案.doc
- 動画集群渲染实训室设备参数.doc
- MSCS数据配置.doc
- 動量守恒定律在碰撞中的应用(教案).doc
- 运行人员安全教育考试(答案).pdf
- 统编版2023-2024年江苏苏州六年级语文下册毕业考试模拟试卷二(含答案).pdf
- 礼通职场_黄河科技学院中国大学mooc课后章节答案期末考试题库2023年.pdf
- 职工技能大赛飞机钣金工比赛理论题库(附答案).pdf
- 银行从业资格第二阶段综合练习(附答案).pdf
- 精通版四年级英语下册第四单元测试题及答案.pdf
- 石家庄 2023年公共科考试:社会心理适应真题模拟汇编(共170题).pdf
- 第二届机械行业技能大赛理论参考题库.pdf
- 电气自动化专业高职单招2024年技能考试题库及答案.pdf
- 福建省福州市仓山区2022-2023学年四年级下学期数学期末学业水平测试模拟试卷.pdf
文档评论(0)