一种ThreadX操作系统在ARM处理器上的运行方法技术方案

技术编号:14637083 阅读:97 留言:0更新日期:2017-02-15 11:15
本发明专利技术公开了一种ThreadX操作系统在ARM处理器上的运行方法,包括以下步骤:步骤一、初始化ARM处理器的运行环境并切换至特权模式;步骤二、初始化ARM处理器的底层任务;步骤三、创建中断上下文线程堆栈框架,并初始化中断上下文线程堆栈框架及创建线程;步骤四、将执行线程的中断上下文加载到ARM寄存器中,并对执行线程开始处理,此时执行线程变为当前线程,在当前线程运行过程中进行响应同步事件处理和异步事件处理,同步事件处理为主动线程切换过程,而异步事件处理为被动中断响应过程;基于本方法所构建的系统平台实时性强,可靠性高,且中断响应速度非常快;本发明专利技术支持ThreadX操作系统的内核剥夺及基于时间片的轮转调度功能,实现了中断嵌套功能。

【技术实现步骤摘要】

本专利技术属于计算机
,具体涉及一种ThreadX操作系统在ARM处理器上的运行方法
技术介绍
ThreadX操作系统是ExpressLogic公司为嵌入式应用设计的硬实时操作系统,通过设计合理的接口程序可以使ThreadX操作系统在多种处理器上运行。操作系统与处理器之间的汇编语言接口程序是系统运行过程中指令密集度最高的部分,虽然很多处理方法所提供的接口程序可以满足大多数实时系统的要求,但执行效率并不高。问题主要集中在指令不够精简,堆栈不能利用编译器的规则做最小化设计,不支持中断嵌套和不支持内核剥夺功能等。
技术实现思路
本专利技术的目的是提供一种ThreadX操作系统在ARM处理器上的运行方法,以解决基于ThreadX操作系统的ARM处理器平台稳定性和高效性的问题。本专利技术采用以下技术方案:一种ThreadX操作系统在ARM处理器上的运行方法,包括以下步骤:步骤一、初始化ARM处理器的运行环境并切换至特权模式;步骤二、初始化ARM处理器的底层任务;步骤三、创建中断上下文线程堆栈框架,并初始化中断上下文线程堆栈框架及创建线程;步骤四、将执行线程的中断上下文加载到ARM寄存器中,并对执行线程开始处理,此时执行线程变为当前线程,在当前线程运行过程中进行响应同步事件处理和异步事件处理,同步事件处理为主动线程切换过程,而异步事件处理为被动中断响应过程。进一步地,步骤四中同步事件处理过程如下:当前线程运行过程中,通过调用系统服务函数,进而调用CPU控制权返还函数,将当前线程的执行现场利用返还函数保存为请求上下文堆栈线程,保存执行现场完成后,再通过线程调度函数进行线程的切换。进一步地,步骤四中异步事件处理过程如下:当当前线程运行过程中发生异步事件时,通过调用中断处理函数保存当前线程执行现场,然后开始执行中断服务例程,待中断服务例程执行完成后,根据被中断的当前线程中断点位置及执行线程和当前线程的状态信息,恢复执行现场或进行内核剥夺操作。进一步地,异步事件处理过程中,保存当前线程执行现场的方法为:a、在中断模式中,调用中断处理函数执行中断模式跳转指令,跳转指令分为无线程执行时的空循环指令区域、正在运行的线程指令区域、中断例程指令区域,中断处理函数将根据中断点落入的区域进行保存当前线程执行现场:当保存中断点位于无线程执行时的空循环指令区域时,不保存任何寄存器;当保存中断点位于正在运行的线程指令区域和中断例程指令区域时将SPSR寄存器保存到当前中断模式的堆栈中;然后递增系统状态变量的计数,系统状态变量的计数表示当前中断嵌套层数,也表示当前位于中断模式中;b、通过系统自动跳转到中断入口函数执行中断请求,首先将处理器的模式切换为系统模式,将系统模式下的lr寄存器压入堆栈中,之后调用中断服务例程,进行异步事件处理;c、异步事件处理完成后,恢复系统模式下的lr寄存器,然后将系统的模式切换回中断模式,进行恢复执行现场或进行内核剥夺操作。进一步地,恢复执行现场或进行内核剥夺操作的方法为:5.1)当系统状态变量的计数不为0时,为中断嵌套情况,即中断点位于中断例程指令区域,恢复中断例程执行现场;5.2)当系统状态变量的计数为0时,直接切换为特权模式,并观察剥夺禁止变量:当剥夺禁止变量不为0时,中断点位于不可剥夺指令区域,恢复当前线程执行现场;当剥夺禁止变量为0时,中断点位于可剥夺指令区域,如不存在更高优先级的就绪线程,则恢复当前线程执行现场;否则,保存被中断线程的中断上下文,然后调用线程调度函数执行高优先级的就绪线程,实现内核剥夺操作。进一步地,中断上下文和请求上下文的0偏移地址存储的指示标志不同。进一步地,步骤一的具体方法:初始化ARM处理器的运行环境,包括初始化各模式的堆栈分配及各模式的堆栈指针寄存器,之后将ARM处理器切换至特权模式,并调用主函数,进而调用内核入口函数。进一步地,步骤二的具体方法:初始化ARM处理器的底层任务,包括设置周期时钟中断源,找到用于线程堆栈分配的剩余内存首地址。本专利技术的有益效果是:通过特有的堆栈方法构建堆栈、调用线程及线程控制权返还函数等方法能够充分发挥ThreadX操作系统的特性,使基于本方法所构建的系统平台满足实时性强,可靠性高的特点,且中断响应速度非常快,假如CPU的时钟频率是50MHz,响应异步事件的最长时间小于0.6us;本方法支持ThreadX操作系统的内核剥夺调度功能,使高优先级线程更快得到执行,支持ThreadX操作系统基于时间片的轮转调度功能,实现了中断嵌套功能。【附图说明】图1为本专利技术中的中断上下文堆栈框架;图2为本专利技术中的请求上下文堆栈框架。【具体实施方式】下面结合附图和具体实施方式对本专利技术进行详细说明。本专利技术公开了一种ThreadX操作系统在ARM处理器上的运行方法,包括以下步骤:步骤一、初始化ARM处理器的运行环境,包括初始化各模式的堆栈分配及各模式的堆栈指针寄存器,之后将ARM处理器切换至特权模式svc,并调用主函数main,进而调用内核入口函数_tx_initialize_kernel_enter;各模式包括特权模式svc、系统模式sys、普通中断模式irq和快速中断模式fiq,即sp_svc、sp_sys、sp_irq、sp_fiq。堆栈指针寄存器包括相应模式的r13或sp寄存器。步骤二、初始化ARM处理器的底层任务,即实现函数_tx_initialize_low_level。该函数是内核启动过程中,ThreadX操作系统与ARM处理器初始化汇编语言程序的接口,在该函数中将实现所有ARM处理器相关初始化操作,包括设置周期时钟中断源,找到用于线程堆栈分配的剩余内存首地址;CPU相关初始化操作包括配置协处理器寄存器实现缓存CACHE、内存管理单元MMU的设置等;设置时钟中断源,用于产生周期性中断以驱动定时器;根据自定义的RAM分配图表及链接规则计算用于线程堆栈的内存最低地址;将内存最低地址存储到threadX指定变量_tx_initialize_unused_memory中;根据编译器的指令集选项,即THUMB指令集或ARM指令集,使用相对应的跳转指令。步骤三、通过线程堆栈建立函数_tx_thread_stack_build创建中断上下文线程堆栈框架,该函数是ThreadX操作系统与ARM处理器的线程堆栈建立汇编语言程序接口,由内核提供的线程创建函数所调用,用于建立应用线程启动的堆栈框架;并初始化中断上下文线程堆栈框架及创建堆栈线程,任何线程的创建都将调用线程堆栈建立函数_tx_thread_stack_build建立一个被称之为中断上下文的线程堆栈框架,并初始化线程堆栈框架。该函数接口有两个参数,寄存器r0所传递的参数是线程控制块TCB地址,寄存器r1所传递的参数是线程的入口函数地址。从TCB中获取线程堆栈底地址,使其8字节对齐;从线程堆栈底向低地址方向预留中断上下文框架所占用空间;根据图1构造线程初始启动所需要的中断上下文;更新TCB中的线程堆栈指针;根据编译器的指令集选项,即THUMB指令集或ARM指令集,使用相对应的跳转指令。中断上下文的堆栈框架如图1所示,图中堆栈的增长方向为由高地址向低地址增长;tx_stack_end为所建立线程的堆栈底;tx本文档来自技高网...
一种ThreadX操作系统在ARM处理器上的运行方法

