我的嵌入式之旅 — 认识嵌入式开发



一、嵌入式系统

定义:嵌入式系统是以应用为中心、计算机技术为基础,软、硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

特点

1)  嵌入式系统具有应用针对性。

2)  嵌入式系统硬件一般对扩展能力要求不高。

3)  嵌入式系统一般采用专门针对嵌入式应用设计的中央处理器。

4)  嵌入式系统中操作系统可能有也可能没有,且嵌入式操作系统与桌面计算机操作系统有较大差别。

5)  嵌入式系统一般有实时性要求。

6)  嵌入式系统一般有较高的成本控制要求。

7)  嵌入式系统软件一般有固化的要求。

8)  嵌入式系统软件一般采用交叉开发的模式。

9)  嵌入式系统在体积、功耗、可靠性、环境适应性上一般有特殊要求。

10) 嵌入式系统技术标准化程度不高。

二、嵌入式操作系统 

特点

1.微内核结构:一般来说,操作系统内核只提供基本的功能,如建立和管理进程、管理设备等。但是,一些桌面操作系统,如Windows等,将许多功能引入内核,操作系统的内核变得越来越大。内核变大使得占用的资源增多,剪裁起来很麻烦。嵌入式操作系统采用微内核结构,内核只提供基本的功能,比如:任务的调度、任务之间的通信与同步、内存管理、时钟管理等。其它的应用组件,比如网络功能、文件系统等均工作在用户态,以系统进程或函数调用的方式工作。因而系统都是可裁减的,用户可以根据自己的需要选用相应的组件。

2.任务调度:任务的调度有三种方式:可抢占式调度、不可抢占式调度和时间片轮转调度。不可抢占式调度:一个任务一旦获得CPU就独占CPU运行,除非由于某种原因,它决定放弃CPU的使用权;可抢占式调度:基于任务优先级,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其它任务;时间片轮转调度:当两个或两个以上任务有同样的优先级,不同任务轮转地使用CPU,直到系统分配的CPU时间片用完。目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。

3.硬实时和软实时:多数嵌入式系统对时间的要求较高,称之为实时系统。有两种类型的实时系统:硬实时系统和软实时系统。软实时系统并不要求限定某一任务必须在一定的时间内完成,只要求各任务运行得越快越好;硬实时系统对系统响应时间有严格要求,一旦系统响应时间不能满足,就可能会引起系统崩溃或致命的错误,一般在工业控制中应用较多。

4.内存管理:一些桌面操作系统使用了虚拟存储器的概念。采用段式管理、页式管理、或段页式管理。但是,大多数嵌入式系统不使用虚存技术,对内存的访问是直接的,使用物理地址;而且,大多数嵌入式操作系统对内存空间没有保护,各个进程共享同一个运行空间。一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储器。由此可见,嵌入式系统的开发人员必须参与系统的内存管理,对软件中的一些内存操作必须格外小心。

5.内核加载方式:嵌入式操作系统内核可以在Flash上直接运行,也可以加载到内存中运行。Flash的运行方式,是把内核的可执行映像烧写到Flash上,系统启动时从Flash的某个地址开始执行。这种方法实际上是很多嵌入式系统所采用的方法。内核加载方式是把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。这种方式相对复杂一些,但是运行速度可能更快,因为RAM的存取速率要比Flash高。

主流RTOS
第一类、传统的经典RTOS:最主要的便是Vxworks操作系统,以及其Tornado开发平台。Vxworks因出现稍早,实时性很强(据说可在1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。目前很多公司都在往嵌入式Linux转。但无论如何,Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。


第二类、嵌入式Linux操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑;另一类是跑在ARM 9上的,一般是将Linux 2.4.18内核移植在其上,可使用更多的Linux功能(当然uClinux更可跑在ARM 9上)。很多人预测,嵌入式Linux预计将占嵌入式操作系统的50%以上份额,非常重要。缺点是熟悉Linux的人太少,开发难度稍大。另外,目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统,这主要是由于ucOS/II较简单,且开源,非常适合入门者学习实时操作系统原理,但由于ucOS/II功能有限,实用用得较少,要学习就应学直接实用的,比如 uClinux就很实用。况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作系统的认识也有帮助,可谓一举多得。目前Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux开发。目前在嵌入式Linux领域,以下几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱动程序的人;三是熟悉Linux内核裁减和优化的人。

 

第三类、 Windows CE嵌入式操作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC++环境,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点 ,WinCE还有两个特殊版本,一个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除WinCE外,著名的PDA嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?

三、嵌入式处理器分类

嵌入式微处理器(Micro Processor Unit,MPU )

嵌入式微控制器(Microcontroller Unit,MCU )

嵌入式DSP(Embedded Digital Signal Processor,EDSP )

嵌入式片上系统(System On Chip,SOC)

四、嵌入式开发

由于嵌入式系统的目标机资源受限,不可能在其上建立庞大、复杂的开发环境,因而其开发环境和目标运行环境相互分离。因此,嵌入式应用软件的开发方式一般是,在宿主机(Host)上建立开发环境,进行应用程序编码和交叉编译,然后宿主机同目标机(Target)建立连接,将应用程序下载到目标机上进行交叉调试,经过调试和优化,最后将应用程序固化到目标机中实际运行。开发语言的选择

不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C 语言--一种"高级的低级"语言,则成为嵌入式系统开发的最佳选择。据统计,在嵌入式系统设计中,最受欢迎的前3种编程语言分别是C(74.6%)、汇编(69.6%)和C++ (50.1%)。

嵌入式系统开发工具

编译器:GNU编译器
调试工具:GNU调试工具
集成开发环境(IDE)
绘图入门工具
算法开发工具:UML/SDL工具库
网络/通信协议
配置管理工具
需求管理工具
DSP开发工具
器件驱动器开发工具
软硬件协同验证工具
Java工具
存储器分析工具
软件仿真/建模工具
Win CE工具
测试软件事件跟踪工具
内电路仿真器(ICE)
ROM仿真器
JTAG仿真器
逻辑分析器
示波器

嵌入式系统的调试

1.源程序模拟器方式

  源程序模拟器(Simulator)是在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具。

  注意:模拟器的功能毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面很有可能与实际处理器有相当大的差别。另外,它无法仿真嵌入式系统在应用系统中的实际执行情况。

   比如:ARM公司的ARMulator模拟器
2.监控器方式

    监控器(Monitor)调试方式需要目标机与宿主机协调。首先,在宿主机和目标机之间通过串口、以太口等建立物理连接,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序,从而建立宿主机与目标机的逻辑连接。宿主机通过调试器与目标机的监控器建立通信连接,它们相互间的通信遵循远程调试协议。比如ARM公司的Angel。
3.仿真器方式

    仿真器调试方式是在微处理器的内部嵌入额外的控制模块。当特定的触发条件满足时,系统将进入某种特殊状态。在这种状态下,被调试的程序暂时停止运行,宿主机的调试器通过微处理器外部特设的通信口访问各种寄存器、存储器资源,并执行相应的调试指令。
    在宿主机的通信端口和目标板调试通信接口之间,通信接口的引脚信号可能存在差异,因此在这两者之间往往可以通过一块信号转换电路板连接。
    一般高档的微处理器都带JTAG (Joint Test Action Group,联合测试行动组)接口,它是一种边界扫描标准,只需5根引脚就可以实现在线仿真的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值