嵌入式开发 源码开放的嵌入式实时操作系统

发布 2022-10-21 10:53:28 阅读 2131

编辑寄语。

迎接嵌入式系统的新时代。

泛在计算技术可以把人们身边的所有物品都内置到计算机、连接到网络,并通过协调动作实时掌握物品情况,从而最大程度的降低人类的操作负荷,实现优化控制。目前这一设想正在逐步变成现实。其实,这一概念我早在20多年前着手tron工程的时候就考虑过了。

而今天我们所说的泛在计算应用在当时被称为“无所不在的计算机”。

这一设想的具体实现,需要我们大量开发具有强大功能的高品质计算机嵌入产品。基于紧凑嵌入式控制用实时os标准开发出来的itron则成为其关键所在。事实上,这一itron已在汽车发动机控制、手机、数字家电等各种各样的设备中有所应用,为泛网时代的先锋——嵌入式系统的发展起到了巨大的推动作用。

现有的嵌入式设备,在其功能朝着高度化、复杂化和大型化方向稳步迈进的同时,也对itron提出了更高的发展要求。我们可以预见到作为嵌入式系统进化形态的泛网社会即将到来。为了进一步提高主体硬件及其所连接的外部设备的性能;为了能够充分利用这些硬件设备的处理能力提供高水平的服务,并针对不同的服务生产出差别化商品,因特网、gui、多**、安全等新的要素都成为这一网络体系得以实现的必要条件。

如此一来,执行这些处理的软件开发工作量激增,仅软件本身的开发就需要数十人之多。另外,由于产品差别化的实现越来越依赖于软件,而在以市场为主导的今天,新产品既要具有更加强大的功能,又要能够更加迅速的投入市场。而且,一旦发现缺陷,**产品,随之而来的则是数十亿资金的巨大风险。

如此看来,所有嵌入式设备的软件都在本公司内部自行开发并不现实,现在,越来越多的开发企业都在购买其他公司开发的通用软件,即中间件,将其嵌入本公司产品中使用。

在这种情况下,中间件的通用性就显得极为重要。以往的嵌入式设备的开发都必须使用以中间件和设备驱动程序为中心的其他公司的软件,但软件的移植一般要花费很大的功夫,无论是从花费的时间上来看,还是产生缺陷的几率来看,结果都不甚理想。而理想的中间件最好不依存于cpu就能进行源**互换,通过简单的重新编译就能够使用。

因此,不仅仅是itron已经实现的那种实时os的kernel标准化,kernel所处的执行环境整体的标准化都十分重要。这也就是随着嵌入式设备性能的提高,而必然要使用下一代itron-t-kernel的原因所在。具体来看,不仅os的功能和调用方法(api:

application programmer’s interface)要具有通用性,与设备驱程的i/f、开发环境相关功能和可使用程序库功能等等、执行对象程序所处环境的很多组成部分都必须具有通用性和兼容性。另外,全局名称和编号的分配方法、程序的动态加载、mmu(memory management unit)的充分利用等等,也必须制定可以同时协调执行多个独立开发程序应用的规则,并具有支持它的os端功能。

从这个角度来看,与itron相比,t-engine工程大幅度扩展并深化了标准化的范围,连执行环境的硬件基本结构都必须实现标准化,从而大幅度提高了中间件的重复利用能力和通用性。

i为了不致引起误解,必须强调,为提高中间件的通用性而“强行”标准化的,是作为开发平台使用的t-engine,而它只需在开发阶段使用。在实际的产品制作中,无论是硬件还是软件,都可以以其基本结构为基础,或是删除不必要的部分,或是根据需要增加模块,自由进行优化配置,这也是所有一切的前提。在最终产品中,只要对该设备提供充分必要的软件功能和硬件资源即可,并不需要中间件具备通用性。

因此,也没有必要完全遵守t-engine标准规范。为了与之明确区别,我们把面向最终用户的最终产物称为“t-engine装置”。

与之相对应,具有开发者资格的用户在开发阶段所使用的通用中间件和开发插件板等等被称为“t-engine”,这一名称代表着一种基于t-engine论坛管理规范的标准化体制。由于”t-engine装置”和”t-engine”的区别经常被人混淆误解,所以在这里强调一下。

本书是对t-engine标准实时核心的“t-kemel”api进行说明的规范书。t-kernel规范集中了面向嵌入式应用的实时、多任务os领域中,具有20多年历史的tron工程的成果、实绩和专业技术,该规范以itron为基础。实时kernel的基本规范,是10多年前就已成熟完善的技术,没有多少变更的余地,发生变化的部分基本上都是上面所提到的确保中间件通用方面的内容。

对于itron因t-engine的发展而变化内容,最重要的不是kernel本身的规范,而是其周边环境和执行环境的完备程度。也就是指中间件、设备驱程和开发环境等的标准化,只要这些条件具备即可立即使用。对于t-engine来说,从硬件到设备驱程、包括中间件在内的系统整体结构都进行了标准化,在此基础上还提供了参考捆装方案。

同时,kernel具备同时协调执行各种**商独立开发的中间件和设备驱程等程序的机制,具体来说,内核部分具备目标id编号的自动分配功能、以及实现子系统定义、资源管理、设备管理、动态加载等功能的机制,这些功能的实现促进了中间件和设备驱程的通用以及交互应用的发展。

需要注意的是,对于t-engine来说实时kernel并不是单独存在的,而是作为总系统的一部分而存在的t-kernel。t-kernel在t-engine工程中的定位,不是单纯的实时kernel,而是用于证明众多**商开发的中间件和设备驱程具有兼容性和通用性一种实证基础。

