1 / 78
文档名称:

threadx学习笔记范文.docx

格式:docx   大小:88KB   页数:78页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

threadx学习笔记范文.docx

上传人:天随人愿的夏天 2022/1/7 文件大小:88 KB

下载得到文件列表

threadx学习笔记范文.docx

相关文档

文档介绍

文档介绍:精品文档
精品文档
1
精品文档
threadx 学****笔记(一)
,它是面向处
理器和开发工具的。
Void_tx_initialize_low_level{
1、CPSCR|=FIQ_MODE,SETSP_fiq;
2、CPSCR|=IRQ_MODE,SETSP_irp;
3、CPSCR|=SVC_MODE,SETSP_svc;
4、设置中断向量表 IRQ_TABLE;
5、设置内部 TIMER线程的堆栈起始地址,堆栈大小和优先
级::tx_timer_stack_start,_tx_timer_stack_size,_tx_timer_priorit;
6、设置初始化后未使用内存地址的初始值
_tx_initialize_unused_memory;
}
, 它保
存中断上下文,为了不覆盖 R14_irq离得中断返回地址, TCS的
返回是通过跳到 __tx_irq_processing_return 地址做到的。
负责中断处理程序执行完后的处理。
精品文档
精品文档
2
精品文档
Void_tx_thread_context_save{
1、把表示中断嵌套个数的变量 _tx_thread_system_state++;
2、if_tx_thread_system_state>1,PUSHR0-R3,CPSR,R14inIRQ
stack,B__tx_irq_processing_return;
3、elseif_tx_thread_current_ptr=0ifnot,B_tx_irq_processing_return;

判断是否有线程正在运行,
精品文档
精品文档
3
精品文档
4、else,PUSHContext_irqinthread

sstack,S

’P_thread=newSP,B
精品文档
精品文档
77
精品文档
_tx_irq_processing_return;
}
精品文档
精品文档
77
精品文档
由于

R13



R14

在不同的

CPU

模式下对应的是不同的物理寄
精品文档
精品文档
77
精品文档
存器,所以若要得到中断前的线程堆栈指针, 需要先返回到该线
程的运行模式, 同时禁止中断, 取值后再返回到终端模式。 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_state>0,POPR0-R3,CPSR,R14fromIRQstack,BX
R14;
2、elseif_tx_thread_current_ptr=0?if=0
CPSR|=VC_MODE,CPSR|=TX_INT_ENAB跳LE到,线程调度程序B_tx_thread_schedule;
3、if!=0,则判断线程抢占是否禁止 if
_tx_thread_preempt_disable=0?if!=0,POPContext_irqfrom
精品文档
精品文档
77
精品文档
thread ’sstack,BXR14;
4、if=0,_tx_timer_time_slice=new
精品文档
精品文档
8
精品文档
value,_tx_thread_current_ptr=0,CPSR|=SVC_MODE 设,置堆栈指针
为系统指针 SP=SP_sv,cCPSR|=TX_INT_ENABLE;
5、B_tx_thread_schedule;
}
,负责保存线程的最小语境
并退回到 Threadx的调度循环状态。它保存的上下文是请求上下
文。
Void_tx_thread_system_return{
1、 PUSHConte