为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

嵌入式系统硬件开发平台设计及OS移植

2017-09-20 50页 doc 189KB 20阅读

用户头像

is_037433

暂无简介

举报
嵌入式系统硬件开发平台设计及OS移植嵌入式系统硬件开发平台设计及OS移植 中国人民解放军信息工程大学 硕士学位论文 嵌入式系统硬件开发平台设计及OS移植 姓名:濮小川 申请学位级别:硕士 专业:计算机软件与理论 指导教师:赵秋霞 20070401 信息丁程大学硕士学位论文 摘要 随着嵌入式技术的蓬勃发展和广泛应用,嵌入式系统的平台化开发已成为发展趋势。 但是,目前国内外还没有一种能够支持软硬件一体化开发的通用平台产品。针对这一现状, 论文对嵌入式软硬件集成通用开发平台的关键技术进行了深入研究,主要工作包括: 设计并实现了一个通用的模块化硬...
嵌入式系统硬件开发平台设计及OS移植
嵌入式系统硬件开发平台设计及OS移植 中国人民解放军信息工程大学 硕士学位论文 嵌入式系统硬件开发平台设计及OS移植 姓名:濮小川 申请学位级别:硕士 专业:计算机软件与理论 指导教师:赵秋霞 20070401 信息丁程大学硕士学位论文 摘要 随着嵌入式技术的蓬勃发展和广泛应用,嵌入式系统的平台化开发已成为发展趋势。 但是,目前国内外还没有一种能够支持软硬件一体化开发的通用平台产品。针对这一现状, 论文对嵌入式软硬件集成通用开发平台的关键技术进行了深入研究,主要工作包括: 设计并实现了一个通用的模块化硬件开发平台,并给出了接口电路设计和改造的通用 方法,解决了硬件模块的可复用性问题,使硬件开发平台在逻辑上形成了一个硬件模块库, 支持硬件的模块化开发和复用,提高了硬件的开发效率。 针对传统板级支持包(,,,)结构封闭、代码专用的弊端,提出了一种可重构,,,的 设计方法,设计并实现了开放的、通用的可重构,,,,降低了,,,的开发难度,提高了开 发效率,并兼具硬件抽象层的优点,支持操作系统跨平台移植的快速实现和软硬件的并行 开发。 通过深入分析操作系统内核及其可移植性,给出了一种基于可重构,,,的操作系统规 范化和跨平台移植方法,并以实例论述其具体实现过程,与传统移植方法相比,移植效率 得到了提高。 以上工作已在项目中得到实际应用和验证,收效良好。 关键词:硬件开发平台;板级支持包;操作系统移植;模块化;可重构:跨平台;规范化 第,,页 信息工程大学硕士学位论文 表目录 表,,铀,,,,,在两种开发模式下开发所需的工作量对比………………………………((,, 表,“,,,,,?中与移植相关的代码…………………………………………………………。,, 第?页 信息工程大学硕士学位论文 图目录 图,嵌入式通用开发平台结构框图……………………………………………………………, 图,工作流程及技术难点分布………………………………………………………………((,, 图,微内核与宏内核结构示意图……………………………………………………………((,, 图,硬件平台的开发流程……………………………………………………………………。,, 图,,,,,,,,外部总线时序图………………………………………………………………,, 图,,,,,,,,外部总线时序图………………………………………………………………。,, 图,模块化设计的,鹊”,,…………………………………………………………………,, 图,模块化设计的,,,,,,,,………………………………………………………………(,, 图,,,,,,,,,,,,,读写时序图………………………………………………………………,, 图,,网络接口模块电路示意图………………………………………………………………,, 图,,网络接口模块的接口电路改造示意图(初步)………………………………………,, 图,,,,,,,,,,上的网络接口模块电路示意图(优化)…………………………………,, 图,,,,,,,,,寄存器访问时序图……………………………………………………………((,, 图,,,,,接口模块示意图……………………………………………………………………,, 图,,,,,,,,,,,上的,,,接口模块电路…………………………………………………((,, 图,,,,,与硬件抽象层的区别………………………………………………………………((,, 图,,可重构,,,设计示意图…………………………………………………………………,, 图,,网络接口抽象模块内部结构示意图……………………………………………………(,, 图,,,,,资源库结构示意图…………………………………………………………………(,, 图,,,船,,,,上的,,,结构图……………………………………………………………((,, 图,,,州,,,,上的,,,结构图……………………………………………………………(,, 图,,可重构,,,在整个系统中的示意图……………………………………………………,, 图,,串行与并行开发模式对比图……………………………………………………………,, 图,,,,,,(,,,,,,,,;,流程图…………………………………………………………………(,, 图,,此,,,(,,代码结构 图……………………………………………………………………(,, 第,页 戤 原创性声明 扛 本人声明所提交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表和撰写 强』 过的研究成果,也不包含为获得信息工程大学或其他教育机构的学位或证书而使用过的材 料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢 堑 学位论文题目:丛?煎盘:,塾塑聋亟送聋 鞘 学位论文作者签名:,氆型,日期:柙年,月,口日 丝丝红垦堕垡堕 作者指导教师签名:蔓盎趣:艮日期:纱,年(,月『口日 车 丘 学位论文版权使用授权书 型 本人完全了解信息工程大学有关保留、使用学位论文的规定。本人授权信息工程大学 可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允许论文被查阅和借 醴 阅;可以将学位论文的全部或部分编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 丘(保密学位论文在解密后适用本授权书。) 学位论文题目: 日期:矽,年,月,,坠 日 作者指导教师签名: 日期:叩年,月, 口日 堡 遁 , 信息工程大学硕士学位论文 第一章绪论 ,,,,,,,,,,,,,,,,,,,,,有【,,的时代~嵌入式技术为人类带来的改变不亚于一场工业革命【,,。随着信息技术的高速 ,,,,,,,,,一我们生活在一个嵌入式产发展,嵌入式技术的应用已经广泛渗透到人们的工作、生活中。从家用电器、手持通讯设 备、信息终端、仪器仪表,到汽车、航天航空、军事装备、制造工业、过程控制等,各种 品无处不在、无所不 形式多样的嵌入式产品已经成为信息化时代市场的主流。嵌入式技术是未来计算技术的重 要发展方向【引,因此,顺应嵌入式的发展潮流,研究嵌入式开发的新技术将极具战略意义。 ,(,课题背景 ,(,(,嵌入式系统概述 ,(嵌入式系统的定义 嵌入式系统实际上是“嵌入式计算机系统”的简称,它是相对于通用计算机系统而言 的。关于它的定义,目前还没有一个统一的。 电机工程师协会(,,)对其的定义为:“用于控制、监视或者辅助操作机器和设备的 装置(,,,,;,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,?,,,,,,,,,;,,,,眄,, ,,,“,,)”【,,,,。 而国内嵌入式工作者普遍认同的两种嵌入式系统定义为: 从技术角度定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应特定应 用系统,并对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统【,】。 从系统角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在 一起的计算机系统。术语“嵌入式”反映了这些系统通常是更大系统中的一个完整的部分, 称为嵌入式系统。嵌入的系统中可以共存多个嵌入式系统,,,。 ,(嵌入式系统的组成 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各行各业的具体应用相 结合后的产物,是软件与硬件的综合体,是一个技术密集、资金密集、高度分散、不断创 新的知识集成系统【,】。 嵌入式系统由嵌入式硬件和嵌入式软件两部分组成:硬件架构上以嵌入式处理器为核 心,包含存储器、接口和人机交互等外围设备;软件部分包括一般嵌入式操作系统和应用 软件,但操作系统并不是必需的,在小型嵌入式应用系统中一般不用。 ,(嵌入式系统的特点 嵌入式系统是应用于特定环境下,面对专业领域的应用系统,与通用计算机系统相比 主要有以下特点: (,)响应及时。许多嵌入式系统都有实时性要求,需要对外部时间迅速做出反应,这 第,页 信息工程大学硕士学位论文 一点在硬件和软件上都会有很明显的体现,,】, (,)资源有限。嵌入式系统在处理器的计算能力和速度、存储器容量等方面与通用计 算机系统相比都是相当有限的,这就要求它的硬件和软件的设计都必须简单高效,在保证 稳定、安全、可靠的基础上量体裁衣,去除冗余,力争以最低的成本实现最高的性能。 (,)低功耗。一方面是为了省电,因为嵌入式系统往往以电池供电;另一方面是要减 少发热量,因为嵌入式系统中通常没有风扇等排热手段。 (,)不具备自举开发能力。正是由于自身资源的闲置,嵌入式系统不能具备完整的开 发环境,需要借助上位机的交叉开发工具和环境才能进行开发。 ,(嵌入式系统的发展历程 自,,,,年,,,,,公司推出第一款微处理器,,,,以来【,】,嵌入式系统的发展主要经 历了 三个阶段(以嵌入式操作系统为主线):无操作系统的嵌入式算法阶段、简单监控式的实 时操作系统阶段和通用的嵌入式实时操作系统阶段【,,。目前,嵌入式系统已与人们的日常 生活工作紧密结合,发挥着越来越重要的作用,其功能的强大、设计的复杂与其诞生之初 已不可同日而语。嵌入式系统正朝着网络化、小型化、智能化、多核化和人机界面友好化 的方向发展,相信嵌入式系统会给我们带来更多的惊喜,让我们的世界更精彩, ,(嵌入式技术的重要性 嵌入式技术的发展以及对未来工业革命将产生的巨大影响已经引起世界各国的高度 关注。目前,欧洲的嵌入式技术在航空、汽车电子、通信和消费电子领域处于领先地位, 为了继续保持其自身相对于美国和日本的领先优势,欧盟在,,,,年成立了,,,,,,, (,,,,,;,,,;,;,,;,卸,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,),,,组织,在欧洲范 围内整合资金和技术优势,把嵌入式技术上升到一个重要的战略高度进行发展。欧盟认为, 嵌入式技术是,,领域中发展最快的内容,并将保持巨大的技术发展和商业应用机会,掌握 嵌入式技术的领导位置,将具有强大的经济和政治利益。在我国,嵌入式技术方兴未艾, 国家已经把汽车电子、船舶电子军事、工业控制等嵌入式系统开发应用列为十一五的 重点【,】‟全力打造嵌入式系统孵化基地(,,,,,,,,,,,,,),努力实现嵌入式产品由中国制造 向中国创造的转变,嵌入式技术在产业发展中的重要性仍在持续提升。 ,(,(,嵌入式系统的平台化开发趋势及国内外现状 当前,随着嵌入式技术的蓬勃发展和广泛应用,日益增长的应用需求与相对落后的嵌 入式系统开发模式之间的矛盾,已成为我国乃至世界嵌入式产业界最为突出的矛盾。从零 开始的传统小作坊式开发模式将越来越难以满足日益复杂嵌入式产品开发的要求,,,】,而基 于软硬件基础平台的开发方式能够最大限度的利用已有的研究成果,减小开发难度、缩短 开发时间、抢占市场先机,因此,平台化将是嵌入式产品开发未来的发展方向【,“。但是, 平台化开发需要有先进的开发平台作支撑,而目前嵌入式开发平台的发展状况尚不尽人 意。 第,页 笪星三堡盔兰堡主兰堡丝奎 ,(国外发展现状 国外的嵌入式技术起步较早,嵌入式平台开发已初具规模,在众多的嵌入式开发平台 厂商中,最负盛名的是美国的风河(,,,,鼬,;,)公司,它的实时操作系统,,,,,,,以其 优异的性能一直把持着嵌入式操作系统的半壁江山,它的风河平台(,,,,鼬,,,,,,,,,咖,) 曾获英国电子工业设计奖,其上集成了操作系统、开发工具、接口软件和管理工具等模块, 还包含了硬件和服务器操作参考指南,可以为电子产品的软件开发提供全方位的支持,广 泛应用于消费电子、工业设备、网络设备、服务器等领域。但是,它主要侧重于软件平台 的集成,操作系统只包含了自产的,,,,,,【,和风河,,,,,)【,硬件上只提供某些特定领域的 解决,还未真正实现硬件平台化,实际上就是一个自家产品的集成版。风河公司对其 自身的定位是嵌入式软件厂商,公司既定方针及其自身利益的限制,注定了它不能将平台 化进行到底,不会也不可能站在整个业界的高度去开发一个真正兼容并包的软硬件一体开 发平台。风河之后发布的客户专属平台(;,,,,,,,,,,;,,,;,,,,,,,,,,,,,,),紧密集成了 风河平台,能够按照客户要求进行定制的集成、扩展和优化,虽然在灵活性上有所提高, 但仍未改变其仅作为一个软件厂商的局限性。现在,风河公司已把自己定位成一家设备专 用软件优化(,,,,,,,,;,,,,,咄,,,,,,,,,,,,)的领先厂商,推崇的平台化策略是—— 电子设备厂商必须采用关键任务中间件和标准化的平台方法,通过提高软件部件的重复使 用率,把设备软件的开发、部署和维护提升到一个全新的水平【,,,。但这恐怕是它自己的一 个一厢情愿的想法,真正实现还有待时日。 随着,,;,,,,,,公司,,,;,的加入,嵌入式操作系统的市场迅速向两极化发展,形成 了,(,;,与,,,,,,硌平分秋色的局面。,,,,,专用的集成开发平台,,,,,,,,,,,,,,功能 强大,它包括集成开发环境、平台生成器、,,,导出器、调试器、远程实用工具、仿真器 等,但不包括硬件开发平台。 总的来说,国外嵌入式平台的优秀产品不少,但都是作为特定操作系统的配套产品而 存在,有一定的封闭性和专用性,并且一般不支持硬件开发。社会分工的细化是国外嵌入 式产业的优点,但也使其产品总是带有与生俱来的局限性,难以实现整个行业标准化、集 成化,难以出现真正的软硬件集大成者。与,;机系统不同,嵌入式行业中不存在像当年 的,,,一样的统治者,也就不能出现与,,机一样的行业标准,而且这种情况还将长期存 在。 ,(国内发展现状 目前,我国正处于嵌入式技术发展的初级阶段,国内的嵌入式平台市场可以说还是“洋 产品”的天下。国内从事嵌入式平台开发的厂商不少,但成气候的不多,相当一部分的厂 商还以代理国外产品为主,只有极少几个厂商已经开发出自主的嵌入式开发平台,北京科 银京成公司就是其中难得的一个。科银京成可以说是国内嵌入式产业界的执牛耳者,其自 行开发的“道系统(,,,,,,,,,,,)”是国内第一套具有自主知识产权的嵌入式软件开发平 刨”,,在我国的海军、航空等国防领域有一定的市场占有率;此后,又推出,锄,,,系列 第,页 信息工程大学硕十学位论文 的嵌入式基础软件平台,最新的,锄,,,,,,,已将开发工具和嵌入式实时操作系统集成在 一起,但只包含了自产的实时操作系统——,,,,,,,,,而且不包含硬件平台,只对一些十 分看好的领域,提供软硬件解决方案,如税控收款机等。总之,国内的嵌入式平台还相对 落后,正处于起步阶段,嵌入式产业链还有待完善,各厂商还缺乏提供软硬件整体解决方 案的能力。 可见,无论国内国外目前都缺乏一种真正完整的、通用的嵌入式开发平台产品,尤其 是硬件开发还没有实现平台化,操作系统的支持也十分有限。 ,(,课题来源及意义 本课题来源于国家电子发展基金项目——嵌入式系统通用开发平台,该项目以“打造 开发平台,孵化嵌入式系统【,,的方针为指导,着眼于行业性开放系统和平台建设,旨在 为我国的嵌入式产品开发提供一个通用的、系统的、完整的、可定制的软硬件集成开发平 台,这对于完善我国的嵌入式系统产业链,支持嵌入式系统孵化基地的建设,促进嵌入式 系统开发模式的平台化转变,加速嵌入式新技术和新产品的开发与应用,推动我国信息产 业的迅速发展都具有十分重要的意义。 嵌入式系统通用开发平台是一个集软、硬件平台为一体的综合性开发平台。在硬件上, 以各种微控制器为核心,以嵌入式系统常用组成部件为基本要素,构建成一个通用的硬件 开发和调试平台。在软件上,以各种嵌入式操作系统为核心,构建,,,类型支持库、各种 硬件部件的设备驱动程序库,编制各种仿真、开发、调试、测试、性能分析工具和标准化 的设计例程,并把所有要件集成为一个通用的软件开发和调试平台。通用硬件平台与通用 软件平台有机结合成的通用开发平台,可以为嵌入式系统设计提供一个完整的开发平台和 优化设计方案。 如果将嵌入式通用开发平台自底向上分为硬件开发平台、操作系统和软件平台三层的 话,那么本课题完成的是其中作为基础的下面两层,其目的是为通用开发平台提供硬件开 发平台和操作系统的支持;同时,也可以直接作为通用的软硬件基础开发平台提供给用户, 支持嵌入式硬件的平台化开发和复用,并提供多种跨平台的操作系统支持,相比同类产品 具有一定的优越性。 ,(,本文的主要研究内容及章节安排 根据嵌入式通用开发平台的总体设计思路,本课题坚决贯彻项目的平台化思想,将这 一思想真正渗透到课题设计开发的每个细小环节中去,实现硬件开发平台和操作系统的充 分平台化,做到“一砖一瓦”皆平台。课题完成的主要工作有: ,(针对传统硬件开发复杂、低效的弊端,给出了一种模块化的平台开发方法,设计并 实现了一个通用的模块化硬件开发平台,并给出了接口电路设计和改造的通用方法,解决 了硬件模块的可复用性问题,使硬件开发平台在逻辑上形成了一个硬件模块库,支持了硬 第,页 笪星三翌查堂堡主堂堡堡奎 件的模块化开发和复用,提高了硬件开发效率。 ,(针对传统,,,结构封闭、代码专用的弊端,提出了一种可重构,,,的设计方法, 设计并实现了开放的、通用的可重构,,,,打破了传统,,,的封闭性和专用性,降低了 ,,,的开发难度,提高了开发效率,支持了操作系统跨平台移植和软硬件的并行开发。 ,(通过深入分析操作系统内核及其可移植性,给出了一种基于可重构,,,的操作系 统规范化和跨平台移植方法,改写了操作系统内核中与移植相关的代码,并将其抽象为,,, 的操作系统接口,实现了基于可重构,,,的操作系统规范化和跨平台移植,提高了操作系 统移植效率。 论文后续章节安排如下: 第二章首先论述了嵌入式平台化开发的思想基础、特点、开发内容和步骤,然后论述 了嵌入式通用开发平台的总体设计思路及整体结构,并对课题要解决的技术难点进行了分 析,最后论述了几个下文即将用到的相关概念。 第三章主要论述了模块化硬件开发平台的设计与实现过程。首先论述了模块化硬件开 发平台的总体设计方案,然后以网络接口和,,,接口电路的模块化设计为例,详细论述了 硬件平台的模块化设计与复用的实现过程,并对微处理器与外围模块的时序匹配问题进行 了深入分析,给出了接口电路设计与改造的通用方案,解决了功能模块复用过程中可能出 现的与处理器的工作时序不匹配的问题,最后对模块化硬件开发平台的效能进行了对比分 析。 第四章首先在深入剖析传统,,,弊端的基础上,提出了一种可重构,,,的设计方法, 然后设计并实现了开放的、通用的可重构,,,,并以实例详细论述了其设计和实现过程。 第五章首先深入分析了操作系统内核及其可移植性,给出了一种基于可重构,,,的操 作系统规范化和跨平台移植方法,然后对其中与硬件相关(移植相关)的代码进行规范地 改写和整理,并将其抽象为,,,的操作系统接口,最后在可重构,,,的基础上,实现了 操作系统的规范化和跨平台移植。 第,页 信息工程大学硕士学位论文 第二章嵌入式通用开发平台的总体设计与关键技术分析 在科学技术的世界里有一个通行的规则【,,】——站在前人的肩膀上,充分利用前人已经 取得的成果,把自己的精力专注于自己具有独特竞争优势的地方。要提高嵌入式系统的开 发效率必须解决两个问题:一是不要让所有的软硬件工作都从头做起:二是提高软硬件的 可重用性。解决这两个问题的正确方法就是实现嵌入式系统的平台化开发。 ,(,平台化开发的理论基础 ,(,(,平台化思想概述 平台思想实际上是一个很朴素的思想,它广泛地体现在平时的工作生活中,比如我们 学习的知识往往都是前人留下来的宝贵知识财富平台,我们只是在此平台上的不断应用和 创新,并对平台的不断扩充。因此,平台实质上就是某个领域经验知识的集成,由知识模 块及其管理和应用工具组成。平台的意义在于更好的应用已有的经验知识来开发和探索新 的知识。这里所说的知识包括科学原理、技术方法、工具、产品等等,但这些都必须以某 种具体的方式出现,譬如科学原理可以用编程语言描述的算法和流程来表述,技术方法可 以用函数库来组织。所以说,平台是一种技术,它既可以用于科学研究,也可以用于产品 开发。 平台又是一种形象的说法,实际上也可以看成一个知识库,这个知识库按照一定的规 范来组织,库内的知识都用某种方式(描述规范和语汇)进行描述,并提供了很多接口和 接口工具。描述知识库的方式并不局限于我们比较容易理解的软件的方式,也可以是硬件 的形式,譬如微处理器实际上就是把很多行为抽象成为由很多基本逻辑运算组成,然后用 硬件来实现这些基本逻辑运算。 开发人员通过接口操纵和组合这些基本逻辑运算,创造新的行为。可见开发人员或者 上层平台是利用接口来操作知识库的,并将其中的知识重新组合起来开发出新的产品,或 者产生新的行为【,,】。 接口工具的作用在于填补各个平台之间的“缝隙”,因为不同的平台都有自己的语汇 和规范,接口工具就像一个翻译机,把一种语汇和规范翻译成另一种语汇和规范,更强大 的接口工具还会提供一些管理方法来维护和进化知识库,这种进化不仅局限于容易理解的 软件知识库的增添和修改,而且在硬件中也能实现,譬如现在出现的可重构技术,可以在 不同的时间,在一块,,,,上实现多种不同的电路。 综上所述,我们可以归纳出平台的三个组成要素:知识库、知识库的接口、接口工具。 此外,需要特别指出的是,以软件形态出现的知识库比较常见,称为软库;也存在类似;,, 这样的硬件形态知识库,称为硬库。 这种广义平台思想已经在各行各业以各种形式被广泛应用,而它也正是开发平台的思 第,页 信息工程大学硕士学位论文 想基础和理论依据。 ,(,(,平台化开发的特点和优势 将平台思想应用于产品开发就是产品的平台化开发,也就是指在一个设计集团中,实 行严格的标准化、系列化、规范化设计,将某一类产品领域的基本硬件和基本软件集成为 产品的“统一机芯”,也即基础平台,并对基础平台相关的周边扩展电路及应用软件进行优 化和筛选,形成基础平台的平台资源库【,,】。在开发新产品时,只需基于基础平台,选择平 台库中的相关资源进行集成即可,力求用最小的代价开发出满足应用需求的产品。在平台 化模式下,产品的开发是基于平台建设基础上的,企业的先进技术表现在有先进的软硬件 平台,以及在先进的平台上迅速开发出新产品。平台化开发的技术路线可概括为:根据需 求选择开发平台、进行软硬裁剪、重新制作电路板、自行开发或委托开发应用软件,这是 一种从复杂到简单、从通用到专用的裁剪过程,开发投入少、周期短、风险低。符合专业 技术分工明确、技术合作与交流日益加强的时代发展潮流。 而传统开发模式则是各自为战的、随意性的、个体的、“自然经济”的、所有工作都 需从头做起,大量基础工作不断重复,严重阻碍了生产力的发展和生产效率的提高。其技 术路线可概括为:根据开发需求选定微控制器、选定硬件设计方案、选购特定型号的开发 板及开发系统(如果有的话)、设计和调试硬件电路、自行设计或委托开发底层软件和应 用软件,这是一种从无到有、由简到繁的开发过程,开发投入大、周期长、风险高。 与传统开发模式相比,平台化开发的优势主要体现在: (,)易用性。屏蔽了具体实现思想,只经过必要的相对较少的接口,为平台应用者提 供一个易于理解、易于操作的友好界面。 (,)快速性。就像建筑工人构建房屋,不用从零开始,而是在基于大量知识集成的基 础上,通过采用通用构件来组装目标系统,进而缩短产品的研发周期。 (,)可维护性。平台的标准化、系列化、规范化、模块化、参数化设计,降低了平台 产品失败的风险,提高了系统的可理解度,有利于产品的建设、维护与更新。 (,)易扩展性。可扩展性,或者说可持续发展的能力,是任何开发项目都需要考虑的。 而平台化开发则天生具有这种能力,它还可以简单地添加满足条件的、经过实践检验的新 构件模块,以进一步扩展平台的规模和功能等【,,。。 总之,平台方式代表了广大产品开发者最根本的利益,代表了先进企业文化的前进方 向,代表了先进生产力的发展要求,是现代化大生产方式下产品开发不可扭转的发展方向 和唯一的正确模式。 ,(,(,嵌入式平台化开发的内容与步骤 嵌入式技术的不断发展和应用需求的不断增长,使得嵌入式开发的难度和复杂度不断 增加,需要采用先进的开发模式来降低开发难度,提高开发速度,改变嵌入式产品开发举 步维艰的现状。因此,构建通用开发平台,应用平台化思想进行嵌入式产品的开发成为必 第,页 堕星三堡奎堂堡主堂垡笙塞 然。中国计算机学会微机专业委员会最新的《中国计算机科学技术发展报告》指出:平台 化开发策略被广泛采用将是嵌入式系统发展的趋势之一脚。 嵌入式系统的开发平台化包括硬件开发平台化和软件开发平台化。 ,(硬件开发平台 硬件的平台化要求硬件电路的设计尽量做到“模块化”和“拼图化”,根据产品的系统扩 展与配置要求,制定外围扩展的典型系列电路。这些典型电路应具有典型性、通用性、系 列性和扩展性,做到不需改动或者经很小改动就可以运用到类似的产品中。并针对不同的 应用,规划出优选的硬件结构,例如智能仪表中,针对不同的精度要求规划出低、中、高、 超高精度的优选数据采集模块电路。 ,(软件开发平台 软件的平台化要求实现软件的构件化设计,以提高软件的易复用性和可重构性,应大 力采用中间件的设计思想,增强软件的可移植性和硬件无关性,并形成标准的、构件化的 应用软件库、驱动库、专家函数库、中间件库等。以操作系统为核心,借助其出色的“软 件核心”能力,将所有的软件资源都方便、灵活的管理并调度起来,更好地为整个系统服 务。同时,操作系统及系统功能软件(文件系统、网络服务等)应根据嵌入式系统的自身 条件和特点按需选择。 嵌入式系统的平台化开发步骤如下: (,)客户需求分析 相对台式机系统,嵌入式系统的客户需求一般都明确清晰。这一部分所占开发周期比 重也应相应降低。但在对客户需求分析的同时要考虑客户潜在的后续应用,在设计系统硬 件时尽可能留出余量。 (,)选择合适的开发平台 主要包括硬件开发平台的选择、操作系统的选择和其它软硬件资源的选择。 硬件开发平台的选择主要是指嵌入式处理器及其开发板的选择。其中,嵌入式处理器 是整个硬件开发平台的核心,它的选择原则是:满足功能性和非功能性指标(价格、供货 速度)需求的、市场应用收效良好的、硬件配置最少的嵌入式处理器【,,。。同时也需要考虑 开发人员对此系列处理器的熟悉程度及处理器对嵌入式操作系统的支持程度。处理器开发 板的选择原则是能够使其所带硬件资源在最大程度上满足应用需求,宁多勿缺,因为裁剪 总是相对比添加容易。 操作系统的选择首先要考虑处理器是否支持的问题,然后考虑系统的复杂程度、实时 性需求和其它系统功能需求(文件系统、网络服务等),此外,如果操作系统是非开源的, 还应考虑其购买和服务成本的问题。 其它软硬件资源是指在已选择的硬件开发板和操作系统尚不能完全满足需求的情况 下,需要增加的软硬件资源,主要包括:硬件模块及其驱动程序、应用软件等。而且这些 软硬件资源应尽量从各种资源库中选择,实在没有的才自行开发。 第,页 笪:垦三堡奎堂堡主堂笪堡苎 (,)软硬件裁剪、集成和调试 根据应用需求,对硬件开发平台和操作系统进行裁剪,去掉不必要的功能模块,以减 小体积,降低成本。将所有软硬件资源集成并调试,其中,软硬件的设计和调试可以是串 行的,也可以是并行的,这取决于是否有硬件抽象层的支划蝎,。 (,)系统重制作并形成产品 只需将上一步集成并调试好的软硬件,特别是硬件,进行重新制作,在物理上实现裁 剪,以满足产品在体积、成本、外观等方面的要求,最后加载上已调试好的软件就可以形 成产品了。产品也许还会经过严格的测试,解决出现的问题,直至开发出一个可靠而优秀 , 的产品。因此,在建立开发平台的时候,应尽量保证各软硬件资源都是经过优选,并具有 相当的可靠性的。 ,(,通用开发平台的总体设计 ,(,(,平台的整体结构 如前所述,嵌入式系统通用开发平台是一个集软、硬件平台为一体的综合性开发平台, 旨在为用户提供一个近乎完美的嵌入式解决方案:硬件支持范围广、软件集成程度高,可 扩展、可定制、可重构、操作系统内核可裁剪、功能组合模块化、平台架构可拆分,这一 切使得嵌入式系统的开发变得像搭积木一样简单,其整体结构如图,所示。 封 瓣 嵌入式实时操作系统 ,, , 硬 件 开 发 平 台 , 厂, 图,嵌入式通用开发平台结构框图 ????,? ,(,(,平台的分层设计 ,、???? 由图,可见,嵌入式通用开发平台在结构上主要可分为硬件开发平台、操作系统和软 第,页 , ? 信息工程大学硕士学位论文 件平台三层,各层设计如下: ,(硬件开发平台层 硬件开发平台层由一系列硬件开发板组成,它的主要作用是为通用开发平台提供广泛 的硬件支持。 在硬件组成上以嵌入式处理器为核心,包括网络接口、,,,接口、,,,接口、标准串 口、液晶控制及显示、触摸屏、存储器等常用外围部件。其中,嵌入式处理器的支持范围 应广泛,支持,,,、,,,,、,,,、,,,,,,;、;,,,,,,;、,(,,,,等主流体系结构;网络 接口支持,,,,,,,,传输速率;,,,接口支持,,,,(,,,(,,,(,标准;触摸屏应包括电阻式、 电容式等不同类型;串口支持,,(,,,,,,,,,,,等标准:液晶显示支持彩色、黑白、灰度三 种等级:存储器包括,,,,、,,,,、,,,,,等不同类型和容量的存储芯片。此外,其 它常用外围部件也应具有一定的硬件包容性,以满足不同的应用需求。 在电路设计上应具有典型性、系列性、可扩展性和一定的通用性,做到模块化、拼图 化,实现可定制、可裁剪、可扩充和可复用。 硬件开发平台在物理形态上是一系列独立的硬件开发板,但在逻辑上是一个资源丰富 的硬件模块库,各模块功能完整,有机结合为硬件开发平台;从功能模块到硬件开发板到 硬件平台都可作为产品提供给用户。 ,(操作系统层 操作系统层由各种嵌入式实时操作系统组成,主要包括“;,,,,,】【、,,洲,, ,,,、 ,,,,,,?、,,,,,,岱、,,,,,等常用操作系统。该层所需工作主要是:实现多种操作系统 在硬件开发平台上的跨平台移植;分析操作系统内核结构和原理,实现对内核的改造、改 进、裁剪和定制;设计并实现可重构的板级支持包,,,,支持,,,的快速开发和操作系统 的跨平台移植。 ,(软件平台层 软件平台层包括应用软件库、专家函数库、设备驱动库、,,,类型库、编译器、连接 器、调试器、反汇编器和仿真工具等各种开发中用到的软件资源。 根据项目安排,本课题完成的是硬件开发平台层和操作系统层。其中,课题又将操作 系统层的工作分为,,,的开发和操作系统的移植,本文将按顺序分别对它们进行论述。 ,(,通用开发平台的关键技术分析 ,(,(,硬件开发平台的模块化设计及模块复用问题 硬件开发平台由一系列通用硬件开发板组成,每块开发板都以某款嵌入式处理器为核 心,包含几乎所有的嵌入式系统常用的功能外设。如果采用传统开发模式,单独为各款处 理器设计其开发板,一则工作量太大,二则违背了平台化思想,导致大量重复工作,降低 了开发效率。因此,硬件开发平台中的各开发板均采用模块化设计,将各开发板上的功能 电路设计成硬件模块,所有模块以开发板为载体在逻辑上形成一个资源丰富的硬件模块 第,,页 堡星王堡查兰堡?堂垡笙奎 库。各硬件模块都是精心设计、优选的电路,具有典型性、通用性和系列性,不经改动或 稍作改动就可以运用到各开发板中,各个模块即是一个个小平台,每块开发板都是基于这 些“模块平台”开发的。模块化硬件开发平台在物理上是一系列分离的开发板,但在逻辑 上却是一个有机结合的硬件模块库,可以支持嵌入式硬件的模块化开发。而这便是平台思 想的精髓所在,也是模块化硬件开发平台与其它厂商开发板的本质区别。 但是,只有实现各模块的成功复用,模块化才有意义,各硬件模块才不会被“拘禁” 在具体的开发板上,它们“游离”于整个平台空间,可以进行“自由组合”,从而开发出 不同的硬件开发板或产品来。然而,硬件模块的设计是与处理器密切相关的,不同处理器 的接口和时序有可能是不一样的。因此,在这块开发板上的硬件模块也许会因为接口和时 序不匹配而无法直接复用到另一块开发板上去,或者平台中的硬件模块无法直接复用到新 的嵌入式系统中去。可见,硬件模块的复用问题实际上就是怎样使各模块与各款处理器匹 配工作的问题。如果模块与处理器的接口和时序匹配,则可以不经改动直接复用,如果模 块与处理器的接口和时序不匹配,则需要先对模块的接口电路进行改造,然后才能复用。 因此,这部分的难点主要有两个:一是怎样设计使硬件模块更具通用性和可复用性; 二是怎样解决硬件模块复用过程中出现的与处理器时序不匹配的问题,也即接口电路的设 计与改造问题。 ,(,(,板级支持包的可重构性问题 板级支持包(,,,)是介于硬件和操作系统之间的一层【,,,,确切地说是属于操作系统 的一部分,其主要目的是:支持操作系统,使之能够更好地运行于硬件主板;隔离操作系 统和硬件平台之间的相关性,增强操作系统的可移植性。,,,是相对于操作系统而言的, 不同的操作系统对应于不同定义形式的,,,,不同操作系统,,,的写法和接口定义一般是 不同的,,,,。,,,也是与具体硬件相关的,电路板上的硬件不同,编写的,,,也会不同。可 见,,,,是特定操作系统和特定硬件环境专用的:若硬件环境完全相同,而操作系统不同, 则需要专门开发不同的,,,;即使操作系统相同,若硬件环境稍有不同,仍需开发专门的 ,,,。而且,由于,,,与硬件和操作系统密切相关,需要其开发人员对底层硬件、处理器 指令集和操作系统都非常熟悉,开发难度较大。 因此,如果采用传统的开发方法为每种操作系统在每块开发板上专门开发一个相应的 ,,,,显然是不合时宣的,也是效率低下的,存在着重复开发严重、代码通用性差、维护 工作量大等诸多问题。如何实现,,,的可重构和通用化开发,降低,,,的开发难度,提 高开发效率,将是课题需要解决的难点之一。此外,如何使,,,支持操作系统的跨平台移 植也是课题要解决的一个难点。 ,(,(,操作系统的规范化和跨平台移植 虽然有了,,,的支持,但是移植操作系统的工作仍然很有难度。操作系统中所需移植 的部分与硬件平台密切相关,需要移植者具备全面的软硬件知识。特别是与处理器相关的 第,,页 信息工程大学硕士学位论文 代码(如任务切换、开关中断等),一般无法用;语占完成,需要用汇编语占实现,开发 难度较大。操作系统内核代码多而复杂,但是与硬件相关的只有一部分,而这部分代码有 可能在内核各处分布,因此,需要分析操作系统代码结构,划分出与硬件相关的部分,并 将其按,,,接口要求进行规范化修改或重写,以便于在,,,的基础上实现操作系统的跨 平台移植。此外,还应研究内核裁剪方法,实现内核的可裁剪和可定制。 由以上分析可见,仅实现一个操作系统在一块开发板上的移植,就有很大的工作量。 如果实现每一种操作系统在每一块开发板上的移植,则所需的工作量可想而知。因此,迫 切需要实现操作系统的跨平台移植,即通过,,,的支持,实现一个操作系统在一块开发板 上的移植代码可以几乎不作改动应用到另一块开发板上,这样就会大大减少操作系统移植 部分的工作量。因此,这部分的难点主要是如何在,,,的基础上实现操作系统的规范化和 跨平台移植。 综上所述,本文需要解决五大技术难点,即硬件开发平台的模块化设计、硬件模块的 复用、,,,的可重构开发、,,,对操作系统跨平台移植的支持和操作系统的规范化、跨平 台移植。论文将在后续章节中分别加以论述和解决,课题工作流程及技术难点分布如图 ,所示。 操作系统的移植 ?,::,,可重构,,,的实 一,花集群磐现 ,?,,,的可;,, ,?硬件开发平台; 嚣 :的模块化设计: ,三二:,,二,,(季芝薹 :?硬件模块的复用:,,的跨平台移植,,‟ 薏秦缔,,::::?:,,。,…………, 图,工作流程及技术难点分布 翠薯嚣君跨~。一一。,,(支,(,几个相关概念的论述 持操作系统,。一一。。,平 由于论文的后续章节将会经常用到几个操作系统相关的重要概念,所以文章先在此对 台移植, 它们作简单论述。 ,(操作系统的实时性 首先介绍什么是实时系统,实时系统就是能在有限的时间内获得正确结果的系统【,】。 一般对实时系统有两个要求:第一,必须产生正确的结果,称为逻辑或功能正确(,,,,;,, ,,,,,,,;,,,,,,;,,,;协,,,);第二,必须在预定的时间内完成,称为时间正确(,,,,,, ;,,?协,,,)。既然如此,实时性必须包括功能上的正确性和时间上的正确性【,”。然而,很 多人对时间上的正确性不甚理解,常常会把它误解为一个字“快”,认为越快就越实时, 其实不然,实时性更关注的是可确定性或者说是可预测性,就是能不能保证某事件在需要 执行时一定会在一定的时间内被执行。实时系统又可根据对实时性要求的严格程度分为硬 第,,页 笪星三矍查堂堡主堂堡堡奎 实时和软实时系统。 实时操作系统是具有实时性且能支持实时控制系统工作的操作系统【,,。其首要任务是 调度一切可利用的资源来完成实时控制任务,其次才着眼于计算机系统使用效率的提高, 其重要的特点是能满足对时间的限制和要求。在任何时刻,它总是保证优先级最高的任务 占用;,,。从性能上讲,实时操作系统与普通操作系统的区别主要体现在“实时”二字上, 在实时计算机中,系统的正确性不仅依赖于计算的逻辑结果,而且依赖于结果产生的时间。 实际上,操作系统的实时性是个相对的概念,因为不同的应用环境在时间上的要求是不一 样的,也许在一个环境里是实时的,但在另一个环境却算不上了。由于大多数嵌入式操作 系统都是实时的,所以往往把嵌入式操作系统与实时操作系统等同起来。 ,(抢占式和非抢占式内核 所谓内核是抢占式(,,,,,,,,,,,,,,,)或非抢占式(,,,,,,,,,,,, ,,,;,,,),主要是 以系统中当前任务维护处理器使用权的强硬程度来区分和定义的。如果只是在当前任务执 行结束,或者由于某种原因主动放弃,,,使用权时,才使等待运行的任务获得,,,使用 权,那么以这种方式实现任务调度的内核是非抢占式的。反之,如果允许当前任务可以被 强制终止执行,并将;,,使用权转让给其它任务的内核是抢占式的【,,。 非抢占式内核的一个特点是几乎不需要使用信号量保护共享数据,可使用不可重入函 数(不能由多个任务并发使用,否则会造成数据错误的函数),但其缺陷是最紧急的任务 也许会得不到及时的处理,任务级的系统响应时间是不确定的。抢占式内核的系统响应时 间很快,但是不能直接使用不可重入函数,必须先对其进行加锁保护,而且对共享数据的 使用也需要互斥量、信号量等保护机制,如果是基于优先级的抢占式调度算法的内核,还 可能会产生优先级反转的问题,此问题会在第五章专门论述与解决。 ,(微内核和宏内核 宏内核也称单内核(,,,,,,,,,;,,,,,),是指包含操作系统中所有的系统相关功 能模 块的内核吲。而微内核则只包含最基本、最核心的那部分功能模块(如任务创建核删除、 内存管理、中断管理等),其它功能模块(文件系统、网络协议、设备驱动等)则放在核 外,作为服务进程为用户程序提供操作系统服务。下面以图,显示两者的区别。 砸。面,应吵咂,炒, 线程调度,,,,;,,定时 《矽, 内核内存管理,,中断调度,,同步 吵 《多?, 设备驱动程序虚拟内存管理 内核圈固圆 文件系统,,,,,管理器, 陌网阿同厂, 微内核操作系统 宏内核操作系统 图,微内核与宏内核结构示意图 西, 第,,页 信息工程大学硕士学位论文 宏内核的内部可分成若干模块(或者是层次或其他)。但在运行时,它是一个独立的 二进制大映像。模块间的通信不是通过消息传递,而是通过直接调用其他模块中的函数实 现的。而在微内核中,用以完成系统调用功能的模块通常只进行简短的处理,然后把其余 的工作通过消息传递给核外的服务进程来完成,服务进程间通过消息进行通信,这样的结 构也适用于分布式系统。微内核的根本思想就是要保持操作系统的内核尽可能小,因为内 核是直接与硬件相关的,内核越小,就越容易实现操作系统在不同硬件平台上的移植。而 且内核需要常驻内存,因此,微内核就可以更有效的利用内存。微内核操作系统系统配置 灵活、可裁剪性好,易于理解,易于维护。微内核把一部分系统模块放到内核外作为服务 进程运行,即使某个进程出问题了,内核可以将其删除并重建,不会影响整个内核,提高 了系统的可靠性、稳定性和自愈合(,,,,,,,,,,,)【,,】能力。但是,微内核的服务进程相互 隔离,不利于系统的整体优化,更重要的是进程间的通信会引起系统效率的损失。 因此,微内核和宏内核各有利弊,究竟哪个更优秀的问题引起了业内专家的广泛争论。 宏内核的支持者声称微内核的消息传递开销降低了系统效率,而微内核的支持者则认为微 内核设计的灵活性和可维护性可以弥补任何损失。但是无论如何,微内核操作系统在嵌入 式系统中的广泛应用已成了不争的事实。总体上来说,宏内核操作系统在,;机上占了主 导地位,但是嵌入式系统的特性和要求更适合微内核操作系统的发展,在当前的硬件条件 下,微内核在效率上的损失小于其在结构上获得的收益【,,,,选取微内核操作系统是嵌入式 系统发展的一大潮流。许多流行的嵌入式操作系统,包括应用最为广泛的,,,,,,,和 ,,,,,都是微内核结构的。因此,课题也将以微内核操作系统为主,相关的设计也主要是 针对微内核的,下文提到的操作系统除特别声明外都是微内核结构的。 ,(微内核、抢占式与实时的联系 内核是否抢占式与系统是否实时实际上并没有必然的联系,但是抢占式的内核可以使 紧急任务通过抢占当前任务的;,,使用权而获得更及时的处理,可以实现更好的实时性, 因此,实时操作系统的内核一般都应该是抢占式的【,,,。 内核是否微内核与系统是否实时之间实际上也没有必然的联系,但是由于微内核很 小,只把具有较短执行路径的服务包含在内核中,在内核中运行的时间很短,基本上不存 在不可抢占的时间,可以更好的实现抢占式,实时性也就有了更好的保证。因此,很多嵌 入式操作系统,特别是实时性、可靠性高的优秀操作系统(,,,,,,,、,,,,,等)都是抢 占式、微内核的实时操作系统。 ,(,本章小结 本章首先论述了嵌入式平台开发的思想基础、特点和优势、内容与步骤,然后论述了 通用开发平台的总体设计思路及整体结构,并对其关键技术进行了分析,并在最后论述了 几个与操作系统相关重要的概念,为下文的论述作准备。 第,,页 信息工程大学硕士学位论文 第三章模块化硬件开发平台的设计与实现 硬件开发平台是整个通用开发平台的基础,旨在为通用开发平台提供广泛的硬件支 持,同时也可以直接为嵌入式产品的开发提供通用的硬件开发平台支持。 如果采用传统设计思想将硬件开发平台设计为一系列开发板的简单集合,则平台可以 向上提供的复用级别是开发板级的,可复用性极低,与其它厂商的普通开发板无异:而且 整个平台开发的工作量是巨大的,开发效率也不会得到提高。可以说,这样的设计是徒劳 的,也是毫无创新意义可言的,这是“伪平台主义”的表现,并没有真正实现平台化,或 者说平台化还不够深入、彻底。 因此,需要设计一个模块化的硬件开发平台,即将平台中各开发板上的功能电路设计 成硬件模块,所有模块以开发板为载体在逻辑上形成一个资源丰富的硬件模块库,支持硬 件的模块化开发。但是,只有实现硬件模块的成功复用,模块化开发的意义才能真正得到 体现,硬件开发的效率才能真正得到提高。然而,硬件模块的设计是与处理器密切相关的, 不同处理器的接口和时序有可能是不一样的。因此,在硬件模块的复用过程中,有可能会 出现由于其接口和时序与新处理器不匹配而无法直接复用的情况,这时就需要先对硬件模 块的接口电路进行改造才能实现复用。可见,硬件模块的复用问题实际上就是怎样设计或 改造接口电路使各模块与各款处理器匹配工作的问题。 本章论述了模块化硬件开发平台的设计与实现,并给出了接口电路设计与改造的通用 方法,解决了硬件模块在复用过程中可能出现的与处理器时序不匹配的问题,将平台的复 用级别降低到硬件模块级,极大地提高了平台的可复用性,实现了硬件开发由元件级设计 向模块级“拼接”的转变,与传统开发模式相比,模块化硬件开发平台在很大程度上提高 了嵌入式系统的硬件开发效率。 ,(,模块化硬件开发平台的总体设计 ,(,(,总体设计概要 模块化硬件开发平台在物理上由一系列功能丰富的通用硬件开发板组成,且各硬件设 备都采用模块化设计,在逻辑上形成一个资源丰富的硬件模块库,支持硬件模块化开发和 复用。为此,硬件开发平台在设计上应具有包容性、典型性和通用性,做到模块化、拼图 化,实现可定制、可裁剪、可扩充和可复用。其中,硬件模块的可复用性是提高硬件开发 效率的关键,因此,硬件模块的设计应具有一定的通用性,使之适用于大多数应用,并且 还应解决硬件模块在复用过程中可能出现的与处理器的时序不匹配问题。硬件开发效率的 提高主要表现在两个方面:一方面是硬件开发平台自身开发效率的提高;另一方面是产品 硬件基于平台的开发效率的提高。实际上这两个方面又是一致的,因为硬件开发平台是一 个不断积累、不断扩充的平台,新开发的硬件模块也会在逻辑上入库,硬件模块库包含的 第,,页 笪垦三垦奎堂堡主兰堡丝壅 资源将会越来越多,基于硬件开发平台的硬件开发也将会越来越容易。 硬件开发平台的模块化设计与实现过程可以概括为:选定嵌入式处理器,根据硬件需 要确定其开发板所需的硬件功能:从硬件模块库中选择合适的模块,分析模块与处理器的 接口和时序的匹配性;对不匹配的硬件模块的接口电路部分进行改造;与处理器和其它模 块一起“拼装”成开发板,同时,也将改动的新模块在逻辑上入库。具体开发流程如图 ,所示。 ,选定嵌入式, ,丝堡墨, (((( 的其它硬件功能 ((((从硬件模块库中 选择合适的模块 ((((((, ,,是否有相同或, ,~(((一 确定开发立翌 分析模块与处理器的 接口和时序的匹配性 板所需 模块化设计 是否匹配 蓝?二 对接口电路部分 进行改造 组成开发板 ? ,改动的或新的模 :块在逻辑上入库, , (、‟((一一,,一,„: 图,硬件平台的开发流程 这是一个不断集成的“黑洞”效应,硬件模块库所包含的硬件模块会越来越多,在此 基础上的硬件开发会变得越来越简单。所以,硬件开发平台的宗旨就是使所需的硬件资源 尽量都能在库中找到相同或相近的硬件模块,在最大程度上减少硬件开发所需的工作量。 由于时间限制,课题目前完成了硬件开发平台的总体设计和其中的两块具有代表性的 通用开发板的开发,硬件开发平台的后续扩充工作有待后来者完成。因此,下面本文将以 这两块开发板的模块化设计和模块复用的过程为例,详细论述模块化硬件开发平台的设计 和实现过程。 信息工程大学硕士学位论文 ,(,(,微控制器的选择及其时序分析 按照开发流程,课题的首要任务就是选择处理器。由于本课题不面向特定应用,处理 器的选择应考虑以通用性为主。 嵌入式处理器主要分为:嵌入式微处理器(,,,,)、嵌入式微控制器(,,,)、嵌入 式,,,处理器(,,,,)和嵌入式片上系统(,,,)【,,,。其中,嵌入式微控制器又称单片 机,由于其在片上集成了丰富的外设资源,集成度高、体积小、功耗和成本低、可靠性高 等特点,成为嵌入式产业的主流,其具代表性的通用系列包括,,,,、,,,、,,,,、,,,、 ,,,,,,,、,,,,,,,,、,?,,,等。鉴于市场占有率、通用性及应用积累的考虑,课题选择 了,(,,,也系列的,,;,,,,和,,,系列的,,,,,,,两款微控制器。微控制器是开发板 的核心,一般来说开发板都是针对某款微控制器而言。为了文中叙述方便,将把嵌入式微 控制器简称为微控制器,并把以微控制器,,,,,,,为核心的开发板称为,,,,,,,,,,把 以微控制器,,,,,,,为核心的开发板称为,韶,,,,。 (,)微控制器,,,,,,, ,,,,,,,是,,,,,,,,公司生产的一款基于,,,,,,;,,,,;,,,,,, ,的,,位微控 制器,最高系统时钟可达,,,,,:低工作电压(,(,,,,(,,),低功耗;片内资源丰富,具 有,,,,,,,,,,,,,,,,和,,,,,,,,,个可编程间隔(中断)定时器,,个定时器 模块,可做为脉宽调制器(,,,);片内还包含了众多接口,有,个,,,接口,,个串行 通信接口(,,,),,个,,位,,,转换通道,,个,,,,控制器和,个,,,,(,,(,,,,,,,,,,,,,,) 控制器;在主模式下,外部总线接口支持,,,,,位双向数据总线,,,位地址总线,,个片 选,总的外部访问空间可达,,,,;端口引脚功能配置灵活,是一款具有较高性价比的微 控制器,在嵌入式微控制器市场上很受欢迎;采用时钟同步总线,在时钟上升沿处读入数 据,在上升沿前写出数据,外部总线接口时序【,,,如图,所示。 ,,,,,‟,, ,,;“怔,,(((,,,,;,,, ,【,,:,】 ?? ,,撑 ,【,;,“,;赢抄 ,;,,赢(,,,;删,,,( ,,,,?,,) ,,,,(,,,,石。未虬,,一 ;) ,酣 ,,,;,,葑少,, ,;,,,?才‟,,,,【,,:,,(,,,,,,,《随 ,,) ,,,,;,牟—一,【,,:,】(,,, 、,一——,) ,,,,:,】,(,,,—„朱,;,,? ,,,一 ,,) ,, ,,【,:,】,(,,,,, ,,) 图,,,;,,,,外部总线时序图 第,,页 堕星三堡奎堂堡主兰垡堡塞 由图,可见,,,,,,,,除了没有数据选通信号,,,外,外部总线时序与,,,,,系列 近似。由于,,,,,,,采用时钟同步总线,上图所标注的各时间段都是相对于;,,,,, 上升沿的。由图中看出:,,;,,,,的;,,信号几乎与地址信号,【,,:,,同时有效和撤消, 因为,,样信号实际上就是由处理器高位地址,,,,,,,:,,】译码得到的;,【,,:,】信号与写信 号,,,(,,,,,)几乎同时撤消;,【,,:,】(、,,,,,)在,,,(,,,,,)被否定后很快就撤消了:地址信 号,【,,:,】总是比读,写信号,,,,和输出使能信号,,拌先建立一段时间。此外,还需说明的 是输出使能信号。雕只在外部读周期间为低有效,而在外部写周期间一直为高。 (,)微控制器,,,,,,, ,,,,,,,是,,,,,,,公司生产的一款基于,,,,,,),,(,,,,,,的,, ,,,位微控制器, 片内带有,,,,,,,,;通过外部存储器接口可将存储器配置成,组,每组的容量高达 ,,,,;,路,,位,,,转换器,转换时间低至,(,,,,,;,个,,位定时器(带,路捕获和, 路比较通道)、,,,单元(,路输出)、实时时钟和看门狗;,个,,,,,,工业标准,,,,、 高速,,,接口和,个,,,接口;多达,,个通用,,,口(可承受,,电压),,个边沿或电平 触发的外部中断引脚;支持,,,,,接口调试;通过片内锁相环(,,,)可实现最大为,,,,, 的,,,工作频率;双电源:,,,电压(,(,,?,(,,,),,,,电压(,(,,?,,,,,可承受,, 电压);是,,,,系列的一款主流产品,应用范围广泛,其外部总线接口读写时序【,,】如图 ,所示。 舭,八几几几几 邙,(枷)——,厂 、 ,【,,:,】(佗,,) 一,,,,,一,,,,,,,,?,,, ,,撑 ,,(,,,,,) ,,,;,, ,,,, ,,,【,:,】,,,,【,,,,,, 酬 、,、, ,,,, ,【,,:,】 ,,,、 ,【,,:,】(,,,,, ,;) 图,,,,,,,,外部总线时序图 由图,可见,,,,,,,,与,,,,,,,的外部总线时序差异较大,,,,,,,,实际上 是非 多路复用英特尔时序。,,;,,,,的片选信号;,撑与地址信号,【,,:,】并不是同时有效和撤 消,而且,;,撑信号在读,写时序中的时序特性也不一样;原来在,,,,,,,中的输出使能 信号,础在这里是读信号;地址信号,【,,:,】在写信号,,撑肯定前先建立了,,,;,,,,,;,,,,, 时间,并且在写信号,,撑被否定后还保持,,阴,,,时问;读信号,,撑将在数据信号 第,,页 笪星王矍查兰堡主兰垡堡奎 ,,,,:,】(,,,,)有效前先建立,,,,,时间;数据信号,,,,:,】(,,,,,)将在写信号,,撑被否定后 继续保持,,?,,,,,时间。此外,还需说明的是输出使能信号,,捍只在外部读周期间为低有 效,而在外部写周期间一直为高;,,,【,:,】与,,,并不是引脚复用,只是时序特性一致。 由上分析可见,,,,,,,,和,,,,,,,的外部接口时序不一样,在设计硬件模块的接 口电路时需要注意这一点。 ,(,(,硬件平台的模块化及组成 按照硬件开发平台的整体设计思路,,,,,,,,和,硒,,,,,,将包括嵌入式系统常用 的、通用的功能电路,主要有:网络接口电路、,,,电路、存储器系统电路、串口电路、 触摸屏电路等,我们首先将这些电路按其实现功能进行划分,然后以模块化的方式设计成 一个个硬件模块。模块化设计的,,,,,,,,和,船,,,,,分别如图,和图,所示。 串口模块,,,,,模块网络接口模块液晶控制,显示模 块(,,,内置)(,, ,内置)(,,,,,,(,,,,,,,,,,) ,,,) ,,,模块,;,模块,,,模块电源模块 (,,,内置),,,,(,,,,,,,)(,,,内置)(,(,,,(,,,,) ,,,模块存储器模块 (,,,,(,,,,,,,,,,(,,,,,,,,,,,,,,,,,,复位模块 ,,,,,(,,,,,,,,),,,,,,,,,,,,,,,,,) ,?,,,, 图,模块化设计的,,,,,,, 串口模块,,,,,模块网络接口模块液晶控制,显示模 块(,,,内置)(,;, 模拟)(,,,,,,,,(,,,,,,,,) ,) ,,;模块,;,模块触摸屏模块电源模块 (,,,内置),,,,,(,,,,,,,)(,,,,,,,)(,(,,,,) ,,,模块存储器模块 (,,,,(,,,,,,,,)(,,,,,,,,,,,,,,,,,,复位模块 ,,,,,,,,,,,,,,,,,) ,,,,,,,, 图,模块化设计的,,,,,,,旧 第,,页 信息工程大学硕士学位论文 ,(,(,硬件模块的可复用性分析 根据课题安排,本文将首先实现模块化的,,,,,,,,由于此时硬件模块库中还没有任 何模块可以复用或参考,所以,觞,,,,的各模块都需要从头设计,但是,船,,,,,,的模 块化开发就已经可以在,,,,,刚订的基础上进行了,下面对,硒,,砌?各模块在,船,,,,, 上的可复用性进行分析。 ,,,,,,,包括的硬件模块有:微控制器模块、网络接口模块、系统存储器模块、,,, 模块、电源模块、复位模块、串口模块、,,,,,接口模块、液晶控制及显示模块、键盘输 入模块、,,,模块和,,,模块,,,,,,,,,与之相比少了键盘输入模块和,,,模块, 但是多了触摸屏模块,它们功能相同的模块有,,个,但不是每个模块都是可以实现复用 的。其中: 微控制器模块:由于微控制器芯片,,;,,,,和,,,,,,,属于不同体系结构且互不兼 容,将无法实现复用; ,,,模块:,,,转换器已经被集成到,,;,,,,和,,,,,,,内部,片外只有一个简 单的接口,因此,这个模块实际上也无法实现复用: 串口模块和,,,,,接口模块:虽然有部分电路已集成在,,,,,,,和,,;,,,,内 部, 但是片外还需电平转换芯片及相应接口,而且,船,,,,和,鹤,,,,,,的串口和,,,,, 接口都符合,,(,,,(;标准,因此,模块电路的片外部分可以实现复用。 电源模块;,,,,,,,上的电源模块采用了专用电源芯片,可以提供精确的,(,,、,(, , 和,,电源,可以满足一般的嵌入式元器件的电源需求,,,,,,,,‟,只需要,(,,和,,电 源,因此,可以实现复用。 复位模块:,,,,,,,上的复位模块可以提供任意宽度、不同电平的高、低脉冲输出, 满足,,,,,,,,,上各芯片的复位需要,可以实现复用。 液晶控制及显示模块:为了系列化和包容性的需要,在,,,,,,,和,髂,,,,,上采 用不同的控制芯片分别实现了分辨率为,,,×,,,和,,,×,,,的液晶显示,而且该模块的 电路设计与微控制器的接口和时序相关,因此,该模块不能实现复用。 网络接口模块和,,,模块:该模块在,船,,,,和,,,,,,,,上采用的控制芯片相 同,但是电路与微控制器的接口和时序密切相关,需要对其接口电路进行改造才能从 ,,,,,,,复用到,,,,,,,,上,因为,,,,,,,和,,,,,,,的接口和时序是不兼容的。 存储器模块:该模块采用相同的,,,,,芯片和兼容的,,,,芯片,但是电路与微控 制器的接口和时序密切相关,需要对其接口电路进行改造才能从,,,,,,,复用到 ,嬲,,,,,上。 综上所述,在这些功能相同的模块中,微控制器模块、,,;模块和液晶控制及显示模 块块,由于采用芯片不同,将不能被复用;串口模块和,,,锄接口模块的控制部分已被 集成在微控制器内部,且外部接口符合相同的工业标准,可以实现复用;电源模块和复位 第,,页 笪星三堡查堂堡主兰垡笙苎 模块可以直接复用;网络模块、,,,模块和系统存储器模块与微控制器接口和时序密切相 关,可能会出现硬件模块与微控制器的时序不匹配问题,如果时序匹配,则硬件模块可以 直接实现复用,如果时序不匹配,则需要先对硬件模块的接口电路进行改造,然后实现复 用。其中,硬件模块与微控制器的时序匹配问题,是硬件模块复用过程中出现的最主要的, 也是解决难度最大的问题,出现的情况较为普遍且实现较为复杂,因此,本文就以网络模 块和,,,模块为例,着重论述硬件模块的设计与复用过程,并给出接口电路设计与改造的 通用方法,解决了硬件模块与微控制器的接口和时序匹配问题,实现了硬件的模块化开发 和复用。 ,(,网络接口模块的设计与复用 ,(,(,网卡芯片简介 网络接口模块采用的是嵌入式系统中常用的网卡芯片,,,,,,,,,,这是一种高度集成 的以太网卡芯片,能实现简单的,,,,锄,,,,,;支持,,,,,,,,,和,,,,,,,(,,,,嬲,,, ,,,勰,,,,,,硒,,,并在,,,,,,,支持自动极性修正;软件兼容,位或,,位的,,,,,, 模式;支持在全双工模式下的双倍信道带宽;片内集成,,,,,,,,;接口时序符合,,, 总线标准,是嵌入式系统中最常用的网卡芯片,其,,,,,,读写时序【,,强口图,所示。 ,,,二),二 ,,【,,:,】—, ,,删 ,,,,,:,】(,,,二二二二二二二二二 ,,) ,,【,,:,】(,,, ,;) 二×二 图,,,,,,,,,,,,,读写时序图 ,(,(,网卡芯片与微控制器的时序匹配性分析 为了更清楚的说明问题,本文将,,;,,,,、,,,,,,,与,汀,,,,,,,的接口时 序分析 过程放在一起进行对比分析。 (,)读时序分析 ,,,,,,,读信号?,域,,,,)与,,,,,,,,,读信号,,,的时序不匹配,可用 ,,;,,,, 的输出使能信号,,群来控制,,,,,,,,,的,,,信号。,,,,,,,的读信号,,撑可与 ,,,,,,,,,的读信号,,,匹配。 ,,,,,,,,,要求读信号,,,比读数据,,【,,:,】(,,,,)先建立的时间,, 的典型值为 ,,,,,,而,,,,,,,读时序的这段时间为,舯,,最小值,,;,;‟读时序的这段时间为,,,,,,;,;—,;,,,,,,,,,;,;—,,,,;,,,;,,(,,,,,,)一,,;,,;,,,, ,?,的最小值,,,,,;,;, 第,,页 信息工程大学硕士学位论文 ,;,,、,,的最大值:,,,,;,;,,,将其代入,的表达式中,可得,(,,,;,;—,,,,;,一,?,?,(,, ,;,;—,,,,;,,而,,,,;,的最小值:,,璐,最大值无要求,通过逻辑分析仪查看,,,,;,不大于 ,,璐,将其代入,的表达式中,可得,(,,,;,;一,,?,?,(,,,;,;一,,。其中,,;,;是系统 时钟周期,,,,,是存储器组配置寄存器中的一个位段,用以控制读访问的长度,因此, ,,;,,,,和,,;,,,,均可通过编程来满足,,,,,,,,,读信号先于数据建立的时间要求; ,,,,,,,,,的读数据,,,,,:,】(,,,,)在读信号,,,否定后将继续保持,, 时间,,,最 小值,,,,,,、典型值,,,,,,、最大值,,,,,;而,,的最小值为,,,,,,,;,,,,要求的保持时间没有直接标出,但通过,;,,,,(;,,,;,,,,要求的读数据保持时间,,,,,洲 ,,上升 沿到,,被否定的时间,最小值,邶,最大值,,,,)和,;,,?(,,,,,,上升沿到读数据无 效的时间,最小值,,,,,最大值无限制)可以推出,,,,,,,,,,的读数据保持时间可以满 足,,;,,,,的读数据要求; 因此,,,,,,,,、,,,,,,,与,,,,,,,,,的读时序基本匹配。 (,)写时序分析 ,,,,,,,,,要求写数据,,【,,:,】(,,,,,)有效到写信号,,,被否定的时 间为,,,其最 小值为,,璐,典型值为,,,,,,最大值无要求,这个问题可以通过设置,,;,,,,和,,,,,,, 的系统时钟或插入等待周期来解决; ,,,,,,,,,还要求写数据在写信号,,,否定后必须保持,,时间,,,最小值,,,,, ,、 典型值,,,,,,、最大值无要求;,,;,,,,的写数据保持时间是,,,,,,,,最小值,(, ×,;,;)一,,最大值,(,×,;,;),,,可通过编程调整其值大小;,,;,,,,只有写数 据相对于;,,,,,上升沿的保持时间,但不能保证其在写信号,,,(,融,,)否定后的保 持时间,通过逻辑分析仪显示,这段时间,,,,,,不能满足,,,,,,,,,的要求; 因此,必须想办法延长,,,,,,,写数据的保持时间,而,,;,,,,与,,,,,,,,, 的 时序基本匹配。 ,(,(,网络接口模块的电路设计 ,,,,,,,与,,,,,,,,,的工作时序匹配,因此,,船,,,,上的网络接口模块的 电路 设计相对简单,模块电路设计如图,,所示。 由图,,可见,,,,,,,,,,的地址引脚实际上只用到了最低的,位,,,,:,】,它们 用于 寻址内部的寄存器和端口,其余的地址引脚都接高或接低,取决于网卡在系统中所占的地 址空间;将引脚,,,,(,接低,选择了,,,,,,,,,的,,,基址为,,,,,因此,需将,,【,,:,,】 和,,【,:,】接低、,,,,:,】接高。,,,,,,,给出的片选信号,,,,和,,,分别与,,,,,,,,, 的,,,和,,,相连以确定网卡的基址:同时,,,,还以线性译码的方式区分网络接口模 块和,,,模块的地址空间,这样的设计有利于进行硬件扩充时地址空间的划分。 对于,,,,,,,,,的地址使能,,,信号,它跟地址信号几乎是同步的,因此可以用某 根在选中,,,,,,,,,时始终为低的地址线控制它:也可以接片选信号,,,撑(,,,,,,,,, 第,,页 信息工程大学硕士学位论文 没有专门的片选端);还可以直接与地连接,使之永远使能。,,,,,,,,是,,,,,,,的 通用,,,引脚接,,,,,,,,,的,,,,,,用作硬复位输入。,,,,,,引脚接高,用以决定其 在上电复位后工作在,,位(数据总线)模式,但此后也可以通过寄存器进行设置。,,引 脚接高,为,玎,,,,,,,选择工作在跳线模式,此模式可省去,,,,,,,等硬件资源,实现 较简单,可以满足大部分应用需求。 此外,由于,,,,,,,和,,,,,,,,,的工作电压不一样,需要在,,,,,,,,,的 ,,【,,:,】 数据线上串联一个,,,,的电阻,以便起到一定的限流保护作用。这样的设计可以满足大 多数微控制器的接口需要,使电路模块具有较好通用性和可复用性。 ……………一一 :网络接口模块 ,【,:,】,,“:伽 ,,下,【,,:,铂,,,,:羽眦,,, ,,,,位,:,日,,【,:,】,,,, ,,,, ,,,,,,,;,弘 ,,【,,:,,】 ,,,?,,,,,卧‟ ,,【,:,,,,捌,,,, ,,,,,,,,,,,,,, ,,捌,,,,,, ,,,,二,,,,, ,,,,,,,,,,,,们,,, 图,,网络接口模块电路不意图 ,(,(,网络接口模块的复用 由上文分析可见,,,,,,,,,,,与,,,,,,,的时序不匹配,因此需要对网络接口模 块的接口电路进行改造,才能在,勰,,,,,上复用。下面主要论述接口电路的改造方法。 一种方法就是,,,,,,,用通用端口来模拟总线操作,虽然模块的接口电路不用修改, 但这样会使系统性能大打折扣(后文论证),必须采用更好的解决方法。 鉴于,,几,,,,,,对写数据,,【,,:,】(,,,,,)必须在写信号,,,肯定后多 长时间就有效 没有任何要求,并且,,,,,,,对读数据,【,,:,】(,,,,)必须在读信号肯定后多长时间就有 效也没有任何要求,因此,更好的方法是在,,,,,,,,,的数据线上串接两片,,,;,,,以 适当延迟数据,从而达到延长数据保持时间的效果。 ,,,;,,,工作在,(,,电压时,产生的时延大约是,,,,,如果加上其输出使能端的开 启和关闭时间,总时延可以达到,,,,以上;对于,,,,,,,,,来说,,,,,,时延已经足够, 因此,笔者将其输出使能端接低,使之总是使能,而只对其方向端进行控制以满足工作要 第,,页 信息工程大学硕士学位论文 求,由此便可省去输出使能端的开启和关闭时延,加快了访问速度。 电路初步改造如图,,所示,但通过电路板实际验证,这种设计并没有调试成功。经反 复检查测试,排除了其它可能性之后,还是把问题锁定到接口时序上来。对比,,,,,,, 与,,,,,,,外部总线时序的不一样之处:,,;,,,,不能保证写地址在写信号,,,(、砸们 被否定后还保持一段时间,但,,,,,,,却可以,它所保证的时间为,,,,,,,,最小值为, 一,,最大值为‰,,,可以通过编程调整。因此,弄清,,,,,,,,,是否对地址保持时间 有要求就成了解决问题的关键所在。 广一一一一一一一一一一一一一一一一一一一一一一一一 ,网络接口模块: ,,【,:,】 ,,,,,,, ,, ,,【,:,, ,,,,,,:,,】 ,,,,, ,,,,,, ,,,,,,,,,,,,, ,,,, ,,,,【,,:,,】 ,,【删磁, ,,?, ,,,,‟,伽,,, ,,,:日 ,,,, ,,,, ,,‟, 纛,,,,,,,,, ,,,,, ,,, ,,, ,,,,,, ,,,,,,,,, 嬲~;~ 图,,网络接口模块的接口电路改造示意图(初步) 由于,,,,,,,,,数据手册给出的时序图上并没有对这段时间进行任何标注,笔者便 查阅了,,,总线规范的标准,,,,一,,,,但其中也没有直接关于这段时间的描述,不过标 准上的这句话可以让我们找到些依据:“地址总线,,从,,,,(地址锁存信号)下降沿开 始有效直至总线周期结束”【,吼。地址锁存也就意味这在下次地址给出前,地址线上的信号 将一直被保持。由此可见,,,,总线时序实际上保证了地址信号在写信号否定之后还保持 足够时间有效,也就是说,,,,,,,,,的读写时序其实也有一样的要求。为此本文做了个 测试,就是把电路板上,,,,,,,,,的地址引脚的最低,根翘起,并通过飞线连接到 ,,;,,,,的通用?端口的,根引脚上,即用端口(有锁存功能)来给出地址,结果调 试成功,这便有力地证明了刚才的推断。 可是,用端口给出地址就意味着在每条读,写网卡命令前必须加上一条写端口命令。因 此,原本一条指令实现的简单操作,现在就要两条指令来完成了。而读,写函数是网卡驱动 的最底层最基本的函数,几乎所有的上层函数都要用到,特别是收发包函数中,经常要用 到此函数的循环,其执行代码量大约占网卡驱动总代码量的,,,左右,设其被调用次数为 ,,则地址线给地址时网卡驱动的时间复杂度是,(,,,,),,(,,),端口给地址时网卡驱动的 第,,页 信息工程大学硕十学位论文 时间复杂度是,(,,,,),,(,,),时间复杂度整整增加到,(,倍。这不仅大大增加了系统的 时间复杂度,还占用了宝贵的,,,资源,这对于资源有限的嵌入式系统来说不是一种最好 方法。 因此,对图,,所示的初步设计方案进行改进:即采用通用锁存器模仿,,,总线时序, 在读写操作期间自动对地址信号进行锁存。但是,,,;,,,,没有锁存使能信号,也没有 合适的信号来代替(,,,总线中是通过总线控制器来给出地址锁存信号的)。如果专门用某 根空闲的,,,引脚来生成锁存使能信号的话,则需在读写函数中至少增加一条写端口的命 令,其时间复杂度并没有得到改善。因此,必需根据现有的总线信号构造出一个锁存使能 信号,有两种办法: 采用锁存器,,,,,,,:借助单稳触发器,,,,,,,,将其输入端,与,,,,,,,的, ,撑 信号相连,而将其输入端,和清除端,,,接高电平,并外接适当的定时电阻和电容对输 出脉冲的宽度加以控制,便可在,,,信号的下降沿到来时在输出端,产生一个合适宽度 的输出脉冲(,,,,,左右)作为,,,,,,,的地址锁存使能信号,,,。此方法可产生与,,, 总线中,,,,相似的信号,但是电路相对复杂。 采用锁存器,,,,,,,:用非门将,,,拌翻转后作为,,,,,,,的锁存使能信号,每当, ,皑 的下降沿到来时就会对地址进行锁存。这种方法电路实现简单,而且经实验验证,可以同 样达到锁存地址的效果,,,,,,,,和,,,,,,,,,运行稳定。 因此,本文采用第二种构造锁存信号的方法,网络接口模块的接口电路经改造后如图 ,,所示。经实践证明,对接口电路进行改造后,网络接口模块与,,;,,,,时序匹配,可 以实现在,嬲,,,,‟,上的复用。 ,一一一一一一一一一一一一一一一一一一一 :网络接口模块,,,;日,爻?一一,剧一 ,,,伏‟ ,,, ,【,:,】一一,辫站‰,,,【,:,】 玉 ,,,,,, ,必叫,, ,,,,一,,,, ,,,,,,,, ,,,,,【,,:,,】? ,,,,,:,】,,”裟 争 ,,【,:, 厨 ,,,,撑一 , ,啊,【,,, ,,,,,拌?一, ,,,,,,,,卅—, ,,,,,,胛,,,,, ,,,,?一 捍(。,,,,—,,, , ,, ,,,,,,,,,,,,,,,,, , ;图,,,?,,,‟,,上的网络接口模块电路示意图(优化) ,,, 第,,页 , 髓 , 信息工程大学硕士学位论文 ,(,,,,模块的设计与复用 ,(,(,,,,芯片简介 ,,,,,,,是一种价格低、功能强的通用串行总线,,,接口器件,它完全符合,,,,(, 规范,并为基于微控制器或微处理器的系统提供了高速,,,通信能力。 ,,,,,,,有一个快速通用接口,利用它可以实现与大部分类型的微控制器,处理器的通 信;接口由管脚,,,,,,,,,,,,,和,,,,,共同设置,适用于大部分类型的微控制 器接口;内部含有两种总线结构配置,上电时由,,,,,,,输入管脚进行选择: 通用处理器工作模式(,,,,,,,,,):,,,,:,】为,位地址总线(选择目标寄存器); ,,,,,,,,:,】为,,位数据总线(处理器和,,,共享);控制信号为,,拌、,,,,和,,群或 ?粥和,,磷(由,,,,,选择);,,,接口(仅用在通用从机工作模式下),,,,队,,,:,】为 数据总线,,,,,和,,,,为读,写选通信号。 断开总线工作模式(,,,,,,,,,):,,【,:,】为,位本地微处理器总线(多路复用 地 址,数据);,,,,【,,:,】为,,位,,,数据总线;控制信号为,,群、,,,或,,(由,,,,, 选择),鲫,群和,,群或砌)撑和,,拌(由,,,,,选择);,,,,,和,,,,为读,写选通信号。 ,,接口(主机或从机模式) 此外,,,,,,,,内部还集成了,,字节的,,,,存储器,数据传输速度高,体积小,功 耗低,非常适合于嵌入式系统的高速数据通信。它与微控制器的通信是通过其快速通用接 口来实现的,其工作在通用处理器模式的寄存器读写时序【,,】如图,,所示。 ,,弗 ,,【,:,】 (,,),,,,【,,: ,】 删 (,一蝴,,,,【,,:,】 ,,州,钳 ,,,, 图,,,,,,,,,寄存器访问时序图 ,(,(,,,,芯片与微控制器的时序匹配分析及模块电路设计 与网络接口模块的分析与设计过程类似,经时序匹配分析,,,,,,,,与,,;,,,,的工 作时序匹配,,,,模块的电路设计简图如图,,所示。 根据,,,,,,,参考手册,,,,是,,,,,线的外部上拉电阻连接端,需通过一个,(,,,, 的电阻与,;叫,,)相连;,,,需连接外部偏置电阻:通过一个,,(,,,(士,,)的 第,,页 电阻同地 信息工程大学硕士学位论文 端相连;,,,—,,,,,,,,接高,使芯片工作在通用处理器模式;,,,,,,,,,通过跳线 接高,选择控制信号为,,样、?,捍和,,撑(,,,,,,,类型),当然也可以选择跳线接低, 选择控制信号为,,群、,?撑和,,并(,,,,类型),视微控制器的情况而定。对,,,,,,,而 言,可以支持,,,,,,,的两种工作类型,如果选择,,,,,,,,类型,则以,,,伽代替,醚 作为读信号即可。这样的设计可以匹配大多数的微控制器接口,具有较好通用性和可复用 性。 ,………。,;,…………… , ,,,:,】,山,:,】 ,,,,,,,【,,:,,】,,,,,,,:棚 ,,, ,,, ,,,《,,,,删 ,,, ,,,,,八,,,十,, 口,:, 邛,,,,,,,,,,,,,,,门),,—一 ,】,,,,,,,,,,,一一惺,,,,崛,盯,,,,,,,, 。口,,;,,,, ,,硝,,鞘 【,:,,”,, ,,,,,,,,,,,,,,,,,,,,, , ,,, 圈,,,,,接口模块示意图 ,(,(,,,,模块的复用 要将此模块电路应用于,邪,,,,,,开发板,必须先进行时序匹配分析: (,)读时序分析 ,,,,,,,读信号刚,群(,,,,)与,,,,,,,读信号,,,的时序不匹配,可用, ,,,,,, 的输出使能信号,醚来控制,,,,,,,的,,,信 号。 ,,,,,,,要求读信号,,样比读数据,,,,【,,:,】(,,,,)先建立的时间,,, ,,不大于,,,,,, 而,,,,,,,读时序的这段时间为,,,,,,;,;—,;,,,,,,,,,;,;—,,,,;,,,;,;—,;,,州一 ,?;,,,;,;是系统时钟周期。因此,,,;,,,,可通过编程来满足,,,,,,,读信号先于数 据建立的时间要求; ,,,,,,,的读信号,,,拌否定后到读数据,加,,【,,:,】(,,,,)输出三态的延 时,,,,,不大于 ,,璐,,,,,,,,要求的这段时间没有直接标出,但通过逻辑分析仪可以测出,,,,,,,,的 读数据延时以满足,,,,,,,的要求; 因此,,,;,,,,与,,,,,,,的读时序基本匹配。 (,)写时序分析 ,,,,,,,要求写数据,,,‟,【,,:,】(,,,,,)有效到写信号,,,被否定的时间,,,,,不 小于 第,,页 信息工程大学硕士学位论文 ,,,,,,且写信号,,样的低有效时间,,,,,不小于,,,,,这些问题可以通过设置,,,,,,, 的系统时钟或插入等待周期来解决; ,,,,,,,还要求写数据在写信号,酣否定后必须保持,,,,,时间,其最小值为,, ,,,而 ,,,,,,,的时序图上只有写数据相对于,,,,,,上升沿的保持时间,但不能保证其在写 信号刚,(,,,,,)否定后的保持时间,通过逻辑分析仪显示,这段时间,,,,,不能满足 ,,,,,,,的要求; 因此,必须想办法延长,,;,,,,写数据的保持时间,才能与,,,,,,,的时序匹配。 与网络接口模块的设计类似,在,,,,,,,的数据线上串接两片,,,,,,,以适当延迟数 据,从而达到延长数据保持时间的效果。但经实验证明,仅这样改造还是不能使,,,模块 与,,;,,,,匹配工作,仍怀疑是,,,,,,,地址信号的问题,不是地址建立时间(相对 于读,写信号)不够,就是地址保持时间(相对于读,写信号)不够,虽然在,,,,,,,的时 序图上对这些时间段并没有要求,但是芯片的物理特性决定了:如果芯片对地址信号的建 立时间没有要求,则一般会要求地址信号保持一段时间。而,,,,,,,的地址建立时间可 以通过编程调整,因此可以排除嫌疑,初步确定,,,,,,,会要求地址信号,,【,:,】在读,写 信号被否定后还继续保持一段时间。因此,可以用,,,,,,,的端口作为地址线,或者对 地址信号进行锁存,锁存芯片可以采用,,,;,,,,锁存信号可以选用,,,群的翻转信号。 为提高系统工作效率起见,文中采用第二种方法。改造后的模块电路如图,,所示。 ,,,模块 ,,嘲,,,, ,【,:,】刊,,(,,,,,,,,【,:,】,,,啪,,—,,, ,,,,,,,,,,,,, ,,, ,,,,,,似,,,,, ,,,,,,:,,,叫“,片,,,,,,【,,:,, ,,,,刊,,,,,卜‟ 。,,,,;,,,,,,,叫,,, 茸(,‟,,,:,,,;;,, ,”如,,?, ?。口,,,一佃,,,), ,掣嬲删础,,,,,,,, ,,,,,,,,,,,,,, ,, ,,,,,,,,,,,,,, ,, ,,图,,,硒,,,,,上的,,,接口模块电路 经实践证明,对接口电路进行改造后,,,,模块与,,;,,,,时序匹配,可以实现在 ?, ,,,,,,,,,上的复用。 ,一 ,(,接口电路设计与改造的通用方法 一, 由上文论述可见,硬件模块设计与复用的关键在于接口电路的设计与改造口,】。本文在 ,要第,,页 ,, ,, 堡星三矍奎兰堡主兰垡堡奎 总结大量实践经验的基础上,给出了接口电路的设计与改造的通用方法,主要有以下几种: (,)用通用,,,端口模拟总线 有些嵌入式处理器也许没有外部总线。当开发者需要外接总线设备时,就必须用通用 ,,,端口模拟总线。为了节省宝贵的?资源,往往需要将地址总线和数据总线复用,这样 一来地址和数据信号就需要用两条指令分别给出,而且还有读,写和片选信号需要给出,一 次模拟总线的读写操作就至少需要两条以上指令完成,增加的时间复杂度便可想而知。当 然,也可以采用,,,,或;,,,,甚至处理器等器件来模拟产生总线时序。这种方法几乎 可以解决所有的时序不匹配问题,包括信号间相对的建立和保持时间不够、缺少某些信号 的问题。但是,缺点也很明显:这种方法对于在体积、功耗和成本上都有严格要求的嵌入 式系统来说是种得不偿失的做法,不得已的情况下才用。 (,)用通用,,,端口来辅助产生合适的总线时序 有些微控制器外部总线和外部设备芯片的时序在某些信号上不匹配,正如上文分析的 ,,,,,,,用端口来为,,,,,,,,,给出地址的情况;或者需要产生某些辅助信号,如上文 提到的用端口来生成锁存使能信号。这种方法使用较为方便,可以解决信号间相对保持时 间不够、缺少信号的问题,但需要软件配合,还会降低系统性能。 (,)用门电路来适当改造时序信号 如用,,,,,,,总线收发器来延迟或驱动读,写数据,用,,,,,,,锁存器来锁存地址, 用单稳触发器来产生地址锁存使能信号,用与、或、非门等来综合、选择、反转信号。这 种方法较为简单,但不能解决信号间相对建立时间不够的问题,有一定的局限性。 (,)信号功能的替换 一般用在总线上缺少某信号,但有另一信号的时序和电平特性与其相符或相近,则完 全可用来替换使用。如上文提到的,,,,,,,用字节使能信号,,,拌来替代,,,,,,,的数据 选通信号,,撑,用输出使能信号,群来代替读信号,,粥;,,;,,,,用;,,,信号作为 ,,,,,,,,,的,,,或作地址的其中一位以帮助选址。这种方法最为简便,但适用情况较 少。 以上内容在我的一篇发表论文中有更加详细的论述,见参考文献【,,】。 ,(,模块化硬件平台的效能分析 由网络接口模块和,,,模块的设计与复用过程可见,实现模块复用的关键是解决硬件 模块与新处理器间的时序匹配问题,这主要是对模块的接口电路部分进行改造,模块的绝 大部分可以复用。实际上,由于芯片都采用标准化和系列化设计,处理器与处理器、处理 器与外围芯片、外围芯片与外围芯片的接口和时序一般都可以实现兼容。特别是同一系列 的处理器或外围芯片,它们之间虽然在信号速度上有差异,但其接口信号和时序特性基本 上是一样的【,”。这也就是说同一系列的开发板(针对微控制器而言)上的外围硬件模块可 以基本实现相互复用,同一系列的外围硬件模块可以相互复用到对方的开发板上;不同系 第,,页 信息工程大学硕士学位论文 列的,但是接口和时序兼容的外围硬件模块可以实现相互复用,微控制器的接口和时序相 互兼容的开发板(针对微控制器而言)上的外围硬件模块可以基本实现相互复用。如课题 选用的微控制器,,,,,,,属于,,;,,,,系列,,,;,,,,属于,(;,,,系列,系列中的 微控制器的接口与时序兼容,,鹊,删和,列的开发板上复用;存储器芯片的接口和时序与,,;,,,,,即,,;,,,,系列匹配,同时与 ,,,,,,,开发扳上的各外围模块可在,,,,,,,,即,(,,,,系列匹配,则此存储器模块可在这两个系列的开发板上复用。此 外,与接口和时序无关、并且共同符合某标准的硬件模块,如上文提及的电源模块、串口 各自系 模块和,,,咖接口模块等,也可以实现复用。 表,,,,,,,,,在两种开发模式下开发所需的工作量对比 ,,,,,,,、,,纂于模块化硬件开发平台模式传统开发模式“ (以硬件模块划分)所需的工作餐所需的工作量 ,;,模块 液晶控制,显示模块不可复用, 触摸屏模块需要另行设计 ,,;模块 网络接口模块改造接口电路 ,,,模块即可实现复用整块开发板需要另行设计 串口模块 ,,,,,模块 电源模块可以直接复用 复位模块 存储器模块 以上这些情况在硬件开发过程中是经常出现的,因此,模块化硬件开发平台的各硬件 模块可以被复用的概率是较高的,这也就意味着大量硬件开发工作的节省。与传统嵌入式 硬件开发模式相比,基于模块化硬件开发平台的开发模式将使开发效率显著提高。量化分 析如下: 设复用比为,,可以从硬件模块库中找到模块复用的硬件工作量为,,产品总的硬件 工作量为,,则可以得出下式: ,,旦;(,? 栉?,,埘? ,)(,),由式(,)可见,,的值介于,和,之间,最好情况是该产品所有硬件模块都可以在硬件 竹 模块库中找到并直接复用,,,,;最坏情况是该产品所有硬件模块都不能在硬件模块库中 找到,需要全新设计,,,,,这种情况与采用传统模式开发所需的工作量相同,因此,在 一般情况下,基于模块化硬件开发平台的开发模式,其开发效率总是高于传统开发模式的。 由于,每次产品开发的复用比是不同的,无法给出一个定量的分析。下面便以,,,,,,,‟, 第,,页 笪皇三堡盔堂堡主堂垡堡壅 基于硬件开发平台(,,,,,对证)的开发为例,对比它在两种开发模式下所需的具体工作量, 如表,所示。 由表,可见,,嬲,,,,‟,的,,个硬件模块中,约有,个模块基本可以实现复用,忽 略模块大小的差异,它复用比为,,,,。这只是在硬件平台只有,,,,,,,的硬件资源的条 件下,如果硬件开发平台的资源得到扩充后,将会有更高的复用比,开发效率将会更高。 ,(,本章小结 本章首先论述了模块化硬件开发平台的总体设计及其开发流程,然后以其中具有代表 性的两个硬件模块的设计和复用的过程为例,详细论述了硬件开发平台的具体设计和实现 过程,并给出了接口电路设计和改造的通用方法,最后对比分析了模块化硬件开发平台的 效能。 第,,页 信息工程大学硕士学位论文 第四章可重构板级支持包(,,,)的设计与实现 硬件开发平台设计完成后,还只是一个“裸平台”,直接在其上进行应用程序的开发 是不合时宜的,也是效率低下的,而且系统的可靠性也不会高。因此,还需要在硬件开发 平台上移植操作系统,使应用程序运行于操作系统平台之上,以提高系统可靠性和开发效 率。但是,由于嵌入式系统硬件的多样性与复杂性,给操作系统在其上的移植带来很大的 困难。因此,需要为硬件开发平台的每块开发板开发一个板级支持包(,,,),为操作系统 隔离底层硬件,以增强操作系统的硬件无关性和可移植性。此外,基于硬件开发平台开发 的产品硬件平台也需要为其开发相应的,,,。因此,,,,是与底层硬件和操作系统都密切 相关的,或者说是专用的、封闭的,这就意味着每款操作系统在不同硬件平台(开发板或 产品硬件)上需要不同的,,,,同时,每种硬件平台针对不同的操作系统也需要不同的,,,。 显然,硬件开发平台上的,,,开发的工作量是巨大的。因此,设计一种开放的、通用的、 能够实现快速简单开发的可重构,,,是十分必要的。论文在本章论述了可重构,,,的设 计与实现,打破了传统,,,的专用性和封闭性,不再需要为不同的硬件平台和不同操作系 统开发专门的,,,,实现了可复用、可重构的通用,,,,提高了,,,的开发效率,而且还 将有力地支持操作系统的跨平台移植。 ,(,,,,概述 ,(,(,,,,的定义与组成 众所周知,在,,机系统中,应用程序的硬件无关性是由操作系统实现的,但是嵌入 式系统的硬件不像,;机那样具有统一的架构和标准,且硬件一般都是根据应用定制的, 这种硬件的不定性决定了在嵌入式系统中无法完全由操作系统来实现上层软件与底层硬 件的无关性。因此,成熟的商用嵌入式操作系统都采用了分层设计的方法,将操作系统中 与硬件直接相关的那部分独立出来,作为实现上层软件的硬件无关性的一个中间抽象层, 称之为“,,,(板级支持包)”【,,,。因此,从根源上来说,,,,是属于操作系统的,且仅属 于嵌入式操作系统的。 但是,到目前为止,嵌入式系统中还没有一个关于,,,的明确的、统一的定义。因为, ,,,总是相对操作系统和硬件而言的,不同操作系统和硬件对应的,,,定义形式和实现功 能都是不一样的。例如,,,,,,蹬和,,,,,即使相对于微控制器和外设硬件一样、实现的 功能一样,它的写法和接口定义形式也是完全不一样的。,,,,,,,的生产商,,,,,,,,,公 司对其,,,的理解偏向于操作系统的驱动程序,其主要组成部分为系统初始化代码和必要 的硬件驱动;而微软公司似乎要求它的,,,,,,,,,的功能更强大一点,包括,,,,,,,,,,、 ,,,(,,,,,,,,,,,,,,;,)、本地驱动程序、平台文件配置等。但是,不管其形式怎么 不同,内容怎么扩充,其性质和角色是不会变的,所有能为操作系统提供启动环境并屏蔽 第,,页 信息工程大学硕士学位论文 硬件细节的代码集合,都可以称之为,,,。 ,(,(,,,,,,,,,,,与,,, ,,,,,,,,,,(操作系统启动加载器)也是嵌入式系统中频繁使用的一个概念,顾名思义, ,,,,,,,,,,的主要作用是完成必要的硬件初始化、将操作系统内核加载到内存(包括 ,,,,,)并启动。它是系统加电后,操作系统内核启动前,运行的第一段程序,它的地位 就相当于,,机系统中主板上的,,,,和硬盘,,,中的,,,,,,,,,,,,(如 ,,,,和,,,,等),,“。,,,,,,,,,,是严重依赖于硬件而实现的,因此,与,;机系统不一 样,要在嵌入式环境里建立一个通用的,,,,,,,,;,几乎是不可能的,它往往是,,移植工 作中的重点与难点。 由于,,,,,,,,,,和,,,在功能上有很大的交叉和融合,而且目前对其尚缺乏一个明确 的定义,很多初学者往往将两者混为一谈。实际上,它们是不一样的,我们可以从这个角 度去理解:,,,是操作系统生产商专门为用户提供的各种驱动支持包,是与操作系统紧密 相联的,也是与硬件密切联系的,在操作系统与硬件之间起到一个承上启下的作用,且只 是一个程序集合而已,就像,;机系统中的;函数库一样,不能直接作为应用程序;而 ,,,,,,,,,,是一个实现具体功能的程序,一般放在,,,,,、,,,等非易失性存储器中, 并占据上电后微控制器自动运行的那部分地址空间,它可以独立于操作系统,只与硬件相 关,它的代码主要来源于,,,,在功能上属于,,,,但在形式上却是游离予,,,的。它 跟,,,的关系相当于,,机系统中,具体,程序与,函数库的关系。 总之,,,,和,,,,,,,,,,都是相对灵活的概念,开发者对它们的定义和功能的划分都 可以有自己的理解。这主要体现在以下两个方面:随着应用系统的不同,,,,廿,,,,,的形 式和内容变化很大,甚至可以完全融合在,,,中;,,,的功能也可以根据需要扩充和缩减, 甚至完全融入操作系统内核,同时,用户也可以将应用程序加入到,,,中。可以说, ,,,,,,,,,,和,,,在理论上都不是必需的,它们的功能都可以放到操作系统内核中实现, 但这样做使操作系统结构不明晰,不利于操作系统的移植。因此,对,,,,,,,,,,和,,,的 定义和划分,各操作系统厂商可谓见仁见智,但其原则都是根据本操作系统的特性和需求, 在最大程度上增加操作系统的硬件无关性,降低其移植难度。如:,,,,,把,,,,,,,,,,融 合在,,,中并作为一个重要组成部分,而,,,,,,,的,,,,,,,,,,,,(,,,,,,,,;,)则是最 小的,,,,,,,内核,与,,,相对独立。 ,(,,硬件抽象层与,,, 硬件抽象层的概念来源于微软的,,,,,,,,,操作系统:“硬件抽象层是将硬件差别 与操作系统其他层相隔离的一层软件,它是通过采用使多种不同硬件在操作系统的其他部 分看来是同一种虚拟机的做法来实现的【,】。”它原先的目的只是避免程序与硬件直接通信, 提高系统稳定性和安全性。后来,这一思想被应用到嵌入式系统中,用来为上层软件(包 括内核和驱动)屏蔽硬件差异,提高其可移植性。因此,可以将硬件抽象层定义为所有依 第,,页 笪星三堡查兰堡主堂堡堡奎 赖于底层硬件的软件。实际上,目前还没有对它的确切定义,不同的设计者可以有不同的 理解。 我们可以发现硬件抽象层的概念与,,,很相似,很容易混淆,事实也确实如此,很多 人在实际应用和设计中对它们并不进行区分。因此,我们可以形象的说这是嵌入式系统中 最混乱的一部分,但这也给设计者带来了自由发挥的空间。本文认为:,,,是硬件抽象层 的一种应用形式,完全是为了现有通用或商业嵌入式操作系统在不同硬件平台上的移植而 设计的,与硬件平台和操作系统都是紧密相关的,不同硬件平台上或操作系统下的,,,是 不能通用的,这是一种封闭的专用的硬件抽象层。而且,,,,是与特定操作系统相关的, 则它与操作系统的接口问题已不需考虑;而硬件抽象层,特别是通用硬件抽象层,它只是 为操作系统屏蔽了底层硬件,并不关心自己与操作系统的接口问题。,,,是专门为内核服 务的,对硬件驱动支持有限,除了已包含在,,,中的必要的驱动(串口等),其它的硬件 驱动开发也许就要从赤裸裸的硬件开始了。因此,,,,的硬件涵盖范围应该小于硬件抽象 层。图,,可以明显地看出,,,和硬件抽象层的不同。 图,,,,,与硬件抽象层的区别 ,(,传统,,,开发的弊端 ,,,对其开发人员的软、硬件水平要求很高,开发难度较大。由于其开发的复杂性, 技术人员在开发设计特定的,,,时,很少完全从零开始,白手起家。通常都是采用以下两 种快捷方法: 其一是基于操作系统生产商提供的,,,模板,根据本系统的硬件及应用特性,修改、 扩充模板相应内容来完成本系统的,,,开发。很多操作系统生产商一般都会提供基于不同 处理器开发板的,,,模板,但是模板的处理器与硬件设备的支持范围有限,更主要的是 ,,,模板一般只是一个最小系统,只包含处理器、存储器、串口和启动加载部分的必要框 架和代码,如果要移植到自己的开发板上还有太多的工作要做:而且,生产商在自己的,,, 中体现出了太多的操作系统特性,与操作系统紧密的糅合在一起,它们之间没有明确的界 限,因此,这种方法只适用于对应的操作系统。 其二是采用与本系统的硬件环境最为相近的,,,作为参考设计。实际上,此,,,亦 彼,,,,也是从生产商提供的,,,模板开发而来,只不过根据具体应用对硬件的支持范围 第,,页 信息工程大学硕士学位论文 进行了扩充,功能上也进行了完善。如果基于的操作系统一样,则,,,开发就容易的多了; 但如果基于的操作系统是不一样的话,则对此,,,的剥离和改造工作也许不会少于自己重 新设计了。 第一种方法的原则是选择相同的操作系统,但需要花很大精力去关注硬件;第二种方 法则是选择近似的硬件,但需要关注与操作系统的结合。总之,这两种都是因人成事的方 法,而且改动和添加部分的代码需要完全由自己编写,不仅要求开发人员了解,,,的各个 组成部分及相应文件和相关参数的具体含义,还要求具备全面的软、硬件知识,开发难度 和工作量仍然很大。由此可见,快捷方法并不快捷。 此外,分析总结大量的,,,可以发现,不同,,,中总是有很多文件相近甚至完全相 同,如基于相同操作系统的两个,,,中的网络接口驱动可能是一样的,即使操作系统不一 样,只要网口芯片一样,那么其驱动的底层操作也可能是一样的。这些情况在开发实践中 并不少见,而传统的,,,开发是以单板为单位划分的,开发板与开发板之间、操作系统与 操作系统之间的,,,开发都是相对封闭的。采用这样的方法开发,,,其代码的重复率是 很严重的,会造成重复开发次数多、代码通用性不好和局限性大等问题,甚至经常出现不 同的人重复开发同一个驱动程序的现象,这是人力资源的极大浪费,严重降低了开发效率, 还造成了代码维护工作量大和代码质量差等问题。随着底层硬件功能的日益复杂和操作系 统的日益增多,开发,,,涉及的内容越来越多、难度越来越大,传统开发方法的弊端显得 越来越突出,因此,亟需对,,,开发方法进行改进,以提高其开发效率。 ,(,,,,的模块化与层次化设计 课题中的,,,需要能够向下支持多款微控制器开发板,向上支持多种嵌入式操作系 统。因此,在其功能组成与结构设计上应利于实现操作系统的硬件无关性,并具有开放性 和通用性。 驱动程序 ,,,资源库 操作系统内核 操作系统 接口库 操作系统接口层 十 : 硬件抽象 模块库 囤圈囤… 厂,,,、 模块化硬件平台 ,,『,图,,可重构,,,设计示意图 第,,页 , 信息工程大学硕士学位论文 由上文可以看出,解决传统,,,开发弊端的关键在于打破其封闭性与专用性,将原先 错综复杂的结构抽丝剥茧殷的分解开来,实现不同,,,问的代码复用。因此,必须对其功 能结构、接口定义和组织形式进行创新性设计。课题总结实践经验,集百家之所长,并从 实际需求出发,提出了一种模块化、层次化的可重构,,,设计方法,将,,,分成硬件抽 象模块和操作系统接口两层,并对应地形成两个资源库:硬件抽象模块库和操作系统接口 库,设计思路如图,,所示。 模块化、层次化的可重构,,,把硬件抽象层和传统,,,的优点巧妙地融合在一起, 形成了优势互补,既扩大了,,,的硬件涵盖范围,又兼顾到与操作系统内核的接口问题。 同时,,,,的硬件抽象模块层还以模块化的硬件抽象层的形式向上提供接口服务。 ,(,(,硬件抽象模块层 这层的主要目的是把底层硬件设备按功能划分成相对独立的模块,并把对各模块的基 本访问操作或驱动封装成一个个抽象软件实体,各模块向上层提供统一的访问调用接口, 为上层屏蔽复杂的硬件细节,使上层看来各模块采用的硬件都是一样的,就像,,,,,】(里把 字符设备和块设备都当作设备文件,,,,看待一样。不同的是,,,,,,,)【的所有设备文件向上提 供统一的函数接口,而该层的各模块都有适合其自身功能需要的专有接口函数,比如串口 模块和网络接口模块的接口函数就不一样。需要说明的是,,,,包含的驱动只是为了屏蔽 硬件细节、支持硬件抽象的底层驱动,一般不能直接面向应用(串口除外),如果把驱动 分为与硬件相关和与硬件无关两部分,则,,,里的驱动主要是与硬件相关的部分。这层主 要采用了通用硬件抽象层的思想,但与之不同的是,,,,的硬件抽象模块层并不直接向操 作系统内核提供服务,而是通过操作系统接口层再向操作系统内核提供服务。 硬件抽象模块层是为了向上层软件的开发提供一个统一的硬件平台,以增强软件的可 移植性,因此,这就要求模块本身能够易于移植和扩展。所以,模块内部也采用分层设计, 分成通用接口层和基本驱动层,基本驱动层又分为与硬件相关部分和与硬件无关部分。以 网络接口抽象模块为例,如图,,所示。 通用接口层 、 协议栈(可选) ,硬件无关 基 数据收发、软复位、寄存器翻页等 太 „ 驱 动 基本读写函数 ,硬件相关 层 硬件相关头文件等 厂 图,,网络接口抽象模块内部结构示意图 ??????, ,、???按照这样的设计,如果采用的网络接口芯片一样,只是硬件设计不同,则只需更换与 第,,页 ,,, 信息,程大学硕士学位论文 硬件相关部分即可,这种情况在实际开发中经常遇到;如果芯片不同,则选择相应驱动即 可。此外,设计时还应考虑硬件抽象级别的问题。如果抽象级别太低,将造成,,,过多, 使用复杂;而抽象级别太高则难以实现操作系统的无关性,影响可移植性。需要在易于使 用和实现难度之间作一个折中。这个折中的标准是很难统一的,比较好的办法是以各个抽 象模块为单位进行划分,并且在模块内部实现分层设计,向上提供不同抽象级别的调用。 抽象模块以功能相对独立为划分原则,主要有以下几个: 处理器抽象模块:完成的主要工作是微控制器的寄存器、堆栈、中断向量表初始化(可 选)、,,端口初始化、工作频率的设定等,还有与操作系统内核相关的任务切换、中断响 应与处理等部分。此模块较复杂,包含内容较多,为了提高运行效率,或受微控制器自身 的限制,模块的大部分用汇编语言编写。模块向上提供,,,,,,“)、,,,,,,,,()、 ,,,,,,,—,,,()、,,,,等函数。此外,模块还应提供板级初始化文件;,,,锄,,,,,,,,,,(;和配置文件, ,出()等接口函数,其中,,,『,,;,腑,,,,,,,,;龟(;,方便系统参数的修改和配置。 存储器抽象模块:该模块与内核启动加载密切相关,主要包括,,认,和,,,,,的驱 ,,,()又调用,,,,,,,,,()、动。模块向上提供,锄,,),,,接口函数,其中,,,,,,,,,,,()又分别调用,,,,,,,,,()和,,,,,,,,,,,;,,,,,,,,() ,()实现对 ,,,,和,,,,,的写驱动。 ,()、,,,,,,,,』,,()、 定时器抽象模块:该模块的主要功能是为操作系统产生时钟中断服务,在硬件上可能 已被集成在微控制器中,但是功能上是独立的。模块向上提供,,,,,,,,()、,,,,,呱)、 ,锄。删,,()、,,,,,,;砸,,,;,,,,()等接口函数。 串口抽象模块:该模块应该包含完整的驱动程序,因为它还是操作系统内核下载和调 ,,辩()等 试的基本接口。模块向上提供,,渤,,,以()、,甜,,,,,,;,()、,,,,,,,,,,;,()等接口函数,其 中,耐,,,,,;,()可以调用,,,,,,,,,,,,,;,()实现对,,,,的读驱动。 网络接口抽象模块:包括网络接口芯片的基本驱动,网络协议栈部分是可选的,因为 有的操作系统已经包含网络协议,如嵌入式,,,,,)【。笔者建议不选,因为协议往往与操作 系统相关(尤其是宏内核操作系统),会加大操作系统接口层的难度。模块向上提供 ,,,,,,,,()、,,,,,,,,()、,,,,—,嘶,;()、,,,,,,?,;,()等接口函数,其中,,,(,,,,,,()可以 调用,,,,,,,,,“)实现对,,,,,,,,,网卡芯片的写驱动。 ,,,抽象模块:包括基本的硬件驱动程序,还可选的包括,,,,(,,,(,,,(,的通信协 议。 笔者也建议不选,因为协议往往与操作系统相关(尤其是宏内核操作系统),会加大操作 系统接口层的难度。模块向上提供,,,,,,,()、,,,,,,,,()、,,,—,,,,;()、,,,—,,,,,() 等接口函数,其中,,,,,,,,()可以调用,,,,,,,、柑,,()实现对,,,,,,,,,,芯片的写 驱动。 内核加载调试模块:这部分虽然在硬件上没有对应的模块,却是一个很重要的模块, 在内容上至少涉及处理器模块、存储器模块和串口模块;此外,还可能涉及网络接口和,,, 第,,页 信息工程大学硕士学位论文 等接口模块,因为它实际上就是,,,,,,,,,,的核心内容,主要完成处理器工作状态的初始 化和设置、操作系统内核的加载和调试工作;模块设计应考虑到加载调试方式的灵活多样 性,因为加载调试可能通过串口、网口或,,,等接口,内核也有可能是从,,,,,或,,, 加载到,,蝴,认,或者,,,,,中,内块层以上都是透明的,用户不必关心具体实现细节,只需调用统一接口即可。模块向上提 核可能是压缩的也可能是非压缩的,但这些供;,,,,,,,描,()、,;,,,,,,()、,,,, ,()等接口函数。 其它抽象模块:包括嵌入式系统常用外围设备模块,如液晶控制,显示抽象模块、触摸 对模 屏抽象模块等。 其中,处理器抽象模块、存储器抽象模块、串口抽象模块、定时器抽象模块,可以组 成一个最小的,,,系统,其它模块都是根据应用选择的,同时这几个模块也是,,,,,,,,,, 的主要组成部分。各硬件抽象模块与相应的硬件模块在逻辑上成为一体,选择了硬件模块 就选择了相应的硬件抽象模块,因此,硬件开发板设计完成后,,,,的基本框架已经确定 下来了。 ,(,(,操作系统接口层 此层的主要目的是作为硬件抽象层与操作系统的衔接层,因为不同操作系统对,,,的 定义和规范是不一样的,对,,,各硬件抽象模块的引用形式也是不一样的,需要为硬件抽 象层加上不同形式的接口来匹配不同的操作系统,这些接口也可以是从操作系统中剥离出 来并加以修改形成的。该层完成的工作实质上就是操作系统在硬件抽象层上的移植,只不 过把操作系统中与移植相关的部分规整为接口,将移植规范化。 这一层的设计与操作系统内核关系密切,对微内核操作系统来说,内核与硬件相关部 分甚少,设备驱动置于内核外,操作系统接口层要做的工作不多,实现起来容易。而宏内 核操作系统把大量设备驱动置于内核中,内核与硬件相关部分增多,接口也复杂得多,需 要详细的配置文件和说明文档进行辅助。 通过这样的设计,硬件抽象层只需要关注于底层硬件操作与驱动的编写,而无需考虑 与操作系统的衔接。相应的,操作系统接口层只需注重于各硬件抽象模块与操作系统的接 口问题,而不再需要亲自操纵复杂的硬件了。 ,(,(,,,,资源库 硬件抽象层的各模块组成硬件抽象模块库,操作系统接口层的各种接口组成操作系统 接口库,可以将两个库合成一个,,,资源库,进行统一、规范的管理,方便资源的查询、 提取、修改和扩充。,,,资源库结构如图,,所示。 这样设计的,,,可以充分发挥其潜在的代码复用能力,实现其可重构性,也使其结构 更清晰明确,易于理解和维护。可重构,,,基于,,,资源库的开发步骤是:根据硬件板 上的硬件模块资源,选择相应的微控制器模块和其它硬件驱动模块;根据选用的操作系统, 选择对应的操作系统接口,并把各硬件抽象模块挂载到选择的接口下。这种开发模式实际 第,,页 笪星?堡查兰堡主堂堡鲨皇 上是为各开发板量身定做了一个功能完整的,,,模板,唯一要做的工作就是各模块与微控 制器的接口部分代码(基地址、端口等)的修改,因为这部分的硬件设计有可能是不同的。 在这种开发模式下,,,,的开发将变得像搭积木一样简单,但需要指出的是,如此设计的 ,,,需要借助于,,,资源库的支持,库的内容越丰富,,,,的可重构性就越强,开发越容 易。 卜—一,,,,, ,,卜,一,,———一,,, ,,,;, ,,一,;,,”:,,,,— :,,,?一,,,?,,;,,,,“ ,卜一,,;,,,,, ,;,,,,,,,卜一,,;,,,,且,,,,,,, ,,?:,, ,,卜一,眦,,,,一,?,,;培, ,卜一,,,,,,攀, 卜———,,,,,,—,,,, , ,卜一,,, :,卜—,~ ,,—一,,; 一,,,卜—一,,,, ,:一,卜—一,,, ,,,,, ?—一,,,,,,,; 操作系,—一嵌入式,,,, 统接暇 口卜 图,,,,,资源厍结构示惹图 一, 此外,,,,的各模块内部,尤其是驱动模块,也应当模块化和层次化设计,这样可以 ,, 减小代码复用的粒度,增强复用的灵活度,提高其可重构性;除了必须用汇编语言实现的 ,一 部分外,都应采用标准,语言编写,以增强程序的可移植性:上文提到的中断向量表初始 „, 化(可选)指的是中断向量表初始化可以在,,,中静态实现,也可以在内核中动态初始化, 库, 详情会在,(,(,内核启动章节中论述。 ,(,(,可重构,,,的优势与创新 ,,,的模块化和层次化设计打破了传统,,,的封闭性与专用性,构建了一个通用的、 开放的,,,结构:,,,由硬件抽象模块层和操作系统接口层组成,它们各司其职,分别屏 蔽了具体硬件和操作系统内核代码的差异,其中,硬件抽象模块层由一系列与硬件模块实 体对应的硬件抽象模块组成。因此,,,,在开发完成之后,仍是一个结构开放的实体,可 以对其进行重新构建,以满足不同的应用需求。比如,对硬件抽象模块进行修改、扩展和 替换,即可重构出适用于不同硬件环境的,,,;对操作系统接口层进行替换,即可重构出 适用于不同操作系统的,,,。这实际上就是开发新,,,的重构化开发过程,以重构实现开 发,开发效率得到了提高。因此,模块化和层次化设计的,,,可以称之为可重构,,,。与 传统软件工程中的重构含义不同的是,本文的,,,重构并不是为了对已有系统进行完善, 而是指对软件重新构造,关注的是重构化开发对,,,开发效率带来的提高。因此,本文对 第,,页 笪星三堡盔兰堡主堂垡堡奎 可重构,,,的定义是:在不改变,,,整体结构和性能的情况下,只通过对其中的部分代 码模块进行修改或者替换,就可以构造出新的,,,来。 与传统,,,相比,可重构,,,的优势与创新性主要体现在: (,)提高了开发效率。,,,可以基于,,,资源库进行开发,从库中选择不同的硬件抽 象模块和操作系统接口,即可方便、灵活地形成不同的,,,;也可以对已有的,,,进行重 构化开发,以满足不同的硬件环境或操作系统要求。 (,)降低了,,,开发难度。,,,由硬件抽象模块层和操作系统接口层搭建,向下不必 了解繁杂的硬件细节,向上不需关心复杂的操作系统接口,所需的工作就是将各模块与接 口层的集成。可以说,只要有足够庞大的,,,资源库,,,,的开发真的可以像搭积木一样 简单。 (,)提高了代码复用率。可以把代码复用的粒度降低到模块级以下,还可以把一切有 用的软件资源按规范添加到,,,资源库中,同时,自己完成的工作也会同步的添加到库里 去,这就使得已完成的工作都可以利用起来,在最大程度上去除了传统,,,开发模式的弊 端。 (,)功能强大。可以同时作为硬件抽象层和板级支持包使用,且使两者形成优势互补, 兼具两者优点。 (,)改变了嵌入式产品的开发流程。,,,的硬件抽象层为上层屏蔽了硬件差异,可以 使系统的软硬件设计流程由串行瀑布式改进为并行,模式„,,,。 (,)利于理解、维护和升级。,,,按功能成模块化、层次化划分,结构明确、脉络清 晰,可以在模块级、层次级甚至指令级进行替换、维护和升级,同时对开发和维护人员也 降低了要求。 (,),,,资源库概念的提出,符合嵌入式技术的发展趋势,完成了不可能由相互间有利 益竞争的操作系统生产商来完成的任务,可能引起嵌入式产业,,,开发和服务模式的改 变。 ,(,可重构,,,的实现与应用 ,(,(,可重构,,,的实现 课题选用的是“;,,,(,,和,,,,,,,)【操作系统(具体原因在第五章中论述),下面 便以 它们在,觞蚋,,和,,,,,,,,上的,,,开发为例,详细论述,,,模块化、层次化的开 发和重构过程。 ,船,,,,上的,,,结构如图,,所示,将操作系统接口层换成肛,,,,,,)【的接口则 成为 ?,,,,,,】(的,,,,换成?;,,,(,,的接口则成为“;,,,—,,的,,,,硬件抽象层部分可以不 需改动直接复用。 ,器,,,,‟,上的,,,结构如图,,所示,同理,只要对操作系统接口层进行替换就可 以作为,,,,,,,或?,,,,(,,的,, ,。 第,,页 信息工程大学硕士学位论文 课题首先实现了,;,,,(,,在,,,,,,,,上的,,,开发,然后对其进行重构,将操作 系统接口层替换成?,,,,,,下的接口,便可以重构化地开发出,,,,,,,在,,,,,,,, 上 的,,,;最后,将这两个,,,的硬件抽象模块层重构,将它们替换为,,,,,,,对应的硬 件抽象模块,即可简单、快速地重构出,,,,,,,,上的两个,,,来。 操作系统内核 :操作系统接口层: 硬件抽象模块层 ,勰捌,勰,,要塞 ,吲,徽?勰,扩 ,,;抽象模块,处理器抽象模块液 篓晏,,踹篑 (,;,内置),,,,,(,,,,,,,)晶控制,显示抽 象模块,(,,,,,,,,,,) 普蚋 ,,,抽象模块存储器抽象模块 (,,,,(,,,,,,,,,,(,,,,,,,,,,,,,,,,,, ,,,,,(,,,,,,,,),,,,,,,,,,,,,,,,,) ,,,,,,,硬件平台 图,,,,,,,,,,上的,,,结构图 操作系统内核 :操作系统接口层: 硬件抽象层 串口抽象模划,,,,,,,网络接口? (,;,内置),抽象模块,,抽象模块,,抽触授屏 (,;,模拟,,,,,,,,,,,,,(,,象模块 ,,,,,‟ 液晶拧制,疑示,,;抽象模块 ,,,,,,(,,,;,,,,),抽象模块(,,,,,,,,) (,,,内置) ,,,抽象模块存储器抽象模块 (,,,,,,,)(,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,) ,舔,,,,,硬件平台 图,,,,,,,,,,上的,,,结构图 由于在开发第一个,,,(?;,,,—,,在,解,,,,,,上的,,,)时,,,,资源库还没有 创建,,,,的各部分还需要自己编写,或者找到与本系统的硬件环境相近的,,,作为参考。 但是,由于肛,,,,,,,和“,,,,,,)(属于开源操作系统,一般没有厂商会提供,,,模板。 而 第,,页 信息工程大学硕士学位论文 且,即使找到可以参考的,,,,也必须将其按照课题设计的,,,规范进行改造,才能作为 ,,,资源加入到库中去。鉴于论文篇幅有限,且各抽象模块的原理和开发过程相似,下面 仅以存储器模块为例,详细论述硬件抽象模块的具体实现及复用过程: ,,,,,,,‟,的存储器模块在硬件上采用的是,片容量为,,的,,,型,,,,, ,,,,,,,,,,和,片容量,,的,,,,,,,,,,,,,,,,,,,,,,可以用读,写指令直接访问, 所以,实际上只需要为,,,,,编写驱动。,,,型,,,,,采用的是,,,,接口,以“字” 为单位进行操作,可以直接读取芯片内部存储器的数据,支持芯片内执行(,,,,,,,;,,,,,, ,,,;,),但在写入和擦除时需要编写专门的驱动程序。,,,,,,,,,,芯片提供专门的存储器 操作命令,包括字编程、扇区擦除、块擦除、芯片擦除、软件,,入口等,种命令【州,需 要编程实现,以下为部分底层驱动代码: 群,,;,,,;“,,,,料”‟,(此中定义,,,,,,,,,,,,,,,等硬件相关 参数‟, ,,,,,,,,,,,,,,,,,,,,,,,,,,, , 确,,,,,,,,,,,,—,,,,,二,,,, ,)【,,,,, 相,,,,,,,,,,,,,,一,,,,,,,,,,,, 拌,,,,,,,吁町,,,,,一,,,,,,,,,啪 样,,,,,,,,,,,,,,,,,,,,,,,,,,, 襻,,,,?,,,,,,,,,,,,,,, ,,,,,,船,,,,,,,,,,(,,,,,,,,,,,,,,,,,,,,,,,,, ,,) , (?((,,,,,,,,,,,,,,,),,,,,,,—,,,,—,,,,十,,,,,,)),,, ,,,,,—,,,,,, (?((,,,,,,,,,,,,,,幸),,,,,,,—,,,王,—,,,,,„,,,,,,)),, ,,,,,,,,,,,,,; (?((,,,,,,,,,,,,,,?),,,,,,,,,,,,,,,,,,,,,,,,));,,, ,(,,,,,,,,; („((,,,,,,,,,,,,,,‟),,,,,,,,,,,,,,,,,,,,,,,,,)),, ,,,,,,,; , ,,?,,,,,,,,,,()函数体中的前四条指令都是命令的需要,最后一条才写入所需数 据。 这是模块中的与硬件相关部分,可以继续向上封装成为向,,,,,写入连续字节的函数 ,,,,,,,,,,,—,;(),写入数组的函数,,嬲?岍,,,,,,,()等等,最后封装成,,,,黟,,,,() 的统一形式。应当注意的是,底层的接口尽量用宏定义实现,而不用一般的函数调用,因 为宏定义在编译时就进行替换,没有执行时的性能损失。 可见,如果将此芯片的硬件抽象模块代码复用到,,,,,,,的,,,上,则只需要修改 ,,,,珂,,中的部分宏参数即可,代码改动量极小。同理,网络接口抽象模块和,,,抽象 模块,也可以通过少量的修改实现复用;串口和定时器抽象模块,已经集成在,,;,,,, 和,,,,,,,内,它们的寄存器结构不一样,因此,对抽象模块中的与硬件相关部分进行修 改后,也可以实现复用。 第,,页 信息工程大学硕士学位论文 以上只说明了硬件抽象模块的实现过程,由于操作系统接口层的实现与内核移植密不 可分,所以,将其放在下一章中,与操作系统移植一起论述。 ,(,(,可重构,,,在系统中的应用 由图,,可见,,,,是系统中软硬件的分界线,操作系统接口层及以上部分是纯软件 的工作,硬件抽象模块层及以下是与硬件相关的工作,软硬件的开发工作不用再以先硬件 后软件的串行模式进行,而可以进行,模式的并行开发。并行开发的步骤可以概括为:首 先,根据硬件技术指标在硬件平台资源库中选择合适的硬件模块,同时也就选定了相应的 硬件抽象模块资源。因为,硬件抽象屏蔽了具体硬件差异,同时又向上提供了统一的调用 接口,那么,在选定了操作系统之后,软硬件的开发和调试工作就可以齐头并进了,然后, 软硬件在,,,的操作系统接口层处完成拼接,最后进行系统的整体测试和联调。可见,并 行开发大大缩短了系统的开发周期。图,,显示了两种开发模式的对比。 应用软件 设备驱动 软件, 操作系统内核 ,操作系统接口层: , ,酷 硬件抽象模块层 、广, 抽象硬件, 平台弋 模块化硬件平台 , 图,,可重构,,,在整个系统中的示意图 串行开发模式 并行开发模式 际丽 匡蛋 硬件抽象模块层定义 硬件设计,制作 基于硬件抽象层 ,硬件设计,制作 ,, 的操作系统与驱 —,,,,匕, ,硬件抽象层 动程序的开发 ,的软件实现 一 蓝鬲磊 出一 囊 软硬件集成调试 ;二工二? 最终产品 ,最终产品, 图,,串行与并行开发模式对比图 第,,页 信息工程大学硕士学位论文 ,(,(,与传统,,,开发的对比 显然,如果用传统,,,的开发方法,则需要单独开发四个,,,:在,,,,,砌?上移植 肛,,,,,,)【的,,,、在,硒,,,,上移植,,,,,,,,的,,,、在,,,,,,,,上移植肛,,,,,,)【 的,,,、在,,,,,,,‟,上移植“,,,,(,,的,,,;而且,还需要从底层开始开发大部分设 备驱动。 但是,模块化、层次化的可重构,,,可以在抽象模块级以下最大程度的实现代码复用。 在,,,资源库为空的情况下,需要单独开发实现的是:,,,,,,,,的硬件抽象模块层、 ?,,,,(?接口、“;,,,,,,接口和,,,,,,,,的部分硬件抽象模块;所有设备驱动都可以在 硬件抽象模块层以上进行开发;开发效率提高,倍以上。如果在,,,资源库较为丰富的情 况下,所需的工作量将会更少。尤其是在大型基础项目中,常常需要硬件平台的系列化开 发,,,,资源库丰富,可重构,,,带来的效益将更加明显。 ,(,本章小结 本章从,,,的定义与组成说起,论述了,,,,,,,,,,与,,,、硬件抽象层与,,,的 区 别与联系,在深入剖析传统,,,弊端的基础上,汲取了硬件抽象层的优点,设计并实现了 一个开放的、通用的可重构,,,,与传统的,,,相比,在开发效率上有很大的提高,而且 还将有力地支持操作系统的跨平台移植和软硬件的并行开发。 第,,页 信息工程大学硕士学位论文 第五章嵌入式操作系统的规范化与跨平台移植 嵌入式操作系统是实现软件开发平台化的基础,是整个通用开发平台的软件核心。嵌 入式操作系统的应用有利于提高嵌入式系统的可靠性,有利于提高系统的开发效率、缩短 开发周期,有利于充分发挥,,位高档,,,的多任务潜力。因此,无论对于嵌入式的具体 应用,还是对于通用开发平台,嵌入式操作系统都是十分必要、不可或缺的。本章将对操 作系统的内核代码及其可移植性进行深入分析,并将内核代码规范化划分,对其中与硬件 相关的部分(也即移植相关部分)进行修改并抽象为,,,的操作系统接口,并在可重构 ,,,的基础上,实现操作系统的规范化和跨平台移植,提高其移植效率。 ,(,嵌入式操作系统移植概述 所谓移植,就是使一个操作系统内核能在其他的微处理器或微控制器上运彳于,”,。很明 显,移植主要是针对内核而言的,但并不是内核中所有的代码都与处理器硬件相关,因此, 移植要做的只是那部分与硬件相关的代码在底层硬件上的移植。在课题设计的可重构,,, 的基础上要实现的就是与硬件相关(与移植相关)的代码在硬件抽象模块层上的移植,而 这实际上也就是,,,的操作系统接口层,只不过把操作系统中与移植相关的部分规整为接 口,将移植规范化。可见,,,,的操作系统接口层与操作系统的移植是水乳交融、密不可 分的,因此,本文把原本属于上一章的操作系统接口层部分放到这一章与操作系统移植一 起论述。 需要说明的是,文中提到的操作系统规范化移植主要体现在两个方面:一方面是将操 作系统内核中与移植相关的那部分代码规范地划分出来,加以规范地改写和整理,然后将 其抽象为操作系统接口层;另一方面是操作系统接口层尽量只通过调用硬件抽象模块层的 统一接口来操纵底层硬件。这个规范是平台内部定义的,是相对于目前操作系统移植的随 意性和混乱性而言的,其目的是为了便于平台中操作系统移植工作的共享和统一管理,因 此,后续的移植工作也将严格按照此规范进行。 操作系统的跨平台移植主要是指跨硬件平台,即在保持操作系统接口层不变的情况 下,通过对硬件抽象模块层的某些模块进行修改或者替换,即可简单地实现在不同硬件平 台上的移植,也即一次移植,多次使用。 可见,可重构,,,是实现操作系统规范化和跨平台移植的基础。下面本章以肛;,,,?,, 和,;,,,,两个操作系统为例,论述操作系统的规范化与跨平台移植过程。 ,(,(,操作系统的选择与介绍 ,(?,,,,—,, ,„,,,,,?是一个源码开放的嵌入式实时操作系统,得到了美国联邦航空管理局(,,,) 商用航空器认证,具有较高的稳定性和安全性。“,,,,,,,在设计之初就已经充分考虑了可 第,,页 信思工程大学硕士学位论文 移植性,大部分代码采用,语言编写,只有小部分与处理器硬件相关的代码采用汇编语言 实现,较容易实现在不同处理器上的移植,目前已经被成功移植到,,,,,、,,,和,,,,,,,, 等公司的,,多种,位、,,位和,,位的嵌入式处理器上。 ,;,,,(,,其实是一个实时操作系统的内核,采用抢占式微内核结构,全部核心代码只 有,(,,,,最小内核可以编译到,,,左右,只包含了任务调度、时钟管理、内存管理和任 务间的通信与同步等基本功能模块,而没有包括,,,管理、文件系统、网络等功能模块。 此外,与商业化的微内核实时操作系统相比,它还缺少,,,,,,,,,部分,如文件系统、远程 函数调用库、通信软件库。通信软件库包括:,;,,,,软件库、蓝牙通信软件库、,,,,红 外通信软件库等。这一类软件的解决有三种途径:第一是购买商业的第三方软件;第二是 移植开源的第三方软件,第三是自己编写。 ,,,,,(,,采用基于优先级的抢占式调度算法,最多可以运行,,个任务,并且规定所 有任务的优先级必须不同。任务的优先级同时也唯一地标识了该任务,即使两个任务的重 要性相同,它们也必须有优先级上的差异。 开放源码、微内核结构、抢占式调度、实时性强、稳定性高、易于移植,可以说,?,,,,(? 具备了一个优秀嵌入式实时操作系统的几乎所有优点,因此,“;,,,(,,成为课题的首选操 作系统是勿庸置疑的。 ,(,,,,,,, “;,,,,,是嵌入式,,,,,的一个典范之作。“;,,,,)【最初由,,肌)【,(,内 核发展而来, 其内核始终与主流,,,,,)【内核保持同步,目前已经支持,(,版本的内核。,,,,,,,为了满 足嵌入式系统的需要,做了许多小型化的工作,如:改写和裁剪内核、精简应用函数库、 选择合适的文件系统和文件格式、采用灵活的内核运行和加载方式。虽然“,,,,,,的体积 很小,但仍保持了,,,,,几乎所有的优秀特性,包括良好的稳定性和可移植性,内核模块 的动态可裁剪性、出色的网络功能,完备的文件系统支持,支持多处理器、以及标准丰富 的,,,等【,,,。 “,,,,,,,内核已经包括任务管理、设备驱动程序、网络协议、文件系统等功能模块, 所以,不需要再进行第三方软件的移植,而且由于其开源性,在网络上有很多的免费资源 可以共享,还可以通过论坛或者社区与全世界的,,,,酊“,,,,,)„的高手们进行交流,他们 都是自由软件的拥护者,会很热心的给你解答,可以说,关于,,,,,)【,肛,,,,,,的最新鲜的 和最领先的技术都来至于网络,而不是教科书,因此,文后关于肛,,,,,,的参考资料 几乎全是网络形式的。所以说,用?,,,,,,进行软件开发的费用几乎为零。 为了降低硬件成本及运行功耗,很多嵌入式,,,往往没有设计内存管理单元(,,,,,, ,,,蝉,,,,,,,,,,,,,,,),而肛,,,,弧正是专门为此类低硬件成本;,,设计的嵌入式 ,,,,,,可以说?,,,,,)【最成功之处在于它不需要,,,的,,,支持。但实际上,“,,,,,, 最大的缺点也正是来自于此,由于缺少,,,的支持,其多任务管理功能受到一定限制, 如:无法实现,,,,(),而只能使用,,,,,“);没有虚拟内存(分页,页面交换)、内存地址转 第,,页 信息工程大学硕士学位论文 换(分段)和内存保护等内存管理机制,它所使用的都是直接物理地址:需要将内核和应 用程序映像,次性全部装入内存。 此外,?,,,,,,)【内核并不是抢占式的(,,,,,)【,(,才支持抢占式),而且是宏 内核结构, 因此,它的实时性并不好,不能用在实时性要求高的系统中。但是,瑕不掩玉,这些都不 能阻止它成为嵌入式产业的新宠儿,“;,,,,)【正大行其道。 嵌入式软件的开源热潮正在兴起,,;,,,,)【作为其主流,正是课题研究的主要对象之 一,此外,对“,,,,,,】【的实时性改造和微内核重构也将是课题今后的主要研究内容之一。 ,(,(,操作系统内核启动方式分析 操作系统内核可以有两种运行方式:在,,,,,(,,,型)上直接运行,或加载到,,, 中运行,,”。 ,,,,,运行方式:这种方式是把内核可执行映像的代码段烧写到,,,型,,,,,中, 采用,,,(,,;;,,,,,,,,;,)技术,系统启动时从,,,,,的某个地址开始逐句执行。这种 方法只需把数据段放入内存中,可以减少内存的使用量,是目前很多嵌入式系统采用的方 法。 ,,,运行方式:把内核的压缩文件存放在,,,,,(,,,型或,,,,型都可以)上, 系统启动时通过,,,,,,,,,,读取压缩文件至内存解压并执行,这种方式相对复杂一些,但 是运行速度可能更快(,,,的读周期是,,,,,左右,,,,,,是,,,,)。同时这也是标准,,,,,)( 系统采用的启动方式。当然也可以把不压缩的内核放在,,,,,上,系统启动时读取到内 存执行,但这种方式很少采用。 内核下载可以通过串口、网口或,,,接口,其中串口的硬件要求低,是微控制器的基 本配置,软件实现简单,是内核下载最常用的方法,但是速度比较慢;网口和,,,接口速 度快,但是需要软件协议支持,且硬件要求高,并不是所有的嵌入式系统所具备的;其实, 内核也可以通过,,,,等接口下载,但是需要专门的协议和仿真器,而且需要在处理器内 集成,,,,接口,速度较慢。 内核加载与启动这部分工作一般由,,,,,,,,,,来完成,当然也可以由内核本身来做, 但这样会使软件架构变得不够清晰,也不利于多种引导方式的灵活实现,而且由,?,,,,,, 可以独立完成更多的工作,一个好的,,,,,,,,,,的功能可以很强大,还可以作为单独的通 用软件实现在不同硬件平台上的移植与应用。 ,(,(,,,试(,,,,,,,,,,的设计与实现 ,,,,,,,,;,在,(,(,节已经作过简单的介绍,但是它与内核的加载与启动部分密切 相关, 所以文章将在此对它进行详细的论述,并在可重构,,,的基础上实现一个通用的 ,,,,,,,,,,。 ,,,,,,,,,是系统加电后,完成硬件初始化、内核加载与启动的一段程序。由它的定 义与前文的分析可知,,,,,,,,,,,的大部分功能已经包含在,,,里了,主要由,,,的处理 第,,页 信息工程大学硕士学位论文 器抽象模块、存储器抽象模块和串口抽象模块的相关代码组成,与操作系统无关,也就是 说在硬件抽象模块层开发完成后,,,,,,,,,,,的框架就已经搭建好了,要做的工作只是把 模块组合起来,工作量远远少于自己开发或者移植现有的通用,,,,,,,,,,。 ,,,,,,,,,作为系统的启动程序,首先关心的问题是;,,在上电后从哪个地址开始执 行或者说第一条指令放在哪个地址。这个问题与;,,的具体设计相关,有些,,,如,,,、 ,,,,等在加电的时候运行固定地址的代码,则开发者需要做的就是通过连接命令文件或 内存加载文件将代码安排在正确的地址;而有些,,,如,,,,、,,,,,,,,、,(,,,也是在 加电的时候读取一个特定的地址单元的值作为第一条指令的执行地址,开发者需要做的就 是在那个特定的地址(一般为,地址)里面放上第一条指令在存储器中的地址,这个可以 通过异常向量表的设置来解决。对于,鹊,,,,,的微控制器,,,,,,,来说,如果设置为 内部引导,则上电后从片内地址空间的,地址处取得地址(放入,,)执行,如果设置为外 部引导,则从片外地址空间的,地址处取得地址(放入,,)执行。对于,,,,,,,的微控 制器,,,,,,,来说,虽然,,,,体系结构的,,,是从固定地址开始执行,但是,,,,,,, 在上电后会先执行一段内部自带的启动代码,,,,,,,;,,然后再去外部地址空间的,地址 处取得地址(放入,,)执行。很明显,占据,,,,,,,和,,,,,,,片内外最低地址空间 (含,地址)的应该是非易失性存储器(,,,,,或,,,),因此,它们的片外,,,,,应 该被设计在,趴,,的空间内,用作存放启动代码。可以说,,,,,,,,和,,,,,,,都是通 过异常来启动的,因为它们都是把上电复位当作,号异常,然后调用其异常服务程序作为 启动代码的。因此,我们必须把,,,,,,,,,,的入口地址当作,号异常向量放在异常向量表 中,异常向量表应该通过连接命令文件或内存加载文件安排在片内,外的,地址处,也就是 它们的片外,,,,,中。但是这样也带来了另外一个问题,就是异常向量表必须事先确定、 设计好的,然后与启动代码一起烧写到,,,,,中,之后便无法动态地添加和修改异常向 量了。因此,可以作如下改进:在片内,外地址空间的,地址处只放置,号异常向量或者直 接填上,,,,,,,,,的入口地址,只要能保证系统正常启动即可,然后在,,,中新建异常 向量表,并通过修改向量基地址寄存器,,,或者存储器重映射将向量表定位到新建位置, 之后向量表便可正常工作了。当然,在向量表建好前最好关闭系统所有中断,不然有可能 会造成系统混乱。新建向量表的工作可以在进入内核前完成,也可以放到内核中与初始化 工作一起完成,这些可以根据需要灵活设计。 ,,,?,,,,,的具体实现与采用的内核加载和启动方式有关,如果通过网口加载内核, 则串口抽象模块应该换成网口抽象模块,内核的启动方式不同,存储器抽象模块采用的代 码也会不同。根据,,,,,,,和,,,,,,,‟,的硬件资源,特别是存储器资源,将分别采用 以下的内核加载和启动方式: ,鹋,,,,,的微控制器,,,,,,,带有,,,,,片内,,,,,,则可以将,,,,,, ,,;,按 上文的方法正确放置在片内,,,,,中,跳线设置为内部引导,系统上电后,将首先执行 ,,,,,,,,,,,然后选择是下载模式还是启动模式。如果是下载模式,则通过串口将内核的可 第,,页 堡星三堡盔堂堡主堂垡至奎 执行映像从上位机传入目标板并写入片外,,,,,中;如果是启动方式,则在完成初始化 工作后直接跳转入内核执行。 ,船,,,,,的微控制器,,,,,,,不带片内,,,,,,则将,,,,,,,,,,放在 片外,,,,, 中,跳线设置为片外启动,系统上电后运行,,,,,,,,,,,选择下载模式或启动模式。如果 是下载模式,则通过串口将内核的可执行映像从上位机传入目标板并写入片外,,,,,中, 位置处于,,,,,,,,,,之后;如果是启动方式,则在完成初始化工作后直接跳转入内核执行, 如果内核是压缩的,则先将内核解压缩到,,,中,然后运行,这部分解压缩的代码一般 是内核自带的。 确定了内核的加载和启动方式后就可以设计相应的,,,,,,,,;,了,由于有了模块化、 层次化的,,,支持,我们可以很容易的为每块开发板设计出专门的,,,,,,,,,,,因为这样 开发出的,,,?,,,,,代码简洁高效,没有代码冗余,有别于臃肿庞大的通用,,,,,,,,,, 我们把它叫做,,,,(,,,,,,,,,,。它的主要工作和流程如图, ,所示。 图,,,,,,(,,,,,,,,,,流 程图 第,,页 信息工程大学硕七学位论文 作为,,,,—,,,,,,,,,,的开发者,我们还应关心一个重要的问题:,,,,(,,,,,,,,, ,本身 是如何下载到,,,,,中的,这个问题就像,;机上的,,,,是如何下载到主板上的问题一 样,都需要专门工具的支持。,,,,,,,,,,的下载一般通过,,,,,,,,,接口。采用,,,(,,, ,,,,锄,,,鲫,)的方法进行在线编程,也可以使用,,法需要在芯片烧写完成后才能焊到开发板上,使用和调试很不方便,目前已经基本淘汰不 ,,,编程器进行编程,但是这种方 用。 ,,,,,,,,,,,,,,,,开发完成后,就可以进行操作系统内核的移植工作了,文章将 在以下 两节分别介绍“,,,,(,,和?,,,,,,)【在,,,,,,,,,、,鹊,,,,的规范化移植过程,并解决 上一章遗留下来的,,,操作系统的接口层问题。 ,(,肛,,,,(,,的规范化与跨平台移植 ,(,(,“,,,,(,,的规范化分析与跨平台移 植 “,,,,(,在设计之初就已经充分考虑了可移植性,比较容易实现在不同处理器上的移 植,但是要使,,,,,(,,正常运行,处理器必须满足以下要求【,,】: (,)处理器的,编译器能产生可重入代码; ,,)用,语言就可以打开和关闭中断; (,)处理器支持中断,并且能产生定时中断(通常在,,至,,,,,之间); (,)处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈; (,)处理器有将堆栈指针和其它,,,寄存器读出和存储到堆栈或内存中的指令; 戊用软件 (用,,代码) ,,,,,(,,,,,,,(,, (与处理器无关代码)(与应用相关) ,,,,,,, ,,,,,,, ,,,,,,, ,,,,,,,,,,,, ,,,,,,)(,,,,;,,,,,, ,,—,,“爝,,,,,,,, ,,,,,,, ,,,,,,, ,,,,,,, ,,,,?, ,;,,,—,,移植 (处理器相关代码) ,,,,,, ,,,,,,,,,, ,,,,,,, 操作系统接,层 硬件抽象模块层 微控制器其它硬件设备 图,,,,,,,,,,代码结构图 第,,页 笪星三堡奎羔堡主堂堡堡奎 ,,,,,,,和,,,,,,,可以满足以上要求,故可以实现“,,,,—,,在其上的移植。要实 现肛,,,,—,,的规范化移植,必须先对其内核代码进行规范化的分析与划分,而实际上, 肛,,,,,?在设计的时候就已经很好的运用了这种思想,它的内核代码是很规范的,大致可 以分为与处理器相关、与处理器无关和与应用相关三部分,其内核结构如图,,所示。 表,川;,,,?,中与移植相关的代码 ,名称类型所在文件描述。 ,,,,,,,数据类型,,,,,(,布尔型 ,,,,,数据类型,,,,,(,无符号,位整数 ,,,,,数据类型,,,,,(,有符号,位整数 ,,,,,,数据类型,,,,,(,无符号,,位整数 ,?,,,,数据类型,,,,,(,有符号,,位整数 ,?,,,,数据类型,,,,,(,无符号,,位整数 ,?,,,,数据类型,,,,,(,有符号,,位整数 ,,,,数据类型,,,,,(,单精度浮点数 ,,,,数据类型,,,,,(,双精度浮点数 ,,,,,数据类型,,,,,(,堆栈数据类型 ,,,,,,,数据类型,,,,,(,,,,状态寄存器宽度 ,,—,,,,,,,,,,,,,,,宏定义,,,,,(,定义保护临界段的方法 ,,,,,,,,,,、,,宏定义,,,,,(,定义堆栈的方向 ,,—,,,,,,,;,,,,,,,宏,,,,,(,进入临界段 ,,—,,,,,,,,,,,,,,宏,,,,,(,退出临界段 ,,,,,,,,,,,,,()函数,,,,,,,,(,,,使最高优先级就绪任务运行 ,,,,)【,“)函数,,,;,,—,(,,,任务上下文切换 ,,,,,,,)【,,()函数,,,;,,—,(,,,,,,中的任务上下文切换 ,,,;,,,,()函数,,,;,,—,(,,,时钟节拍中断 ,,协,,墩,,,,()函数,,,,,,(,任务堆栈初始化 ,,,,,,,,,,,,百 ,() ,,,,,,,,,,,,, () ,,,,,,,,,,,,,,, () ,,协,,,,,,,,()用以添加用户代码的钩子函 ,,协,,,,,,,()函数,,,,,,(,数,可以不添加任何代码。 ,,协,,,,,,,,,()只需要声明。 ,,,,,,,,,,,,,() ,,,,,,,,;,,,,, () ,,,,,,,,,,,,,, , 很明显,与处理器相关的部分正是我们所需要的。我们只需要使这部分代码在硬件抽 象模块层上移植成功即可。因此,移植要完成的工作就是,,,,,,(,、,,—,,,—,(,, , 第,,页 信息,程大学硕士学位论文 和,,,,,,—,(,三个文件中相关函数的编写或修改。其中,,,,,,(,包括了用群,,,,,, 语句定义的、与处理器相关的常数、宏以及类型;,,,,,,(,,,包含了,个简单的汇 编语言函数;,,—,,,—,(,包含了,,个简单的,函数,但其中只有一个是必要的,其他, 个函数只需声明,并不一定要包含任何代码。具体要完成的工作如表,所示。 根据以上分析,我们首先完成了,,,,,(,,在,船,,,,(,开发板上的移植工作,然后, 对比,髂,,,,开发板硬件资源的不同,将一部分硬件抽象模块复用,将一部分硬件抽象 模块的与硬件相关部分替换,便可完成“,,,,(,,在,,,,,,,开发板上的移植。此外, ,,,,,??的任务切换是通过模拟一次中断完成的,需要将,,;仅,,()的入口地址以 ,,,;饮,,的形式放在异常向量表中,且此函数是用汇编语言编写的,所以此函数的实现 最好不要调用处理器抽象模块提供的相关函数,而直接操作处理器硬件,以提高系统运行 效率。虽然这样将使处理器抽象模块失去部分作用,但会使代码简洁高效,同理, ,,,,,,(,,(,,,的时钟节拍中断,,,;,,,,也可用这种方式实现。如果用户愿意,甚至 可以将处理器抽象模块整个抽去,让?,,,,(,直接在“裸机”(处理器硬件)上运行,但 这样会增加一定的难度,需要用户在易用性和高效性之间作个折中。 ,(,(,“,,,,(,,的测试与改 进 代码移植工作完成后还需要进行测试工作,验证移植的“;,,,(,,是否可以正常工作, 这可能是移植工作最复杂的一部分。应该首先在没有添加应用程序的情况下进行测试,也 就是让内核自己测试自己。这样做可以避免问题复杂化,而且如果这部分没有正常工作, 则可以知道是移植本身的问题,而不是应用代码产生的问题。如果可以将操作系统自带的 两个基本任务(空闲和统计任务)和节拍中断运行起来,就表明内核移植成功了,接下来 添加应用任务的工作是非常简单的。 可以使用各种不同的技术测试自己的移植工作,取决于开发者在嵌入式系统方面的经 验和对处理器的理解,本文通过以下五个步骤测试移植代码: (,)确保;编译器、汇编编译器及链接器正常工作。课题具备支持,(,,,,和,,, 系列的源码级集成开发调试环境,,,,,,,,,,,,,,,有了可视化的集成调试根据,这一步可 以很容易完成,只要调试环境设置正确就可以了。 (,)验证,,,,,,,,,,,,,()和,,,,,,,,,曲,,,()函数。 通过修改,,』,,(,,设置 ,,,,,,,州,,,为,,禁止统计任务,由于此时系统中并没有添加任何用户任务,唯 一就绪的就是空闲任务,那么系统将循环调用空闲任务。在空闲任务中添加闪灯指令,如 果,,,一直正常闪烁的话,则表明这两个函数移植成功了。当然也可以借助于调试工具, 单步跟踪查看。 (,)验证,,;,)(,,()函数。如果上一步测试成功,这一步的代码验证就比较容易了, 因为已经验证,,协,,,,,,,,()初始化的堆栈结构是正确的。在个应用任务,但不添加复杂的代码,只是不断的切换到空闲任务。如果任务切换成功,则 这一步测试中,可以添加一 第,,页 信息工程大学硕士学位论文 表示这个任务切换函数是正确的。 (,)验证,,,,,仅,,()和,,,,;,,,,()函数。在测试之前,应保证时钟中断向量指向 了时钟节拍中断服务予程序,然后,在新建的应用任务中初始化时钟节拍并开中断。如果 时钟节拍中断能够正常发生,并且完成空闲任务和新任务之间的切换,则表明这两个函数 的移植是正确的。 (,)至此,已基本验证了内核移植的正确性,可添加稍微复杂的应用任务来迸一步验 证,比如向串口输出数据等。可以同时创建几个任务,并让它们能够正常切换并运行一段 时间,则表明操作系统的移植已经成功了。 操作系统内核移植成功之后,就可以在其上进行应用程序的开发了。但是软件调试 不是一朝一夕的事情,有过软件开发经验的人都知道,软件中隐藏的许多问题也许要到实 际应用中去慢慢发现和改进了,就像微软公司为其操作系统产品不断打补丁一样。在课题 后续的开发和调试中确实发现了不少问题,有的是应用程序造成的,而有的却是操作系统 内核本身的不足引起的。下文将对调试中发现的一些?,,,,(,,内核上的不足和缺陷进行改 进。 (,)临界段保护函数,,,,,,,,?,,,,,和,,,,,,,?,, ,,, ,;,,,??在,,,,,,,中用宏定义给出了三种进入和退出临界段的方法,通过设置 ,,,,,,,,;,山,,,,的值置处理器状态寄存器的中断使能位),,,,,,,,,砌,,,,,调用关中断, 来选择。第一种方法是通过调用开、关,,—,,,,,,砌,,,,,调用开中断;第二种方法是执行,,,,,,,,,础,,,,,时,先将,,, 状态寄存器的值保存在堆栈中再关中断,执行,,,,,,,,,,,,,,时,则从堆栈中恢复 中断指令来实现(设 原来的,,,状态寄存器的值;第三种方法需要编译器提供的扩展函数的支持,进入临界段 时用函数得到状态寄存器的值并保存在,函数的局部变量中,然后关中断,退出临界段时 将状态寄存器的值从局部变量中恢复。 课题最初是采用第,种方法实现的,但是在后续的调试中发现这种方法会造成一个小 问题:如果在进入临界段前,系统的中断本来就是关闭的,那么在退出临界段后,中断却 被打开了,而实际上这时候希望中断还是继续关闭的:如果系统的中断在不该打开的时候 被打开,则可能会造成意想不到的严重后果。第二种方法需要出栈入栈,还需要,编译器 支持用,,,()插入行汇编代码,如果编译器对这些插入的行汇编代码优化的不好的话,这 个方法就未必可行了,因为编译器可能没有那么机敏,不知道堆栈指针的值已经改变了; 特别是,当处理器用堆栈指针相对寻址模式对局部变量进行寻址,或者用堆栈指针加偏移 量传递参数时,如果,,,,,,,,,,,,,,,宏调用改变了堆栈指针,那么所有的栈偏移 量都可能会出现偏差并导致严重的错误。因此,第二种方法还是不用为妙,只能采用第三 种方法,但这种方法需要编译器扩展函数的支持,而实际上,课题采用的,,,,,,,,,,,,,, 集成开发系统并不提供这样的扩展函数,需要自己根据开发系统的,,,(应用二进制接口 标准)开发一个类似的函数。,,,中明确规定了在函数调用过程中通用寄存器的使用,有 第,,页 信息工程大学硕士学位论文 些寄存器有特殊的用途(如堆栈指针),有些用作局部变量,还有的用于参数的传递,其 中,,,,,用作传递函数的前留个参数字,因此,读取状态寄存器的函数可以这么设计:定 义汇编函数,,,,,,,: ,,;,,,,;,,,,将,,,状态寄存器的值放入,, ,,,,返回 然后,在,程序中调用它:;,,』,,,,,,,,,()和,,,,,,,,(;,,,,,), 即可实现对处理 器状态寄存器的读,写,然后用此函数实现第三种进入和退出临界段的方法,实践证明这种 方法是正确的。 (,)优先级反转 文章在,(,节中曾经提到,如果操作系统采用的是基于优先级的抢占式调度算法,则 有可能会出现优先级反转的问题。不辜的是,这个问题在,;,,,(?中出现了。 优先级反转。也叫优先级倒置,指的是高优先级任务由于需要等待被低优先级任务占 用的系统资源而形成的低优先级任务先于高优先级任务运行的反常情况。如果低优先级任 务在运行时又被其它任务抢占,则系统运行情况会更加糟糕,,,,。优先级反转是实时系统中 出现得较多的问题,下面以实例示之: 假设有任务,、,、,,其中任务,优先级最高,任务,次之,任务,最低;但是,任 务就绪的顺序是任务,先就绪,在运行过程中任务,就绪,然后任务,就绪:首先,任务 ,就绪并运行,在运行过程中使用了互斥访问的共享资源,,这时任务,就绪并抢占了任 务,的,,,控制权,开始运行,但是任务,在运行过程中也要用到共享资源,,由于此时 任务,没有释放,的互斥信号量,因此,任务,得不到,的使用权,不得不挂起自己,等 待,的释放,任务,得以继续运行,此时就出现了优先级反转的问题。如果此时任务,又 就绪了,则会抢占任务,的;,,控制权,情况会进一步恶化。优先级最高的任务,的运行 时间得不到保证,从而影响系统的实时性能。 出现优先级反转问题的根本原因在于,系统不能根据运行情况动态地改变任务的优先 级。可以用优先级继承的方法解决,即在任务,申请使用共享资源时将任务,的优先级提 升到与任务,相同,等任务,使用完共享资源,时,再将其恢复到原先的优先级。课题对 ,;,,,(?的资源共享和任务调度部分作了相应的改造来避免优先级反转的问题,经实验验 证,优先级反转问题已得到解决。 最后,将移植并调试好的“;,,,,?内核通过,,,,,,,,,,,,,,,下载到,,,, ,,,和 ,,,,,,,,,的片外,,,,,中,上电运行即可。 ,(,?,,,,,的规范化和跨平台移植 ,(,(,,,,,,咖,移植概述 “,,,,,,的移植工作可能较“,,,,(,,复杂,因为,,,,,,,】【宏内核结构的, 需要移植的 部分较多,且课题组没有像,,,,,捌,,,,,这样的可视化集成开发 第,,页 环境用于?,,,,,,的 信息工程大学硕士学位论文 调试与开发,大部分编译和调试工作需要在,,,,,或者;,,,,,(用于在,,,,,,,环境下 模拟,,,馘的软件)环境下完成。移植工作主要分为以下几个步骤: (,)在宿主机(,;机)上安装,,,,,)(操作系统或者在,,,,,,,操作系统中安装, ,,,,,, 下载?,,,,,,】【源代码压缩包并解压,下载并制作交叉编译工具,建立交叉编译环境; (,)根据不同的硬件平台修改源代码(编写或修改一些特殊硬件设备的驱动程序; (,)配置或裁剪内核,生成在,,,或,,,,,中运行的可执行映像,映像可以是压缩 或非压缩的; (,)将映像烧写到硬件平台的非易失性存储器中,上电运行。 按照移植所需的工作量的不同,,,“,,,的移植大致可以分为,个层次: (,)结构层次的移植,如果待移植处理器的结构不同于任何已经支持的处理器结构, 则需要修改,,舢—,,;,目录下与处理器结构相关的文件。虽然,,,,,,)(内核代码的大部分 是独立于处理器及其体系结构的,但是其最低级的代码也是特定于各个系统的。这主要表 现在它们的中断处理上下文、内存映射的维护、任务上下文和初始化过程都是独特的。这 些例程位于,,,,址,,;,,,目录下。由于,,,,,)(所支持体系结构的种类繁多,所以对一个新型的 体系,其低级例程可以模仿与其相似的体系例程编写。 (,)平台层次的移植,如果待移植处理器是某种心,,,,,已支持体系的分支处 理器, 则需要在相关体系结构目录下建立相应目录并编写相应代码。如,;,,,,,,,就是基于无 ,,,的,,,,内核的。此时的移植需要创建,,,,,觚,目录并在其下编写跟踪程序(实现用户程序到内核函数的接口等功能)、中断控制调度程 ,,,,,(,,,,,,,,,,,,,肌,,;,,,,,序和向量初始化程序等。 ,, (,)板级移植,如果待移植处理器已被,„,,,,,,】„支持,则只需要进行板级移植就可以 了。板级移植需要在,,,,“,,;,怕,,,细,,,,中建立一个相应板的目录,再在其中建立相应的启 动代码;,,,,,,(,或;,,舢(,和链接描述文档,,,(,,或,眦(,,就可以了。板级移植还包 括驱动程序的编写和环境变量设置等内容。 “;,,,,,)【已经支持,,,,体系结构的,,;,,,,,所以只需实现板级移植即可,而 对 ,,;,,,,,,,,,,,,只支持,„,,,,体系结构,需要实现平台层次的移植。由于平台层 次的移植较为复杂,且己包括板级移植的工作,文章以“;,,,,,)【在,,;,,,,上的平台层 次的移植为例。 ,(,(,交叉编译环境的建立 „,;,,,?没有像;,,,,砌,,,,,这样的可视化集成开发 环境,所以必须先建立交叉 编译环境。所谓交叉编译,简单的说就是在一种处理器上编译生成可以在另一种处理器上 运行的可执行文件【,引。由于嵌入式,,,,,,,)【的开发板资源有限,不可能在开发板上运行开 发和调试工具,通常需要交叉编译调试的方式进行,即“宿主机,目标机”的形式,其中 目标机就是开发板,宿主机是装有,协,,(或;,,,,,)的,;机。宿主机和目标机的处理 第”页 信息工程大学硕士学位论文 器通常是不同的,宿主机需要建立适合于目标机的交叉编译环境。程序在宿主机上编译一 连接一定位,得到的可执行文件则在髫标机运行。宿主机和目标机一般采用串口连接,也 可以通过网口或者,,,接口连接。实际上,进行,,,,,(,,移植的时候也是需要交叉编译 环境的,只不过;,,,,砌,,,,,集成开发环境已经包含了交叉编译,所以可以省去这一 步。但是,对于没有集成开发环境支持的“;,,,,,移植来说,这一步是非常关键的。 得益于,,,,,,,的开源性,我们可以从网络上获得几乎所有“,,,,,,,)【移植所需的软件 资源,首先从„,;,,,,,的官方网站上可以获得,(,,,,的交叉编译工具包,;,,;(,,,,,,,,, 其中包括: ,;;:编译器,可以做成交叉编译的形式,即在宿主机上开发编译目标机上可运行的 二进制文件。 ,,,,,,,,:一些辅助工具,包括,,,,岫,(可以反汇编二进制文件)、嬲 (汇编编译器)、 ,,(连接器)等等。 ,,,:调试器,可使用多种交叉调试方式,,,,(,,,(背景调试工具)、,,,,;,, ,(远程 调试工具)等。 将文件,;,,,(,,,,,,,,,(,,,,,,,,(,,拷贝到目录船, ,,,;下,执行命令:,,,;,,,(,,,(,,,,,, ,,,,,,,,(,,,如果在,,,,,,,;,,,,目录下出现,;,,,(,,,,,;;、,;,砖(,,,(丛、,?,,(,,,,,,等文 件,则表明安装成功,,;,,,,,在,,;,,,,上的交叉编译环境已经建立。 ,(,(,,,,,,,,)(内核的裁剪 上文已经提到,虽然心,,,,,是宏内核结构的,但是它是模块化可裁剪的,可以自 由 方便地裁剪掉不必要的内核模块,以减小内核的大小。可以在配置内核时进行静态的裁剪, 也可以在内核运行过程中动态的裁剪,文中用的主要是静态裁剪。 首先,安装“,,,,峨内核。将从网站上下载到的肛,,,,,,)【支持,(,,,汪的源码包 ,,;,,,似,,,,,(,,,,,,,,(饥,,,将其拷贝到,,,,,,,;目录下,执行命令,,,,,,,,;,,,慨(,,蜘 ,,,,,,,,(诅,(,,进行解压,解压完成后,会在当前目录下出现新目录,;,,,,,)((,,,,,这就是 ,,,,,,,)【的源码根目录,里面有进行斗;,,,,,开发的所有源 代码。 然后,就可以进行“,,,,,,内核的配置与裁剪了。可以有三种方式配置内核,分别是 胧,,,;,,,,,,、,,,,,,,,;,,埏和,,,,,;,,堍,各命令使用范围不一样,但是效果是一样 的。其中,,,,,;,,,,,,是命令行方式,适用于控制台和图形终端;,,,,,,娜;,娟,是文 本菜单方式,适用于控制台和图形终端:,,,,,;,,,,,是窗口图形界面方式,仅适用于图 形终端,,,】;文中采用,,,,;,,地方式。其实,这几种都是“,,,,,,本身提供的功能,也 可以直接修改内核源代码,但是笔者不建议那样做,因为?,,,,,,)【的所有代码都是经过世 界级的骇客们精心修改和优化的,具有很好的稳定性,我们不专业的修改也许会造成内核 不稳定,甚至错误。而且,,,,;,蛹,的强大功能已经足够用了,最小可以把内核裁剪到 ,,,,左右(含文件系统)。在,,,,,,,;,,;,,,,)((,,,,目录下执行命令,,,,;,,,,,便可根据提 第,,页 信息工程大学硕士学位论文 示一步一步进行内核的裁剪了。 ,(,(,“,,,,,,内核的移植与调 试 ,,,,,,,内核的源文件按树形结构进行组织,源代码都已经较规范地分类存放在各个 目录下,在源程序树的最上层主要有以下几个目录: 肿;,:这个目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一 种支持的体系结构,每个子目录中又进一步分解为,,,,、,,、,,,,,等子目录,分别包含 系统引导、内存管理、中断处理以及其它内核中依赖于,,,和系统结构的底层代码。与 ,(;,,,处理器相关的代码放在目录,,;,,,;,,,下。由于?,,,,酲中包含支持其它,,, 的程序代码,需要在,,,,,,,,中对,,,进行选择。 ,血:这个目录包含核心的初始化代码(不是系统的引导代码),包含文件,,,,(;‟内 核的入口函数,,,,,,,,,()就在“,,,恤,,,,(;”中。 “,,俗:这个目录放置系统所有的设备驱动程序:每种驱动程序又各占用一个子目录, 如,,,,;,下为块设备驱动程序,,;,,,下为字符设备驱动程序。 ,,:这个目录放置,,;,,,,,】(支持的文件系统,它的每一个子目录代表支持的一个文 件 系统,包括,,,,、,,,,,等。 ,,;,,,,:包括,„,,,,,,】【内核的大部分头文件。其中,,;,,,, ,,锄(,,,;,,是与硬件相关 的头文件,,,;,,,,,,,,,,是内核核心使用的头 文件。 ,,,,,:包含,;,,,,,)【主要的核心代码,最终用于实现内核映像文 件。 ,;,:,,,,,,,)【内核的网络系统,其中,,“,,,,就是 ,;,,的协议栈。 ,,,:,;,,,,,内核需要使用的库。 ,,:,;,,,,,,内核的内存管理,包括所有独立于处理器体系结构的内存管理代码,如 页式存储管理内存的分配和释放等。 ,,;:?,,,,,,内核的进程间通信。 ,;,,,,,:这个目录放置配置内核脚本文件。 此外,在每个目录下,一般都有一个(,,,,,,文件和一个,,,【,,,,,文件,这两个 文 件都是编译时使用的辅助文件, 由以上分析可见,?,,,,,,)【的内核结构清晰,移植相关代码也十分明了,它们是 蹦:,临;,诧目录下的部分代码,,,;,,,;凰,(,,;,,,,目录中的与硬件相关头文件,,,,,,塔 目录下的部分驱动和,;,目录下的硬件相关代码。由于“,,,,,,)【是宏内核结构,包含很多 设备驱动,且论文篇幅有限,不能一一论述其移植过程,下文便以移植一个“,,,,,,)【的最 小系统为例,即包括:,,,,,,,,,,相关、处理器相关、定时器相关和串口相关。 ,,,,,,,,,,相关:这部分包含的代码与内核启动方式和异常向量表的建立位置相关, “,,,,,,在,嬲,,,,,上是以非压缩内核在片外,,,,,上直接启动并运行,异常向量表 放置在片外,,,,,的最低地址端。针对这种情况,需要在目录下,,;,,,;,,,,,,,,,,肌 第,,页 信息工程大学硕士学位论文 ,衄;,,,,,,,,?,,,,添加两个文件:;,,,,,(,的第一段启动代码,它提供一个异常向量表以供,,,上电时读取,并初始化,,,寄存器, 和的,,,(,,。;,,,,,,(,是系统上电后运行 设置程序堆栈,最终跳转到肛,,,,,,内核,其中还有几个关于内存基地址、大小等参数的 宏定义必须改为实际的值。,,,(,,是链接描述文件,用以描述各个输入文件的各段如何映 射到输出文件的各段中,并控制输出文件中各段或符号的内存布局。如果内核是压缩的, 则启动代码是,,;,,,;,,;,,,,忧,,,,,,,;,目录下的,,,,(,文件,由此文件完成内核的解压, 并最终跳转入内核。 处理器相关:主要是指系统初始化文件,,,,,,,,(;‟为内核的入口函数,;,,,,锄,, ()提供 各种初始化函数,如,翰,,血()、,;,,,,越《)、;,,,,,,;,,,,,()等,这些函数底层的大部分代 码可以来源于处理器抽象模块。 定时器相关:主要工作是设置时钟中断处理程序,它的作用是和“;,,,—,,中的时钟节 拍中断程序,,,,;,,,,一样的。相关的主要代码是,,,,,,,,,,,()中的,,,,,,,,,,“)函数,该 函数底层的代码可以复用定时器抽象模块。 串口相关:串口驱动是内核下载与调试所必须的,相关的代码是,,,,,,,,,(;,该函数中的代码可以复用串口抽象模块。 ,,毗,,,下的 此外,还应在,,;,,,,,,,,(,,;,,,,目录下添加,,;,,,,,,;还有各 级的,,,,,,,也应 作相应修改。 移植代码编写完成后用,,,,;,埔,进行内核裁剪,然后用,,,,,印和,,,,进行内 核编译,生成内核映像,,,,,(,,,(其中已包含文件系统),通过,,,,—,,,,,,,,,,下载到片 外,,,,,中运行调试,调试完成后将正确的内核映像烧写入,,,,,中,在,,,,,,,, 上移植完成。然后,以同样的步骤实现?,,,,,,在,邪:。,,的硬件抽象模块层上的移植, 由于,,,,,,,已被,,,,,,,支持,所以只需进行板级移植即可,所需移植的代码会更少。 总之,我们只需要对,,,的硬件抽象层进行替换就可以实现心“,,,的跨平台移植, 但是?,,,,,)【下的操作系统接口层会比,;,,,(,,复杂得多,而且没有集成开发环境的支持, 还需编写编译相关的文件,,,,,,,,,移植工作量较大。 ,(,与传统移植方式的对比 传统的操作系统移植有两种方式: 一是基于已有的,,,。如果待移植的操作系统是商业的,则操作系统厂商会为购买者 提供几款处理器的最小,,,系统,但数量和种类有限,而且,,,采用传统设计,并不是 可重构的;如果是开源操作系统,则只能在网上搜寻类似的实例作为参考,但往往一个具 有参考价值的实例是可遇而不可求的。 二是直接在硬件上进行。这种方法的工作量和难度最大,需要开发人员具备全面的软 硬件知识,既要熟悉处理器的体系结构及其指令系统,还要了解待移植操作系统的内核结 构和代码规范。 第,,页 信息工程大学硕士学位论文 总之,这两种方式都使得操作系统的移植与具体硬件相关,而且还要分析内核代码, 进行的移植工作是封闭的、专用的,造成了操作系统移植工作难度大、效率低等缺点,严 重影响了嵌入式系统的开发进度。 但是,课题给出的基于可重构,,,的操作系统移植,不再需要直接面向具体硬件,而 只需要在硬件抽象模块层上进行移植,并且只要对硬件抽象模块层进行替换就可实现操作 系统的跨平台移植。操作系统内核的移植相关部分已经被规范化整理和修改,并抽象为,,, 的操作系统接口层。因此,操作系统的移植将变得很简单,需要做的工作只是从,,,资源 库中选出合适的硬件抽象模块和操作系统接口,并将它们拼接集成。与传统移植方法相比, 课题给出的移植方法将使操作系统的移植效率有较大程度的提高。下面以址;幻,(,,和 ,,,,,,,)【在,哪,,,,,,、 传统移植方法:需要单独实现?,,,,(,,在,,,,,,,,和,,,,,,,的移植、“,,,,,,删的移植为例,对比分析两种移植,,,,)【 在,,,,,,,,和,嬲,,,,的移植,且移植工作与具体硬件相关。假设已经获得,个相应 的,,,支持,仍需要进行,次移植,因为传统,,,是与硬件和操作系统密切联系的,没 方法所需的工作量: 有起到屏蔽硬件差异的作用。 基于可重构,,,的规范化和跨平台移植:只需实现,;,,,(,,和?;,,,,,在硬件抽象 模块层上的移植即可,而不需要关心具体硬件,对硬件抽象模块进行替换即可实现在 ,,,,,,,,,和,,,,,,,上的跨平台移 植。 因此,在可重构,,,的基础上,只需要进行两次移植即可,移植效率提高了整整,倍。 如果,,,资源库中已经有了相应的操作系统接口层的话,所需的工作将会更少,只需要实 现硬件抽象模块和操作系统接口的拼接集成即可,移植的效率将会更高。 ,(,本章小结 本章在可重构,,,的基础上,首先,简单方便地实现了,硒,,,,和,,,,,,,,上的 ,,,,,(,,,,,,,,,,。然后,分别实现了?,,,,(,,和,,,,,,,,的规范化和跨平台移植,并在移 植过程中充分发挥了,,,的可重构性和可复用性,大大减少了工作量,提高了移植效率。 第,,页 信息工程大学硕七学位论文 结束语 硬件开发平台和操作系统是嵌入式通用开发平台中最重要和最基础的两部分,同时也 是工作最复杂和难度最大的两部分。因此,如何进行合理的软硬件设计、提高其通用性和 可复用性、降低开发难度、实现又快又好地开发,成为课题需要研究和解决的关键问题。 针对这些问题,作者进行了深入研究,取得的主要成果如下: ,(针对传统硬件开发方法效率低下的问题,给出了一种模块化的硬件设计和开发方 法,设计并实现了模块化的硬件开发平台,使各硬件模块具有较强的通用性和可复用性, 并在逻辑上形成了一个资源丰富的硬件模块库,实现了硬件的模块化开发和复用:从此, 嵌入式硬件的设计可以从元件级设计变成模块级“拼接”,极大地提高了开发效率;同时, 在总结大量实践经验的基础上,给出了接口电路设计与改造的通用方法,解决了硬件模块 在复用时可能出现的与新处理器的时序不匹配问题,有力地支持了硬件开发平台模块化实 现。 ,(在深入分析大量,,,代码并总结其开发经验的基础上,一针见血地指出了封闭性 与专用性是传统,,,开发效率低、难度高的根本原因所在:提出了一种可重构,,,的设 计方法,对,,,进行了模块化和层次化设计,将其分为硬件抽象模块层和操作系统接口层, 实现了一个开放的、通用的、可重构,,,;,,,的开发模式由传统的从零开始,变成硬件 抽象模块和操作系统接口的搭建和集成,降低了开发难度,提高了开发效率;并且还建立 了树形目录的,,,资源库,将已完成的,,,资源(硬件抽象模块和操作系统接口)规范 地管理起来,方便,,,资源的选取与搭建。 ,(通过深入研究操作系统内核及其可移植性,给出了一种基于可重构,,,的操作系 统规范化和跨平台移植方法,对内核中的与硬件相关部分(也即移植相关部分)进行了规 范的整理和改写,并将其抽象成为,,,的操作系统接口,在可重构,,,的基础上,实现 了操作系统的规范化和跨平台移植,与传统移植方法相比,移植效率有了较大的提高。 随着嵌入式技术的进一步发展,课题的研究内容也应与时俱进,紧跟时代步伐。因此, 笔者认为以下几个方面将是课题今后工作的方向和重点; ,(由于硬件制造技术的进步和硬件价格的大幅下跌,在后续工作中应考虑采用配置更, 高的微控制器和容量更大、速度更快、功耗更低的存储器(,,,,,,,,,)以满足日益增 长的应用需求。始终把握嵌入式产业的最新发展动态,着手处理器的多核化研究与应用。 处理器也应考虑采用嵌入式,,,处理器和嵌入式片上系统,以提高硬件平台的包容性。 ,(在目前,,,设计的基础上,应考虑支持,,,的图形化开发,进一步降低,,,的开 发难度。 ,(目前操作系统主要是以移植现有的产品为主,今后应考虑自行设计开发可定制操作 系统,虽然难度很大,但这是一个很好的想法和发展方向。此外,在后续工作中还应关注 第印页 信息工程大学硕士学位论文 嵌入式,,,,,)【的实时化改造和微内核重构等问题。 课题所属项目——嵌入式通用开发平台,已于,,,,年,月通过了国家信息产业部的 成果验收,课题所做的工作得到了专家们的充分肯定。 由于笔者学识有限,成文仓促,所做工作和论文撰写中可能存在不足之处,恳请批评 指正。 第,,页 信息工程大学硕士学位论文 参考文献 【,】陈章龙(我国嵌入式系统开发应用中的几个问题【,】(深圳:《电子产品世界》杂志社, ,,,,:,,(,,( 【,】李允(嵌入式系统的发展前景与发展趋势【,】(深圳:《电子产品世界》杂志社,,,,,: ,(,,( 【,】中国计算机学会微机专业委员会秘书处(中国计算机科学技术年度发展报告【,,,,,】( ,,,,,,,,,,,,卸:,,?、删(,,,?,,,,,,(;,, 悄,,,,,,,,,,,,,,,,,,,,,,,(,,,( 嘲,,,,,,,,,,,,,,,,,,(,,,,,,,,,,;,,;,,,,,,,,,,,,,,,,,,,,,,【,】(,,,,,;,:;,, ,,,,【,(,,,,:,?,( 【,】,,,,,(,,衄,,,,,,撕,,(,,,,,,,,,(,,,,,,,,,,,;,,,,;,,,糟,,,,,;,,,,,,,,,:, ,,锄,,诅,,,;,,,,,;,,,】(,,喇;,:,,,,,,,,,,,,, ,,,,,,,:,,一,,( 【,】周立功(,,,嵌入式系统基础教程【,】(北京:北京航空航天大学出版社,,,,,:,(,( 【,】马忠梅,李善平,康慨,叶楠(删, 大学出版社,,,,,:,,,( ,,,,,嵌入式系统教程,,】(北京:【,】,猢,,,,,,?,,(,,,,,,,, ,,,,,;粥锄,,,,,,,,,,,,,,【,】(,, ,,,,,,,,,;,,,,,;,,,,:,,北京航空航天 ,,,;,:,,、?,,,,,,,,,:,,,,,( 【,】任哲,潘树林,房红征(嵌入式操作系统基础,;,,,,,,和,,,,,【,】(北京:北京航空航 天大学出版社。,,,,:,,(,,( ,,,,,,,,,,,,,,,,,,,, 【,,】黄磊(嵌入式系统的平台化开发【,】(国外电子测量技术,,,,,,,,(,):,(,( 【,,】,(黜曙,,,,,,‟,,,,,,,,,,,,锄,,,,,,锄,孤(,,,,,,,,,,,,,,,,,,,,,,,髓龇, ,;,,,,,,,,【,】(,,;,,;,:,,,,,, ,,,,,,,:,,?,,( 【,,】张国斌(风河开发商大会关注软件优化与嵌入式平台【,,,,,】(,,,,,,,?,,, ,,,,:,,,,,,,(,,,凼眠;,,以,,,,,,,,,【,,】迎九(嵌入式操作系统的新动向,,】(电子产品世界,,,,,,,,(,):,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,(,,,,,,,,,,,( ,,,】王志刚(嵌入式系统硬件抽象层研究及其在开发过程中的应用【,】(解放军信息工程大 ,,,,( 学硕士学位论文硕士学位论文,,,,,( 【,,】胡翌博(基于,,,的嵌入式系统平台及其移植性研究,,】(浙江大学硕士学位论文, ,,,,( 【,,】陈志峰(嵌入式系统快速集成研发平台的研究与实现,,】(广东工业大学硕士学位论文, ,,,,( 【,,】,,,,,,(,,,,,,,,,,,,,,,(,,,,,,,,(,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,:,,,,,,,,咄, ,,胁,,,,,,;,,,,,】(,,酣;,:,,,, ,,,,,,,,猢,,,,,:,,—,,( 【,,】,,,,,,(,,唱,,(,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,;,,,,,,,,,;,,,,,,,,,,,锄, ,,;,,,,?,,,【,】(,,,,,;,:,,,,,,,【,, ,,,,:,,,,,( 【,,】刘德亮,陈诗军,胡昌赤,方少红(模块化思想在,,,开发中的应用【,】(微机发展,,,,,, ,,(,):,,,,,, ,( 第,,页 信息,二程大学硕士学位论文 【,,”魁;,,,,,,,,,,,,(,,,,,,,,,,,,,,,,,日,,,,,,,】(,,,,,;,:,,,,,,,,:,,,一,,,( 弘,】,,,,,,,,,(,,,,,,,,(,,,,,,,,,,;,,;,,,,,,,,,,,,,,:,;,,,,,,,,,,概,,,【,】( ,,,,,;,:,,,,,,,,—,,,,,,谢 ,,,,,,,:,,—,,( 【,,】,,,,,,,,(,锄,,噜,,,;,丘;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,;,,【,,(,,,,,;,:,,,,, ,,,,,,,,:,,(,,( 【,,】,,,,,,,,,,啪,,,删,,,,,,,;,,,,,,,,,(确,,,,,,,,籼,(,,,,,,,,,,,,,,【,,,,,】( ,,,,,,,?,,,,,,,:肌州,(,匈(,,,,;,,,,,, ,,,,,,,,,,,,,,砌,,,,,,,,(,,,,,,(,,,【,,】,,,,,,;,,,,,,,,,(,,,,印,,,,,,,,,,,,,,,,,,;,,,】(,,,,,;,:,‟,启,,,,,,,,,,,,,,:,,,,,( ,,( 【,,】,,,,,,,,,,,;,,,,;,,,(,,,,,,,,,;,,,,,;,,,,,,【,,,,,】(,,,,一,,,,,,,,,,:,,唧,,,( 舭,,;,,,,;,删皤,,,,,,;,,;,,仃,,,】,,,,,,,,;,,;,,,,;,,,(,,;,,,,,,,,,,,诅,,,,,,,,,,,】(,,,,,,,刚,;,,,,,,籼,,,,,,,,,,,一,,?,,,,,,:帕,?(,,)(,( ;,,,,,‰,,,;(,,,、?,,,,,协,,,,,,战 ,,,,,,,,,,,,,(,,,,,,(,,,( 【,,】,;,,,,,,,,,,,;,,,,;,,,,,,,(,,,,,,,,,,,,;,,,;,,,,,,,,,,,】(,,,,(,,,,,,,,,,:,,,,,,( ,,,,,;,(;哪(似,,,,,,,,,, ,,,她塔,,,,,,,,,,,,,,,?,【,,】,,,,,,,,,,,,,,,,,,,,,,,,,; ,,,;,,,,,,,】( ,(,,,( 【,,】,,,,,,,咖,;,,,,;,眈,,,,,,,,,,,,,,,,【,,,,,】(,,,,,,,?】,,,,,:帕,,,,,,,,(;,, 腕,,,,,,,,,,,,,,,,,,,, ,,,,奶,,,,,,—,,(,,, 【,,】濮小川,赵秋霞,蒋烈辉,马鸣锦,杜威(嵌入式系统外围接口的时序分析与电路设计 闭(计算机工程,,,,,,,,(,):,, ,,,,,( 【,,】苏建平,李鹏飞,刘谦译(嵌入式微处理器系统设计实例【,】(北京:电子工业出版社 ,,,,:,,(,,。 【,,】詹荣开(嵌入式,,,,,,,,,,技术内幕,,,,, ,,;,,,,,,,,,,,,,,(,,(,,,,,】(,,,,,,,(,,,,,,,:优,,,,)【(;,,,,,(,,,,, ,,,】,,,,,,,,,,玳,,,,,,,,,;,,,,,,,(,,,,,,,,,,,,栅,,(,,,, ,,,,,,,,,,)【,,,,,,,,,】(,,,,,;,:,。,,,,,, ,,,丑,,,,:,,,(,,,( 【,,】,,,,;,,,,,,,;,亿,,,,,,,(,,;(,,,,,,,,,,,,,,,,,,,,,,,,,】(,,,,一,,,,,, ,,,,:,,,,,(,,,(;伽(,,,,,,, ,,,】邵贝贝等译(嵌入式实时操作系统,,,,,,,,(第,版),,】(北京:北京航空航天,,,,,,,,,,,,,,,,,,,,,,,,(, 大学出 版社。,,,,:,,,(,,,, ,( 【,,】,,,,,,,,,,(,,,,,,缸,,,,,,,,,,,,,(,,,,,,,,,,),,】(,,,,,;,:,,,,,,,;,,,,,,,: ,,,(,,,( 【,,,,,,,,联盟(,,,,,,, ,,,,,,叩,,,讹,,,,,,,,, 系统分析【,,,,,】(,,,,,,,,,,,,,,,,,,廿,, 【,,】,,,开发板网(,,,与交叉编译【,,,,,】(,,,,—,,,,,,,,,,:伽,怖,(,,,,,,,,,,,(;,,,,,,, ,,册(,,,,(,, ,,( ,,,,,邱:,,,,,()(】【,,【,,】,,,,,,,,,,,,)【,,;,,?,,,,,,,,,,,,,;,【,,,,,】(,,,,一,,,,,,,却:?,,,(,;,,,,,(,,咖,, ,,,,,,,,,,,, ,,( ,,,,(;,,,,,,,,蝴,;,, 第,,页
/
本文档为【嵌入式系统硬件开发平台设计及OS移植】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索