【技术保护点】
一种ThreadX操作系统在ARM处理器上的运行方法,其特征在于,包括以下步骤:步骤一、初始化ARM处理器的运行环境并切换至特权模式;步骤二、初始化ARM处理器的底层任务;步骤三、创建中断上下文线程堆栈框架,并初始化所述中断上下文线程堆栈框架及创建线程;步骤四、将执行线程的中断上下文加载到ARM寄存器中,并对所述执行线程开始处理,此时所述执行线程变为当前线程,在当前线程运行过程中进行响应同步事件处理和异步事件处理,同步事件处理为主动线程切换过程,而异步事件处理为被动中断响应过程。

【技术特征摘要】
1.一种ThreadX操作系统在ARM处理器上的运行方法,其特征在于,包括以下步骤:步骤一、初始化ARM处理器的运行环境并切换至特权模式;步骤二、初始化ARM处理器的底层任务;步骤三、创建中断上下文线程堆栈框架,并初始化所述中断上下文线程堆栈框架及创建线程;步骤四、将执行线程的中断上下文加载到ARM寄存器中,并对所述执行线程开始处理,此时所述执行线程变为当前线程,在当前线程运行过程中进行响应同步事件处理和异步事件处理,同步事件处理为主动线程切换过程,而异步事件处理为被动中断响应过程。2.如权利要求1所述的所述一种ThreadX操作系统在ARM处理器上的运行方法,其特征在于,所述步骤四中同步事件处理过程如下:当前线程运行过程中,通过调用系统服务函数,进而调用CPU控制权返还函数,将当前线程的执行现场利用返还函数保存为请求上下文堆栈线程,保存执行现场完成后,再通过所述线程调度函数进行线程的切换。3.如权利要求1所述的所述一种ThreadX操作系统在ARM处理器上的运行方法,其特征在于,所述步骤四中异步事件处理过程如下:当所述当前线程运行过程中发生异步事件时,通过调用中断处理函数保存当前线程执行现场,然后开始执行中断服务例程,待中断服务例程执行完成后,根据被中断的所述当前线程中断点位置及执行线程和所述当前线程的状态信息,恢复执行现场或进行内核剥夺操作。4.如权利要求3所述的一种ThreadX操作系统在ARM处理器上的运行方法,其特征在于,所述异步事件处理过程中,所述保存当前线程执行现场的方法为:a、在中断模式中,调用中断处理函数执行中断模式跳转指令,所述跳转指令分为无线程执行时的空循环指令区域、正在运行的线程指令区域、中断例程指令区域,所述中断处理函数将根据中断点落入的区域进行保存当前线程执行现场:当所述保存中断点位于无线程执行时的空循环指令区域时,不保存任何寄存器;当所述保存中断点位于正在运行的线程指令区域和中断例程指令区域时...

【专利技术属性】
技术研发人员:王大鹏
申请(专利权)人:西安航天华迅科技有限公司
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1