本书为t-kerne1的规范书,虽然不是概要说明书和入门手册,但在制作本次修订新版本时,为了方便读者,增加了简要介绍对t-engine工程的“part i. t-engine工程和t-kernel”以及“part iv. t-engine参考文献”。

t-engine工程的范围极广,本书所介绍的内容,只不过是t-engine技术资料中的微不足道的一小部分。对于t-engine中程序的开发方法、t-engine所用中间件的具体资料、t-engine工程的意义和应用事例等,如果需要更加详尽的资料,请阅读参考文献。

希望本书能够对开创泛网时代的所有技术人员有所帮助。

2023年5月。

iron项目负责人。

t-engine论坛会长。

坂村健。ii

目录。编辑寄语i目录i系统调用的表述viit-kernelapi索引ixpart 1 t-engine项目和t-kernel11.何谓t-engine22.

单一源化的t-kernel和开发组件的系统构成64.1标准开发平台t-engine64.2 t-engine的软件构成74.

3 t-kernel的概要94.4 t-kernel的核心目标104.5 t-kernel的动态资源管理104.

6 t-kernel的存储器管理114.7 t-kernel的标准化13part 2 t-kernel规范15第1章t-kernel概述161.1 t-kernel定位161.

2可裁剪性17第2章t-kernel规范的基本概念192.1基本术语的含义192.2任务状态和调度规则202.

2.1任务状态202.2.

2任务调度规则232.3中断处理262.4任务异常处理262.

5系统状态262.5.1非任务部分执行时的系统状态26

iii2.5.2任务无关部分(运行状态)与准任务部分(运行状态272.

6对象292.7内存292.7.

1地址空间292.7.2非驻留内存302.

7.3保护级别30第3章通用t-kernel规范313.1数据类型313.

1.1普通数据类型313.1.

2其他定义的数据类型323.2系统调用(函数333.2.

1系统调用(函数)格式333.2.2在任务无关部分(状态)中可用的系统调用(函数333.

2.3限制系统调用函数的调用343.2.

4参数数据包的修改343.2.5函数**353.

2.6错误**353.2.

7时限353.2.8相对时间和系统时间363.

3高级语言支持程序37第4章t-kernel/os函数394.1任务管理函数394.2任务相关的同步函数634.

3任务异常处理函数784.4同步和通信函数864.4.

1信号量(semaphore874.4.2事件标志934.

4.3邮箱1004.5扩展同步和通信函数1084.

5.1互斥体1084.5.

2消息缓冲区1164.5.3集合点端口(rendezvous port1254.

6内存池管理函数1434.6.1固定大小的内存池1434.

6.2大小可变的内存池1504.7时间管理函数157

iv4.7.1系统时间管理1574.

7.2周期性处理程序1594.7.

3报警处理程序1674.8中断管理函数1734.9系统管理函数1784.

10子系统管理函数(功能188第5章t-kernel/sm函数2025.1系统内存管理函数2025.1.

1系统内存分配2035.1.2内存分配库2035.

2地址空间管理函数2045.2.1地址空间配置2045.

2.2地址空间检查2055.2.

3锁定地址空间(lock address space2065.2.4获取物理地址2065.

2.5映射内存2075.3设备管理函数2085.

3.1基本概念2085.3.

2应用程序接口2115.3.3设备注册2205.

3.4设备驱动程序接口2225.3.

5属性数据2285.3.6设备事件通知(device event notification2305.

3.7设备挂起/恢复处理2315.3.

8磁盘驱动程序的特殊作用2325.4中断管理函数2325.4.

1 cpu中断控制2335.4.2中断控制器的控制2345.

5 io端口访问支持函数2355.5.1 io端口访问2355.

5.2 micro等待2365.6电源管理函数2365.

7系统配置信息管理函数2375.7.1获得系统配置信息2375.

7.2标准系统配置信息2385.8子系统和设备驱动程序启动240

v第6章t-kernel/ds函数2426.1内核内部状态查询函数2426.2跟踪函数(tracefunction259part 3 t-monitor规范2651.

概述2662.系统函数2662.1硬件初始化2662.

2系统启动2672.3异常/中断/陷阱处理函数2673.调试函数2683.

1控制台连接2683.2命令格式2683.3命令列表2704.

程序支持函数2905.引导处理的细节2985.1引导处理概述2985.

2搜索可引导的设备2985.3装载和启动主引导程序298part 4 t-engine相关参考文献目录299t-engine的相关专刊号300t-engine的相关大事记总索引(2023年1月~2023年4月300part 5参考语言接口的列表3062.错误**列表312修订记录315vi

嵌入式实时系统

实时系统 real time operating system,rtos 的正确性不仅依耐系统计算的逻辑结果,还依赖于产生这个结果的时间。实时系统能够在指定或者确定的时间内完成系统功能和外部或内部 同步或异步时间做出响应的系统。因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力 系统能...

《嵌入式系统与开发》构建嵌入式Linux系统 实验报告

嵌入式qt编程设计 实验报告。学生姓名。学号。专业班级。指导教师。完成时间。实验4 嵌入式qt编程及使用。一。实验目的。理解qt信号和插槽机制,掌握利用qt creator进行图形软件设计的基本步骤,并掌握将编译好的可执行程序加载到嵌入式开发板并运行的方法。掌握qt应用程序操纵底层硬件设备的基本步骤...

嵌入式系统与开发》构建嵌入式Linux系统 实验报告

第三步,编译sqlite,命令为 make 编译过程中使用的编译器为 arm linux gcc 第四步,安装sqlit,命令为 make install 安装完成后到 opt sqlite 文件夹下去查看相关文件,可以看到该文件夹下有 bin include lib 和share文件夹,其中可执行...