《嵌入式系统学习指南.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统学习指南.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统学习指南 近些年来嵌入式系统的发展在国内可谓如火如 荼,很多公司都急需嵌人式系统方面的开发人员。然 而,在高枝中,嵌式系统的教学却较为滞后,很多高 年级的本科生和剐人学的研究生部苦于不知从何学起。在本文中,笔者将根据自己的嵌入式系统开发和数学 经验,简要舟绍髓人式系绕的学习方法,力求能帮助初 学者找到一条入门之路 什么是嵌入式系统?学习嵌入式系统,首先应该明确什么是嵌人式系 统,否则费力去学,却不知所学为何物岂不惘然?蠹入式系统的定义很多,这也是围扰嵌入式系统学习 的一个医素。笔者根据自己开发稚教学过程中的理解,以及对各种摄人式系统的血用进行总结,提出了嵌人 式系统的简单定殳:嵌八式
2、系统是嵌人式计算机系统 的简称 这个定义突出嵌凡式 算机系统和普通计算 机系统的共性 下表列出了嵌八式系统的一些典型的 麻用:智能机嚣人 娱 乐和 消费 电于 同络通信产 品 军 用设备 汽 车 智能仪器 安全 防护 环境保 护 银行和商业消费(S D R 4 火星登雕车)(G a me b o y A d v a n c e S o n y P S P)(S ma r t p h o f 坩】(军用 P DA】(车载导航自动驾驶 娱乐系统 (虚拟仪器)c 防火 防盗)(探空气球)(A T M】以火星登陆车为例采分析一下嵌人式系绕的定义 火星登陆车虽然听起来感觉在技术上有些高不可测,3 8 c
3、 s d n开 重 2 N4 J 2 撰文袁通 但是本质就是嵌入式计算机系统的应用,其核心就是一 个计算机系统,而这个计算机系统的组成同传统的计算 机系统在本质上没有什厶差别。两者的显著不同之处就 在于,用于火星登陆车的 算机系统被安装到了火星登 陆车上。当然,一个计算机系统能够被安装在火星登陆车 上,是需要进行很多特殊设计的 但是从本质上讲,嵌入 式系统的核心概念还在计算机系统 嵌入式系统学习的 重点也在计算机系统上。一方面,学习者需要牢固掌握计 算机系统本身的概念,更重要的是学习嵌入系统的开发 过程同传统计算机系统开发过程的差别。这里需要指出 的是,很多学习者本来就没有从事过完整计算机系统
4、的 开发,高校的教学是以程序设计为中心的,计算机系绕的 构成,操作系统的原理,编程语言等课程都是为了能够让 学生更好的使月计算机系统进行程序设计,在现有的计 算平台上来设计实现各种应用,学生一般没有机会学习 一个完整的计算机系统是如何构建,并亲身参与到构建 的每一个过程 而对于嵌人式系统而言,从事平台开发的 人就是要亲自去开发出一个完整的计算机系统,这个过 程包括 需求分析 硬件设计 驱动程序 B o o fl o a d e r B S P(板级支持包)操作系统的移植 应用程序的开发 性能检查 嵌人式系统教学的目的就是教会学生如何根据需 求去建立满足某种特殊行业需求的嵌人式计算机系 统。让学
5、生学会如何构件硬件平台,进行硬件设计,选 择蘸够满足应硐要求的最佳的嵌入式操作系统,井完 成 B o o t l o a d c r,B S P 和驱动程亭的编写,移埴,调试 等过程:为了满足行业需求,最终要在所建立的系统 上编写调试相应的应用程 亭,并进行性能的测试和 检查。维普资讯 http:/ 你是谁,你需要学习哪些东西?如果你的工作只是需要在P C 机上编写一个图片浏览 程序,那么你就没有必要去了解当系统收到一个A R P 请 求包后应该如何 回应。同样的道理,嵌入式系统的学习 也是有很多方面的。就嵌入式系统的设计和实现而言,基本上需要四种不同的工作:系统设计工作,硬件设计 工作,驱动
6、程序和操作系统移植工作和应用程序设计开 发工作。系统设计工作 在系统的设计阶段,系统分析师将根据需求确定系 统的硬件的基本构成,根据系统的需求选择使用那种处 理器,使用哪种操作系统,使用那些软件开发工具。系 统分析师往往是较为完整的参与过嵌入式系统设计的全 过程,对于系统应用的行业较为了解,对于嵌入式系统 本身的开发流程十分清楚的人。硬件设计工作 系统硬件设计人员需要根据系统分析师的设计结果,进行硬件原理图的设计。通常需要硬件设计人员熟悉嵌 入式系统的硬件构成。硬件设计人员需要了解常用的嵌 入式系统处理器,存储器(F l a s h,S D R A M),以太网MA C 芯片,音频 视频编解码
7、芯片,电源管理芯片,总线接 口 电路(US B,P CI),液晶显示模块,可编程逻辑器件(F P G A C P L D),无线网络通信模块(B l u e t o o t h,WL A N,G P R S)等硬件 电路构成 元素的基本工作原理,连接使用 方法,使用注意事项,基本调试方法等 内容。在 网络 上能找到很多公司的评 估板 的原理 图,对于这些原理 图要仔细研究,摸清处理 器同存储器,网卡,液晶模 块等器件的连接方法和原 因。通过对这些 电路 的研 究,能够较快地了解整个嵌入式 系统的构成,这些 电路 同 实际产品中的 电路虽有一定差别的,特别是对于手持 设备,但这些差别不影响初学者
8、学 习嵌入式 系统的硬 件设计基本构成。以上这些知识,往往需要较长时间的学习和积累,需要亲自参与实践的机会。对于刚刚接触嵌入式 系统硬 件开发的学生来讲,一般不可能全部了解这些知识,但 也不会是通通一无所知。笔者结合自己开发和教学的经 验认为:首先应该选定一款主流且较为简单的嵌入式系 统处理器,比如基于 A R M7 T D MI 内核的 A T 9 1 M4 0 8 0 0,$3 C 4 4 B 0 等嵌入式系统处理器,学习3 2 位 R I S C处理器 投稿信箱:t o u g a o c s d n n e t 的编程模型,指令集。高校教学 中,单片计算机课程一 般以8 0 5 1 系
9、列单片为核心讲解,由于现代3 2 位处理器的 结构和开发方式 同8 位单片机有着较大的差别,学 习者 还是需要花一点力气来研究以下3 2 位处理器的。以A R M 处理器为例,学 习者就需要理解处理器的多种工作模式,备份寄存器,R I S C 指令集的特点,MMU和虚拟地址,中 断处理过程等内容。在学习指令集的过程中,最好能够 每学习几条指令,就使用这几条指令在模拟器上实验以 下,观察处理器执行的结果。这个过程一方面是学 习者 对于指令本身的学习能够取得一个比较好的效果,另外 也是对开发工具本身的一种学习。接着,就可以开始学习片上资源的使用和配置方法。这 时就需要一个方便使用的开 发板,学 习
10、者能够通过 J T A G仿真器将开发板同调试P C机相连,进行程序的下 载,调试。特别是要仔细研究系统的初始化过程和中断 处理的过程。在开发过程中如果遇到问题,应 自己分析 问题产生的原 因,通过分析缩小问题可能产生的范 围,最终找到问题的所在。最重要的就是要保持一种解决问 题的信心,面对困难如何处理,往往能够决定最终系统 是否能够调试成功。然后,学习者可以开始仔细学习处理器同存储器的 连接,存储空间的配置,各种外扩器件,如网卡,A C 9 7 声卡的工作原理和使用方法。嵌入式 系统硬件设计中往 往需要使用可编程器件,学 习者还需要一定的时间来学 习使 用常用的可编程器件(C P L D F
11、 P GA),常用的有 Xi l i n x 和 Al t e r a 公司的产品。进行系统硬件原理图设计,就需要使用原理图设计 的 E D A工具,常用的 E DA原理 图设计工具主要包括 C a d e n c e 公司的 Ca p t u r e,P r o t e l 公司的 P r o t e 1 9 9 S E等。接下来就可以参照评估板 的电路 图,根据 系统的 设计要求,开始进行原理 图的绘制了。在原理图绘制过 程 中,一定要搞清评估板 电路连接的原因,对于一时没 有搞清楚的问题切不可蒙混过 关。例如,有些处理器的 地址线是以字节位单位的,而另一些处理器的地址线则 是以两个字节
12、为单位的,当连接 1 6 位的存储器的时候,切不 可想当然的把处理器的 A 0直接连接 到存 储器的 A0上 面。另外,学生还应具有一定的P C B板图绘制能力,因 为在现阶段,很多公司还不能完全把原理图的设计工作 和P C B的绘制工作分开,往往要求硬件设计人员既能进 行原理图设计又能进行板图设计。即使是P C B 设计和原 m a g d n n e t 3 9 维普资讯 http:/ 理图设计分开的公司,也需要原理图设计者能为P C B的 设计者对于不同的信号提出布板要求。驱动程序和 操作系统移植 工作 现代嵌入式系统的开发同传统 8 位单片机系统的开 发相比,一个显著的区别就是嵌入式操
13、作系统的广泛使 用。在拿到焊接完毕的电路板,并进行基本的测试后,就 要进行驱动程序和操作系统的移植工作了。首先要进行 的B o o t l o a d e r 的编写和移植工作。B o o t l o a e r 当于P C系 统的 B I O S。对于有些嵌入式操作系统,如 u c O S I I 没有 b o o t l o a d e r 同样可以开发调试。但是对于Wi n d o w s C E 和 嵌入式l i n u x系统而言 B o o t l o a d e r 就是必须的了。本文以 Wi n d o w s C E为例,做一个简要的说明。Wi n d o w s C E 系
14、统的移植工作主要就是B S P(板级支 持包)的开发过程。B S P 将具体的硬件差异同操作 系统 的核心隔离开来,主要由 B o o t l o a e r,O AL(OE M A b s t r a c t i o n L a y e r)和设备驱动程序三部分组成。Wi n d o w s C E 系统中B o o t l o a d e r 叫做 E b o o t。E b o o t 被写入系统的引 导F l a s h。系统启动时运行 E b o o t,完成通过网卡将调试 PC 机中的Wi n d o w s C E 操作系统映像下载到目标系统的 S D R A M 中并开始执行的
15、功能。对于一 个系统移植人员,首先需要阅读文档,了解 Wi n d o w s C E 系统B o o t l o a d e r 和B S P 的基本概念和开发过 程。Wi n d o ws C E的开发系统 P l a tfo r m B u i l d e r 提供了详 细的文档和例程,开发人员需要仔细的阅读文档和例程。搞清楚各个函数之间的调用关系。在开发过程中的一个 重要的步骤就是打通串口,使得 目标板能够通过P C 机串 口向调试 P C机发送数据。由于 A R M系统的仿真器比较 昂贵,而且操作系统的调试往往不使用J T A G调试器进 行单步调试。所以能从串口观察程序的执行过程和
16、结果 对于调试就显得十分重要了。串口打通之后一个比较棘 手的问题就是 网卡芯片的调试。刚刚接触嵌入式 系统开 发的人往往没有直接在寄存器级上使用网卡芯片的经验,而网卡芯片的说明一般都较为简短,这就要求开发者学 习一些以太网的基础知识,对以太网的MA C层有一个基 本的认识。另外,各种网络调试(抓包)工具的使用也 能大大降低系统调试的难度。系统的O A L 需要根据具体硬件的不同做出相应的修 改,这个部分可次参照文档进行,在调试过程中根据串 口的信息分析 出错的地方。要充分发挥跨文件字符串搜 索工具的功能,在浩如烟海的源文件中找到出错的位置。40 c s d n并 重 2 N4 t 2 当然,随
17、着开发者对系统文件 目录结构的熟悉和了解,错误定位的速度会不断加快。Wi n d o w s C E 的驱动程序相对而言是比较好写的。程 序结构较为简单,学 习者可参照 h t t p:m s d n mi c r o s o f t c o m l i b r a r y d e f a u l t a s p MS DN Ho me MS DN L i b r a r y M o b i l e a n d E mb e d d e d De v e l o p me n t E mbed d e d Op e r a t ing Sy s t e m De v e l o p me n
18、t Co l u mn s S P OT t h e Ge e k an d W i n d o ws C E Dr i v e r s 这篇文章。应用程序的开发 嵌入式系统的应用程序开发同在PC 机上开发应用程 序 的区别不是很 大。对于 Wi n d o W S CE系统 而言,Mi c r o s o f t 已经提供了较为完善的开发工具。特别是 N E T C o mp a c t F r a me wo r k的使用,使得基于Wi n d o ws CE NE T C o m p a c t F r a r n e w o r k 的应用程序有了跨平台性。开发人员 可以使用Wi n
19、d o ws 的C#语言直接在P C上进行C E NE T 应用程序的开发和模拟调试,也可将 目标系统 同PC 机相 连,进行联机调试。现在有很 多系统支持 J 2 ME(J A V A的嵌入式系统版 本),这使得J A V A在嵌入式 系统应用开发中占有较大的 优势。另外,作为专业的嵌入式系统软件开发人员,还需 要充分了解面 向对象技术和设计模式等方面的知识,当 然作为初学者可以先不深入研究这方面的内容。常用嵌入式系统处理器和操作系统 处 理器 常用嵌 入式 系统处理 器主要包括 ARM 处理器,P o w e r P C处理器,基于 MI P S内核的嵌入式处理器,软 核处理器(如 A l
20、 t e r 的 N i o s 和X i l i n x 的Mi c r o B l a z e 等)和 D S P(数字信号处理器)等。A R M处理器的主要特点是具有较高的性能功耗比。A R M处理器被广泛的应用在手机,P D A等领域,其中 较为著名的有 I n t e l 公司生产的基于 A R M 内核的 X S c a l e 系列处理器。由于所有公司生产的基于A R M内核的处理 器具有相同的编程模型,在手持和 电池供 电的系统中,基于 ARM 的嵌入式系统处理器往往被首先选用。P o w e r P C(简称 P P C)处理器具有较强的运算性能 和数据吞吐能力,在网络和数据
21、通信领域基于P P C的嵌 入式 系统处理器有着广泛的应用。其中Mo t o r o l a 公司生 维普资讯 http:/ 产的 MP C 8 6 0 MP C 8 2 6 0被大量地应用在嵌入式网络产 品 中。MI P S 处理器的特点表现在十分强大的处理能力上。作为高性能处理器,MI P S 处理器适用于网络、企业及高 级消费类 电子应用,特别是在机顶盒系统中,MI P S 处理 器具有较高的市场占有率。随着可编程器件的规模不断扩大,使得人们能够根 据需要定制处理器,并方便的将针对某种特殊应用定制 的处理器方便的在可编程器件内部实现。除了处理器外,计算机系统还需要许 多其他构成部分,比如
22、在多通道媒 体数据处理 系统中,经常需要使用可编程器件来实现高 速的数据处理功能,使用软核 D S P 来实现复杂的数字信 号处理算法,同时还需要处理器进行事务处理,软核处 理器将可编程器件,D S P同处理器结合在一起,为系统 级设计提供了极大的灵活性。D S P(数字信号处理器)有别于通用处理器,集中 表现在其强大的数字信号处理能力上。在 D S P 内部提供 了硬件乘累加器,处理器在设计上对于特殊的寻址方式 做了优化,一些 D S P还支持零耗循环(Z e r o O v e r h e a d L o o p)。为了方便嵌入式系统设计,主流 D S P一般也都 提 供了丰富的外 设。特
23、别值得一 提的是 ADI 公 司的 Bl a c k fi n系列 DS P和 T I 公司的 DM6 4 X系列 DS P,两种 处理器都提供了丰富的片上外设,非常适用嵌入式系统 应用。操作系统 Wi n d o w C E N E T 5 0 作为Mi c r o s o f t 的产品,Wi n d o w C E N E 5 0 提供了功 能完备的平台开发工具P l a t f o r m Bu i l d e r 和应用开发工具 E mb e d d e d Vi s u a l C+vi s u a l S t u d i o 2 0 0 3。Wi n d o ws C E由 于拥
24、有广大使用者所熟悉的 w i n d o w s 界面,系统提供了 众多驱动程序,并且有完备的文档支持。对于应用开发 而言,熟悉Wi n d o w s 系统开发的程序员很容易转到wi n d o w s C E 应用程序的开发。Win d o w s C E 将会是一个非常 有前途的嵌入式操作系统。Vx W o r k s V x Wo r k s 是 由Wi n d r i v e r(风河)公司出品的嵌入式 实时 操作 系统,大名 鼎鼎的 火星 登陆车 就是使 用了 Vx Wo r k s。Wi n d r i v e r 为 Vx Wo r k s 提供了集成开发环境 t o rn a
25、 d o。u c o s l I 投稿信箱:t o u g a o c s d n n e t u C OS 是由J e a n L a b r o s s e 设计编写的开放源代码的 嵌入式实时操作系统,笔者最早接触的嵌人式操 作系统 就是它。阅读并深入理解 u C OS的源代码对于理解实时 系统是大有裨益的。AR M L i n u x A R M l i n u x 是由R u s s e l l K i n g N 其他开发者开发移植 的用于A R M处理器的 l i n u x 操作系统。A R M L i n u x 系统 在G N U G P L 下发布。有兴趣的读者可以参看h
26、t t p:w w w a r r n 1 i n u x o r g u k d o c s wh a t i s s h t ml 的介绍。u CL i n u x u C l i n u x 是适用于没有MMU的嵌入式处理的L i n u x O S 版本。u C l i n u x 同样在 G N UG P L下发布,有兴趣的 读者可以参看 h t t p:w ww u c l i n u x o r g i n d e x h t ml 嵌入式系统开发过程中的常见问题和解 决方法 B o o t lo a d e r 如何写入 F la s h?初学者一般都会遇到如何将程序写入处理器
27、的问题。对于不同的处理器,可以采用不同的方法。例如 I n t e l 的 X s c a l e 处理器可以使用 I n t e l 公司提供的J F l a s h工具烧写。对于具有J T A G调试工具软件的处理器,可以使用如下思 路:编写一段程序,这段程序能将位于 S D R A M S R A M 固 定地址中的数据写入 F l a s h 中。烧写时,首先,将这段软 件下载到 S D R AM 中,然后通过调试软件将要写入 Fl ash 的数据下载到 S D R A M S R AM 的某个固定地址开始的缓 冲区,然后通过调试器开始执行程序,将数据写 人Flas h。除此以外,网络
28、上还提供了很多专用的写Flash 的工 具,开发者可以根据自己的需要选用。什么是 a r m-e l f-g e e?a l T O e l f-g e e 是一个交叉C语言编译器。我们在P C平 台下编译程序,编译器运行的处理器同生成的代码将要 运行的处理器相同。但是,在P C机上编译 A R M程序时,编译器运行的处理器同生成的代码运行的处理器不同,这种编译器叫做交叉编译器。其 中的e l f 是指编译器生成 的目标文件格式。走了哪条编译路径?系统程序和驱动程序往往包含很多的编译选项,很 m a g c s d n n e t 4 1 维普资讯 http:/ 多选项都是在编译时通过命令行定
29、 义的,如果想知道 编译 的是那一段程序可以使用如下的方法:#i f d e f PL ATAAA#e r r o r Co d e f o r Pl a t f o l-t n AAA 托 l s e#e rro rCo d eNOT f o r Pl a t f o r m AAA#e n d i f 这样在编译的时候就知道,编译的是哪一条路经了。对于支持却r a g ma m e s s a g e(“I a m h e r e”)的编译器也可使用 却r a g m a m e s s a g e 编译指令。我怎么知道那段代码在那个文件中?系统编程 中经常需要使用在多个 文件 中搜索字符
30、 串,在wi n d o w s 平台下可以使用平台提供的多文件字符 串搜索工具。在 l i n u x 平 台下,可以使用 g r e p r 来搜索字 符 串。G r e p 的搜索功能十分强大,支持正则表达式搜 索,熟练使g r e p 对于阅读 系统和驱动程序代码是很有 帮助的。系统是从那个文件开始运行的?对于 Wi n d o w s CE系统,一般从 WI NC E 4 2 0 P L AT F OR M Yo u r P l a t f o rm K E RNE L HAL目录的某个汇 编文件中。对于L i n u x 系统版本不同会存在一定差异,以 a l r n处理器为例,一
31、般会在 l i n u x 2 4 l r c h、a 丌 T k e me l 的 h e a d a r l r l v S 中。程序执行到 了那里?可以在程序中插入如下代码来实现 p r i n t f(“I a m h e r es,d n”,一F I LE LI NE一);代码将打出p r i n t f 句所在的文件名和行号。推荐书目 J e an J L a br o s s e Mi c r oC7 OS-H The Re a l-me Ke r ne l,Se c o nd Ed i t i o n 这本书是笔者接触嵌入式实时系统的入门书,在国 内能够买到中文版。这本书较为清
32、楚地讲述了实时系统 的概念,各个组成部分的工作原理,特别是公开了实时 系统内核的源代码,仔细研究定会受益匪浅。有个小的 42 c s 一 W,ln 2 0 0 4 1 2 提示,对于初学者,这本书可以先不看第一章,直接从 第二章看起。Abr a h a m Si l b e r s c h a t z,Pe t er Ba e r Ga l v i n,Gr e g Ga gn e Ope r a t i ng S y s t e m Co nc e pt s 笔者在教学过程中发现,无论是计算机还是电子工 程专业都有很多学生对于操作系统的基本概念都没有搞 清,很少有学生有完整的系统编程经验。O
33、 p e r a t i n g S y s t e m C o n c e p t s 这本书对操作系统的感念讲述只能用经典 来形容。对于嵌入式系统有兴趣深入研究的同学,首先 要把基础打好,这本书就成了必读之物了。An dr e w S T a n e n b a u m Compu t e r Ne t wo r k s 提起 A n d r e w S T a n e n b a u m 学习计算机的 同学一定 都知道 OP E RA TI NG S YS T EMs:D e s i g n a n d I mp l e me n t a t i o n 这本书,笔者对于T ane n
34、b a u m这样的教授由衷佩服。网络协议栈是嵌入式系统中的支柱性组成部分。愿意致 力于网络深层技术研究的同学,这本书将你们建立一个 坚实的网络基础。Ka r i m Ya gh mou r Bu i l d i n gEmb e d de dL i nu x S y s t e ms 本书详尽的介绍了嵌入式l i n u x 系统的组成,基本概 念和如何去建立各个部分。全书篇幅较小,可谓短小精 悍。即可以作为嵌入式l i n u x 系统的入门读物,又是开发 过程各个部分的指南。A d v a n c e d R I S C Ma c h i n e s L t d(A R M)A R M7
35、 T D MI Dat a Shee t A d v a n c e d R I S C Ma c h i n e s L t d(A R M)A R M9 2 0 T T ec hni ca l Ref e r e nce Ma nua l 学 习嵌入式系统不了解当前应用最广泛的嵌入式处 理器怎么行?AR M7 T D MI 的 d a t a s h e e t 是学 习A RI V l 编 程模型,指令集的好东西。在嵌入式系统中,MMU(内 存管理单元)是很重要的部分,又是较难理解和掌握的 部分。A R M9 2 0 T T e c h n i c a l R e f e r e n c e Manu a l 正好可以帮 你讲解这方面的内容。P e r t a r Va n Da r Un De n Ex p e r t CPr o g rammi n g 嵌入式系统级编程最常用的语言还是 C。很多同学 都自认为自己的 C语言学的很好,那好,就看看这本书 吧,找找 自5 E x p e r t s 差距。维普资讯 http:/
限制150内