嵌入式.docx
- 文档编号:10014867
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:14
- 大小:23.75KB
嵌入式.docx
《嵌入式.docx》由会员分享,可在线阅读,更多相关《嵌入式.docx(14页珍藏版)》请在冰豆网上搜索。
嵌入式
第一章绪论
第一章绪论
1.1研究课题的背景与意义
本课题是一个自选课题。
随着计算机技术的迅猛发展以及后PC时代的到来,嵌入式系统已成为继计算机网络技术之后,IT领域中又一个新的技术热点和发展方向。
在后Pc时代里,纷繁多样的嵌入式应用对嵌入式设备的性能提出了更高的要求。
8位/16位单片机所能提供的系统性能已经显示出诸如处理速度慢、内存容量小等不足,无法很好地实现多任务,更难以支持TCP/IP。
目前基于ARM技术的微处理器应用占据了32位RISC微处理器75%以上的市场份额,产品遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,应用前景十分广阔。
在嵌入式软件研究方面,国内中小型嵌入式系统项目开发大都采用传统的单线程的
开发方式,整个开发工作的重点大都放在调试硬件上,缺乏一个稳定的工作硬件基础。
项目的开发几乎全部使用汇编语言,严重影响了程序的可读性和可移植性。
程序在任何
一处产生死循环或破坏都会引起死机,在遇到强干扰时也只能依靠硬件的看门狗复位重
新启动系统。
而更换不同的处理器就意味着一切从头开始。
即使使用相同处理器的不同
项目组之间的程序重用也很困难。
这样的开发方式使得开发、调试和维护过程显得冗长
和复杂,系统化过程比较低,并且对嵌入式应用系统应着重解决的实际问题往往无暇顾
及,这非常不利于我国嵌入式应用水平的提高。
作为嵌入式系统灵魂的嵌入式实时操作系统的出现,大大提高了嵌入式系统开发的
效率,增强了嵌入式应用软件的可移植性,使嵌入式系统的开发方法更具科学性。
嵌入
式实时操作系统是嵌入式应用软件的基础和开发平台,其中涉及到软件和硬件两方面的
问题。
嵌入式实时操作系统的研究的核心在于其内核结构和基本功能的研究以及嵌入式
实时操作系统在不同芯片上的移植、任务的开发以及功能的扩展,同时这也是嵌入式实
时操作系统难点问题。
同时,为进一步提高嵌入式软件开发的效率,软件设计的组件化是提高软件模块复
用性的很好方法。
在开发嵌入式系统时,对软件的开发进行总体规划,设计成模块化、
组件化结构,可以节省大量的资源,提高系统的开发速度。
此外,嵌入式系统的Internet网络化的研究与应用也是近年来嵌入式应用领域的一
个研究热点。
而嵌入式系统网络化的关键就在于如何有效地实现嵌入式TcP/IP协议栈。
嵌入式系统已深入到社会生活的每一个角落,基于32位RISC处理器与实时操作系
统的嵌入式技术作为当前的发展主流,对其进行学习研究和科研实践无疑具有明显的现
实意义。
’
第二章嵌入式实时内核pC/OS.Ⅱ
第二章嵌入式实时内核pC/OS—II
2.1
pC/OS-II概述。
|IC/OS.Ⅱ专门为嵌入式设备设计,是一种基于优先级的可抢占式硬实时内核【bl。
自1992年发布以来,在世界各地都得到了广泛的应用。
目前已经被移植到40多种不同
结构的CPU上,运行在从8位到64位的各种系统之上。
尤其值得一提的是,该系统自
2.51版本之后,就通过了美国FAA的认证,可以运行在诸如航天器等对安全要求极为
苛刻的系统之上。
pC/OS.II对于学校研究完全免费,只有在应用于盈利项目时才需要
支付少量的版权费。
其特点主要可以概括为以下几个方面【3】:
·公开源代码源代码清晰易读且结构协调,注解详尽,组织有序。
·可移植性绝大部分ⅡC/Os一Ⅱ的源代码使用移植性很强的ANSIC写的。
和微
处理器硬件相关部分使用汇编,并且压缩到了最低限度。
只要该处理器有堆栈指针,有
“
CPU内部寄存器入栈、出栈指令,uC,oS.II就可以进行移植。
。
·可固化通过固化手段(C编译、连接、下载和固化),llC/OS.II就可以嵌入到
嵌入式产品中去。
·可裁剪通过条件编译可实现只使用uC/oS.II中应用程序需要的系统服务。
·占先式ⅡC/OS.n是占先式实时内核,总是运行就绪条件下优先级最高的任务。
·多任务可以管理64个任务,系统保留了8个任务,因此应用程序最多可以有
56个任务。
赋予每个任务的优先级必须是不相同的。
·可确定性全部IlC,oS.II的函数调用和服务的执行时间具有可确定性,
13970805272IZC/OS.II系统服务的执行时间不依赖于应用程序任务的多少。
·任务栈ⅡC/OS—II允许每个任务有自己独立的栈空间。
2.2pC/OS-Ⅱ的内核
pC/OS—II的内核大体包含任务管理、时间管理、内存管理和任务间的通信与同步等
模块。
~2.2.1pC/OS-Ⅱ的任务
在|lC/OS.Ⅱ中,任务通常是一个无限的循环.任务不会返回,故返回参数必须定
义成void。
每个任务都有一个任务控制块TCB(TaskControlBlock),这是一个比较复
杂的数据结构如图2-1所示,它在任务创建的时候被初始化,包含了任务运行和管理的
一些信息。
当任务的CPU使用权被剥夺时,12C/OS.II用TCB来保存该任务的状态。
当重新获得CPU使用权时,TCB能确保任务从被中断的那一点丝毫不差地执行下去.
7
第三章ARM7体系结构
第三章ARM7体系结构
3.1ARM概述
ARM(AdvancedRISCMachine)既可以认为是一个公司的名字,也可以认为是对
一类微处理器的通称,还可以认为是一种技术的名字f2¨。
,
ARM公司是英国专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应
商,本身不直接生产芯片。
从90年代初,ARM率先推出32位R1SC微处理器芯片系统
(SOC)知识产权公开授权概念,从此改变了半导体行业的经营理念。
世界各大半导体生
产商购买其设计的ARM微处理器核,根据各自不同的应用领域,加上适当的外围电路,
从而形成自己的ARM芯片进入市场。
采用ARM技术知识产权(D)核的微处理器,即我们所说的ARM微处理器,已
遍及工业控制、消费类电子产品、通信、网络等各类产品市场,基于ARM技术的微处
理器应用占据了32位RISC微处理器75%以上的市场份额。
一般认为ⅪsC体系结构应具有如下特点:
1.采用固定长度的指令格式,指令归整、简单、基本寻址方式有2—3种;
2.使用单周期指令,便于流水线执行;
3.大量使用寄存器,数据处理指令只对寄存器操作。
只有Load/Store指令可以访
问存储器,以提高指令的执行效率。
ARM体系结构在继承RISC结构的特性的同时,舍弃了RISC的寄存器窗口、延迟
转移和所有单指令周期。
除此之外,ARM体系结构还采用了如下技术尽量缩小芯片的
面积和降低功耗:
所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令
的指令效率;可用Load/Store指令批量传输数据,以提高数据的传输效率;可在一条数
据处理指令中同时完成逻辑处理和移位处理;在循环处理中使用地址的自动增减来提高
运行效率。
所有的ARM处理器都共享通用的基础体系结构,因此开发者在不同的ARM处理
器上做操作系统移植时,可以节省相当多的工作量,这无疑将大大降低软件开发成本。
3.2ARM的应用领域
ARM处理器当前有ARM7、ARM9、ARM9E、ARMl0E、SecurCore、StrongARM
等多个系列。
到目前为止,ARM微处理器及技术的应用几乎已经深入到以下各个领域:
1.需要通用操作系统的领域,包括无线通信、消费类产品和图像产品领域,
ARM7、ARM9、ARMl0、ARMII、StrongARM都可以作为一个开放式平台应用于上述
领域。
第四章uC/0S—II在ARM微处理器上的移植
第四章gC/OS.Ⅱ在ARM微处理器上的移植
4.1移植概述
所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。
IIC/OS.
Ⅱ不是针对特定的硬件设计的。
为了方便移植,大部分的弘C/OS-Ⅱ代码是用C语言写
的,但仍需要汇编语言写一些与处理器相关的代码,这是因为uC/OS.II在读写处理器
寄存器时只能通过汇编语言来实现。
|lC/OS-Ⅱ把内核代码分成了如图4-1所示的三部分:
与处理器无关的代码、与处
理器有关的代码以及与应用相关的代码。
因此为了使uC/OS.II在基于ARM7TDMI的
嵌入式系统S3C44BOX上能够正常地运行,需要实现相应的启动程序以及需要用c语言
和汇编语言完成一些与处理器相关部分的设计与实现。
图4—1说明了“C/OS—II的结构以及它与硬件的关系。
与我们移植相关的文件包括
os_cPu.H、oscpU—=A.ASM、OS—CPU—C.C。
与应用相关的代码,我们可以进行修改
以实现不同配置。
而与处理器无关的代码,一般情况下不需要作修改【31。
移植工作是在
ARMSDT2.5编译环境下进行的,
第五章嵌入式系统的构件
第五章嵌入式系统的构件
5.1嵌入式系统构件概述
嵌入式构件从本质上来说,大部分的工作就是对输~输出部分进行处理[9,15·331.构
件主要有键盘、LED显示器、前向通道的处理如AD处理、后向通道的处理如DA处
理,串行E1等等。
嵌入式系统构件通常被看作是嵌入式操作系统的一部分。
对于输入/
输出的任务就是向设备发布命令或捕获中断并进行相应处理,还提供一个设备与系统其
余部分之间的简单易用的界面,该界面应对所有同类的设备尽可能一致(也就是设备无
关性)。
输入,输出软件的代码占据了整个操作系统的相当部分,对于嵌入式操作系统来
说,这部分的重要性更是不言而喻。
输入/输出软件设计的总体目标是将软件组织成一种层次结构,低层软件用来屏蔽硬
件的具体细节,高层软件则主要为用户提供一个简洁、规范的界面。
如果将输A./输出软
件细分一下,可以组织成以下四个层次:
1.中断处理程序(低层)。
中断是尽量加以屏蔽的一个概念,屏蔽中断的最好方
法是将每一个进行FO操作的任务挂起,直至I/O操作结束并发生中断。
任务可以使用
RTOS提供的信号量等服务来阻塞自己。
中断发生时,中断处理程序执行相应的操作,
如发送信号量等方法来取消相应任务的挂起状态。
2.设备驱动程序。
设备驱动程序包括了所有与设备相关的代码,每个设备驱动程
序只处理一种设备或者一类紧密相关的设备。
它是连接控制器和上层软件的纽带,笼统
的说,它的功能是从与设备无关的软件中接受抽象的请求,并转换为具体的与硬件相关
的形式,执行之。
驱动程序任务和控制器之间可能采用阻塞方式也可能采用无延迟方式。
3.与设备无关的I/O软件。
这个层次的提出是为了给用户更加简单的接口,但
是也可以不需要这个层次直接让用户与设备驱动程序交互。
一般来说,与设备无关的FO
软件属于文件系统。
4.用户层软件(高层)。
尽管大部分与设备无关的I/O软件属于操作系统,但是
有小部分是可以用库例程的方式提供给用户。
对于嵌入式系统来说,实际的执行效率会被放在很重要的位置,所以可以根据情况
精简层数来实现I/O软件。
本章将结合系统的硬件外部设备和ttC/OS.II,对最常用的嵌
入式构件如键盘构件、LED构件、LCD构件、异步串行通信构件等进行设计。
5.2键盘构件分析
大量的嵌入式产品都依赖键盘输入数据或者选择控制设备的模式。
实现键盘输入的
方法主要有两种;采用软件扫描;使用硬件专用键盘接口芯片(如8279等)f34j。
第六章TCPflP协议栈在ltC/OS.Ⅱ上的实现
随着嵌入式系统与网络的日益结合,在嵌入式实时操作系统中引入TCP/IP协议栈,
以支持嵌入式设备接入网络,成为嵌入式领域重要的研究方向。
作为近年来发展迅速的
一个开源嵌入式操作系统,IIClOS一Ⅱ只是一个实时的任务调度及通信内核,缺少对外
围设备和接口的支持,如没有用户接口、文件系统、网络协议、图形界面。
TCP/IP作为
Internet的基本协议,以其实用性、高效性已经成为事实上的工业标准。
嵌入式设备要
与Internet网络直接交换信息,就必须支持TCP/IP协议。
目前嵌入式设备上TCP/IP
方案有很多种,笔者是以开放源码的嵌入式TCP/IP协议栈LwlP为基础,实现uC/OS.
II在32位基于ARM7TDMI芯片S3C44BOX上的移植,从而为11C/OS.II增加网络支持。
6.1嵌入式TCP/IP概述
6.1.1TCP/IP的参考模型。
目前TCP/IP已经成为标准的通信协议,广泛应用于网络通信中。
与OSI参考模型
相比,TCP/IP参考模型更强调功能的分布而不是严格的功能层次的划分。
TCP/IP由四
层组成,这与OSI由七层组成不相同。
这四层包括:
应用层(applicationlayer),传输层
(transportlayeO,互联网络层(intemetlayer),主机.网络层(hosttonetworklayer)[371。
如图6-1所示,TCP/IP协议采用分层结构,每一层负责不同的通信功能,并且每一
层都是多个协议的组合。
第七章测试
第七章测试
7.1嵌入式开发系统的开发调试
选择合适的开发工具来进行嵌入式系统开发,可以加快开发进度,节省开发成本。
使用集成开发环境或开源开发工具链GNU开发基于ARM的应用软件,包括编辑、编译、
汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可
完成,目前常见的调试方法有指令集模拟器、驻留监控软件、FFAG仿真器以及在线仿
真器等几种148】。
7.2IHC/OS一Ⅱ的移植测试
可以通过一个多通道的数据采集程序来验证移植是否成功。
为此,主程序中建立了
6个任务,包括一个系统任务,一个LCD显示任务、四个AD任务,每个AD任务分别监
视一路A/D转换,要求在LCD上用一个波形图直观显示每个通道的采样值。
关键部
分的代码及说明如下所示:
intMain(intargc.char+。
argv).
{
ARMTargetlnit0;//开发板初始化
OSInitO;//操作系统初始化
LCDInit0;//初始化LCD模块
OSTaskCreate(Main._Task,(void+)O,(ossTK*)&Main_Stack[STACKSIZE‘8—1】,Main_
Taskprio);//创建系统任务·
OSTaskCreate(Display_.Task,(void+)0,(OS_STK4)&Display_Task._Stack[STACKSIZE-
1】,DisplayTaskPrio)∥创建LCD显示任务
OSTaskCreate(AD0Task,(void’)O,(O邸1K’)&AD0_Task_Stack[STACKSIZE—l】,
ADOTaskPrio);//g*l建第一路AD转换任务
OSTaskCreate(ADl_Task,(void+)0,(OS_STK+)&ADl_Task_Stack[STACKSIZE一1】,
ADlTaskPrio):
//宦4建第二路AD转换任务.
OSTaskCreate(AD2_Task,(void+)O,(OS_STK+)&AD2_Task_Stack[STACKSIZE—l】,
AD2Task建第三路AD
J仓//;)oirP.务任换转
OSTaskCreate(AD3_Task,(void+)O,(OS_STK‘)&AD3_Task._Stack[STACKSIZE-1】,
AD3TaskPrio);//仓'J建第四路AD转换任务
OSStartO;//启动pc/os—II
’
)
其中系统任务的优先级最高为12,其次是LCD显示任务优先级为20,四路AD任务
的优先级分别是2l、22、23、24。
经过验证,LCD上正确显示了每路AD转换的结果,
第八章总结
第八章总结
随着嵌入式系统软硬件技术的飞速发展,嵌入式系统在各行业的应用必将更为广阔
和多元化。
本文对基于ARM和IXC/OS.II的嵌入式系统进行了设计与研究。
pC/OS-II是一个简单、高效的嵌入式实时操作系统内核,其性能得到了众多业内
人士的肯定。
uC/OS—II并非是一个真正意义上的操作系统,它只是一个提供了任务管
理以及任务间的通信等基本功能的嵌入式操作系统内核,没有文件系统、完备的外设接
口,以及网络功能。
因此pC/OS—II内核离具体应用还有一定的距离。
同时1.tC/OS.II不
针对特定的硬件,要实现在特定硬件上运行还必须编写相应的移植程序,本文将|lC/OS.
H成功移植到了基于ARMTTDMI的S3C44BOX上,并进行了测试。
此外,本文基于laC/OS.II嵌入式构件的设计最大程度上同硬件进行隔离,使得在
应用到不同的嵌入式硬件平台时,这些构件稍加修改就能使用。
在设计时,追求最大的
通用性。
但事实上,设计一套通用的嵌入式构件是不可能的,除了不同的嵌入式硬件平
台上的外部设备不同之外,同样的设备在板子上的不同设计也给嵌入式构件的设计带来
麻烦,例如同样是8个LED显示器,本文设计中采用了ICM7218,ICM7218能够自
动刷新显示8个LED,设计构件时就无需再考虑刷新显示的问题;但如果8个LED是
直接与处理器的端口相连,那么在构件设计中就要考虑刷新显示的问题。
本文还对以太网接口芯片RTL8019AS的性能、内部结构、工作原理以及与
ARM7TDMI的接口进行了介绍,然后结合uC/OS.II开发了RTL8019AS的驱动程序。
将开源嵌入式TCP/IP协议栈LwlP无缝连接到I.tC/OS.II,为pC/OS.1I加入了网络的支
持。
通过完成上述工作,己经使得11C/OS—II的功能得到了一定的扩充和完善,同时应
用到了具体的硬件平台上,形成了具有一定应用性的嵌入式系统,同时也是对采用开放
代码构建嵌入式软件平台的一次有益尝试。
但是,由于时间及其他因素的限制,要建立
一个真正完备的嵌入式操作系统,除本文研究的内容外,仍有很多的研究和开发工作需
要进行,这包括:
·较为强大的内存管理功能
·文件系统实用化
·图形用户界面(GUD
在嵌入式系统网络化方面,如何保障网络上传输数据的可靠性和安全性也是一个很
大的研究课题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式