没有合适的资源?快使用搜索试试~ 我知道了~
首页ThreadX的移植(ARM7篇).pdf
资源详情
资源评论
资源推荐
- 1 -
ThreadX 的移植 (ARM7 篇 V1.0)
作者: 林博恒
邮箱:linbh919@126.com
博客:www.zhiworks.com
更新日期:2015 年 12 月 18 日
摘要
ThreadX, developed and marketed by Express Logic, Inc. of San Diego, California, USA,
is a real-time operating system (RTOS). ThreadX uses a multitasking kernel with preemptive
scheduling, fast interrupt response, memory management, interthread communication, mutual
exclusion, event notification, and thread synchronization features. ThreadX is distributed using a
marketing model in which source code is provided and licenses are royalty-free. ThreadX is
widely used in a variety of consumer electronics, medical devices, data networking applications,
and SoC development.
ThreadX 是由 Express Logic 公司开发和销售的实时操作系统(RTOS)。ThreadX 是
一个提供抢占式多任务调度、快速中断响应、内存管理、线程间通信、互斥、事件通知和线
程同步功能的内核。ThreadX 使用分布式营销模式,提供源代码和免版税许可证。ThreadX
广泛用于各种消费电子产品、医疗设备、数据网络应用程序和 SoC 开发。
----摘自维基百科
- 2 -
选择 ThreadX
选择 RTOS,大多考虑体积、功能、费用、可靠性这几点因素。
ThreadX 编译完成大约 9K 左右,满足大部分嵌入式设备对代码体积的需
求。
ThreadX 提供线程调度、内存管理、互斥、事件、线程间通信、同步等功能,
亦能满足大多数开发者的需求。
ThreadX 是开源免版税的操作系统,可以为开发者省下高昂的授权费用,也
规避了法律上的风险。
ThreadX 是 Express Logic
公
司开发的商用操作系统,被广泛用于医疗、民
生和工业用途等方面,已用在超过 20 亿个嵌入式设备中,是一款可靠性极高的
操作系统。
移植部分的功能
线程的切换,涉及 CPU 的寄存器保存与恢复,中断的使能与禁止。这些
操作 C 语言无能为力,只能依赖汇编。
各个 CPU 的寄存器大相径庭,保存寄存器时,在栈中的排布方式也因芯而
异。
所以,操作系统的保存现场、恢复现场、禁止中断、使能中断、初始化线程
栈等功能需要移植。
- 3 -
移植文件
ThreadX 需要移植的函数主要有 8 个:
//
初始化处理器各模式下的 SP 指针,为 Timer 线程与用户线程分配栈空间
_tx_initialize_low_level (tx_ill.asm)
//
创建栈初始化数据
_tx_thread_stack_build (tx_tsb.c)
//
控制处理器的中断禁止与使能
_tx_thread_interrupt_control (tx_tic.asm)
//
线程切换时,保存现场
_tx_thread_system_return (tx_tsr.asm)
//
中断时,保存现场
_tx_thread_context_save (tx_tcs.asm)
//
中断现场恢复
_tx_thread_context_restore (tx_tcr.asm)
//
调度
_tx_thread_schedule (tx_ts.asm)
//
操作系统心跳函数
_tx_timer_interrupt (tx_ti.c)
- 4 -
他们之间的关系如图所示:
分类一下:
_tx_initialize_low_level
_tx_thread_stack_build
为系统提供初始化功能。
_tx_thread_interrupt_control
为系统提供中断控制功能。
_tx_thread_system_return
_tx_thread_context_save
_tx_thread_context_restore
_tx_thread_schedule
_tx_timer_interrupt
为系统提供线程切换功能
下面,我们来分类详述。
ThreadX Kernel
_tx_thread_interrupt_control
_tx_thread_system_return
_tx_thread_stack_build
Irq Interrupt
_tx_thread_context_save
_tx_thread_context_restore
IRQ SEIVER
(include _tx_timer_interrupt
)
_tx_initialize_low_level
_tx_thread_schedule
- 5 -
初始化
VOID _tx_initialize_low_level (VOID)
{
Step1: 保存 LR;
Step2: 设置 SVC、IRQ、ABT、UND、FIQ、SYS 模式下的 SP 寄存器;
Step3: 为 Timer 线程设置运行环境
_tx_timer_stack_start = Timer 线程栈的起始地址
_tx_timer_stack_size = Timer 线程栈的长度
_tx_timer_priority = 0 // Timer 线程的优先级为最高
Step4: 为用户线程设置运行环境
_tx_initialize_unused_memory = 用户线程栈的起始地址
}
VOID _tx_thread_stack_build(TX_THREAD *thread_ptr,VOID (*function_ptr)(VOID))
{
Step1: thread_ptr-> tx_stack_end = thread_ptr->tx_stack_end;
Step2: 设置栈初始化数据,分布如图;
剩余27页未读,继续阅读
daya919
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0