当前位置:
文档之家› ThreadXUserGuide-中文手册
ThreadXUserGuide-中文手册
ThreadX 易于升级的原因基于其隐藏式结构。因为 ThreadX 的服务以 C 库来执行,只 有在应用程序中用到的服务才被纳入运行映像。因此,实际的 ThreadX 的大小完全取决于 应用程序。对大多数的应用程序而言,ThreadX 的指令映像从 2Kbyte 到 15Kbyte。
Picokernel 结构 不象其它传统微内核结构的压条法功能(layering kernel functions),ThreadX 服务直 接进入其核心,使得转换和命令的执行尽可能最快,这样的非压条法设计被称为 Picokernel 结构。
手册概述
本手册提供了有关 ThreadX——Express Logic 公司高性能实时内核的详尽信息。
指南之意义 本手册适用于嵌入式实时软件的开发者。开发者应熟悉标准实时操作系统的功能及 C
程序设计。
结构 手册包括七章,五个附录以及一篇索引。各部分大致介绍如下: 第一章 ThreadX 概述及其与嵌入式实时系统的关系。 第二章 安装步骤及使用事项。 第三章 详细介绍高性能实时内核——ThreadX 的功能操作。 第四章 详细介绍 ThreadX 应用程序的接口。 第五章 介绍 ThreadX 应用程序的写 I/O 驱动程序。 第六章 ThreadX 处理器自带示例程序的介绍。 第七章 ThreadX 的内部结构。 附录 A ThreadX API 附录 B ThreadX 常量 附录 C ThreadX 数据类型 附录 D Thread 源程序 附录 E ASCII 代码表
性的中断源。如果处理器有这个能力,则其可以被 ThreadX 所利用;如果没有,则必须由 用户的硬件来提供。
附带说明书 ThreadX 发行时附带一张 CD-ROM,有标准的和完全的两种模式可供选用。其区别仅
在于其中的源代码是否完全。 光盘中的具体内容取决于目标处理器,开发工具,以及所购买的 ThreadX 的包装。下
ANSI C 源代码 ThreadX 最初是用 ANTI C 写的。隐藏对象处理器内核的生成需要用到少量的汇编语言。 这种设计使得把 ThreadX 用到一个新的处理器系列中去的时候在接口问题上非常容易,通
常只要几个礼拜的时间。
非黑盒结构 ThreadX 的大部分包括完全的 C 源代码,这排除了许多商业性的内核结构所存在的“黑 盒”问题。在使用 ThreadX 时,程序开发者可以清楚的看到内核运行细节,不存在什么秘 密。 源代码还允许开发程序过程中特殊的修改。虽然没有介绍,但在十分必要时有能力去 修改内核是很有用的。 这些特色对那些习惯于用自己内部内核的开发者来说应该是特别另人振奋的。他们期 望得到源代码并且能够修改内核。ThreadX 对这些人来说是最合适的内核了。
面列出所有产品所共有的几个重要的文件。
Readme.txt ThreadX 端口的详细信息,包括目标处理器及开发工具。
Tx_api.h C 头文件,包含所有的系统 equates, 数据结构,服务原型。
Tx_port.h C 头文件,开发工具的所有特殊的数据定义及结构。
Demo.c C 文件,一个小的例程。
工具提供了功能强大的目标硬件调试。
ThreadX 使用 ASCII 码格式,要求主机硬盘空间的容量至少为 1 兆字节。
对
参见
对安装对象的要求 ThreadX 要求安装对象的 ROM(只读存储器 (read-only memory))为 2K 字节到 15K 字
节,RAM(随机存储器(random access memory))为 1K 字节到 2K 字节。 为了满足诸如超时设定命令、时间片、程序定时器等功能,隐藏目标硬件必须提供周期
结构选择 ThreadX 只有一类结构可供选择,它常用旁路服务命令错误诊断(bypass service call
error)。如果是在程序的 C 文件中定义的条件编译标志 TX_DISABLE_ERROR_CHECKING,那么 所有基本参数的错误诊断都被禁止。常用这个方法来提高程序的执行(大约可以提高 30%)。 但是只能在程序完全调试过之后才能这么做。
{ /* Create my_thread! */ tx_thread_create(&my_thread, "My Thread", my_thread_entry, 0x1234, first_unused_memory, 1024, 3, 3, TX_NO_TIME_SLICE, TX_AUTO_START); } void my_thread_entry(ULONG thread_input) { /* Enter into a forever loop. */ while(1) { /* Increment thread counter. */ my_thread_counter++; /* Sleep for 1 tick. */ tx_thread_sleep(1); } }
任务及线程 有关任务的另一个重要特性必须指出。任务这个名词可以用在不同的方面,有时指一个 可独立装载的程序;在另外的场合,它可能指一个内部程序段。 在实时操作系统中,有时用进程和线程来代替任务的使用。进程是一个完全独立的程序, 有自己的地址空间;但线程是一个半独立的程序段,在进程内执行。所有的线程共用相同的 进程地址空间。线程管理的开支是很小的。 大多数嵌入式应用程序不能负担面向进程操作系统的内存开支。另外,小的微处理器不 具备支持真正意义上的面向进程操作系统的硬件结构。基于以上这些原因,ThreadX 采用了 线程模式,这对绝大多数的实时嵌入式操作系统来说既有效又实用。 为避免相互混淆,ThreadX 不用“任务(task)”一词,而用了一个相近的词“线程”来
■ 嵌入式应用程序 实时软件 多任务 任务及线程
■ ThreadX 的优点 改进的响应特性 软件维护 增强的吞吐量 处理器隔离 程序划分 好用性 提高开发时间 保护软件投资
ThreadX 概 述
ThreadX 概述
ThreadX 是专为嵌入式应用而设计的高性能实时内核。同其它实时内核不同,ThreadX 具有通用性,使基于 RISC(reduced instruction set computer 简化指令集计算机)和 DSP(Digital Signal Processing 数字信号处理)的小型微控制器的应用程序易于升级。
实时软件 当应用程序软件中涉及到时间因素时,就赋予了实时的概念。一般地,必须在一个时间 段内执行的软件称为实时软件。嵌入式应用程序几乎都是实时的,因为它们和外部世界存在 内在的联系。
多任务 如上所述,嵌入式应用程序有其既定的目的。为达到这个目的,软件必须执行多种任务 或作业。应用程序中的半独立任务部分完成特定的目的,有时有些任务或作业比其它的更重 要。嵌入式应用程序面临的一个主要难题就是在不同的任务中分配处理器。在竞争的任务中 分配处理器是 ThreadX 的首要目的。
UINT
无符号整型。必须是 8 位无符号数据;但通常映பைடு நூலகம்成 16 位或 32 位的有
符号数据。
ULONG 无符号长整型。此类型位 32 位无符号数。
VOID
空类型。
CHAR 8 位字符类型。
其它用于 ThreadX 中的数据类型列在 tx_port.h 文件中。
1
■ ThreadX 概述 Picokernel 结构 ANSI C 源代码 可能的标准
ThreadX 的使用 ThreadX 的使用非常简单。一般地,在使用 ThreadX 运行库 tx.lib 编译,联接时必须包
含 tx_api.h 文件。 建立一个 ThreadX 程序主要有四个步骤,具体如下: 第一步:将 tx_api.h 文件包含于所有使用 ThreadX 服务和数据结构的应用程序。 第二步:建立 C main 函数。此 main 函数必须调用 tx_kernel_enter 以达到开始 ThreadX 的目的。如果没有经过 ThreadX 特定的初始化,可以通过增加其优先权而进 入到内核中。 (注意,ThreadX 的入口函数 tx_kernel_enter 无返回,所以在其后使用任何进 程及函数调用的时候要特别小心。) 第三步:建立 tx_application_define 函数。这是初始系统资源创建的地方。这些资源包 括线程、队列、内存缓冲池、事件标志组以及信号。(注意,内存中第一个可 用的地址由 ThreadX 提供给此程序。) 第四步:应用程序源的编译及与 ThreadX 运行库 tx.lib 的联接。这一步将产生可以下载 到目标体中去并能得到执行的映像。
问题处理 ThreadX 的每一个端口分配一个程序。最好先使系统运行,无论是在真正的目标硬件上
还是在特定的示范环境中。 通过执行 build_up.bat 批处理文件创建系统程序。此批处理文件生成一个下载程序用
的映像。 如果程序系统不工作,通过以下方法来缩小问题的范围: 1. 决定程序的执行需要多少时间; 2. 增加堆栈的容量; 停止定时器中断以及其他任何可以引起问题的疑点。
一个可能的标准 由于 ThreadX 的通用性,高性能的 picokernel 结构及强大的可移植性,ThreadX 有可能 成为嵌入式程序的工业标准。
嵌入式应用程序
嵌入式应用程序是指在类似于手机、通讯设备、汽车引擎、激光打印机、医疗设备等 产品的微处理器中执行的程序。嵌入式应用程序的另一个显著特点是其软件和硬件有其特定 的用途。
ThreadX 的数据类型
在 ThreadX 中除通常控制体系的数据类型外,还包括一系列特殊的称为接口的数据类
型。这些特殊的数据类型可以直接映射成 C 编译器的数据类型,以此来确保在不同 C 编译
器间的通用性。详细的操作可以在附带磁盘的 tx_port.h 文件中找到。
下面是 ThreadX 命令中的数据类型及其相关意义:
Build_ap.bat MS-DOS 批处理文件,讲述如何建立 ThreadX 实例。