1.什么是嵌入式?
在已有的硬件平台上移植操作系统。
根据英国电气工程师协会( U.K.Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。
1.1单片机开发与嵌入式开发的区别?
是否有操作系统。
1.2操作系统是什么?
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,控制程序运行,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。
1.3操作系统的作用是什么?为什么要移植操作系统?
(1)引入操作系统后,软件直接和操作系统打交道,这样提高了软件的移植性;
(2)软件开发人员不必非要懂硬件,节约其时间,使其更加专注软件的开发;
(3)操作系统提供了开源软件以及开发库,提高了开发效率;
(4)操作系统提供了丰富的网络协议栈,用于远程控制和智能化;
(5)操作系统提供了多任务机制(进程,线程)。
1.4谈谈你对嵌入式的理解/任何开发都必须移植操作系统吗?优缺点?
(1)传统开发模式在pc机上编写代码,下载到硬件上,实现软件对硬件的控制。
传统开发模式的软件可移植性差,并且软件开发人员必须要懂硬件。
(2)而嵌入式在软件和硬件之间引入操作系统,提高了软件的移植性;
软件开发人员也不必懂硬件,节约其时间,使其更加专注软件的开发;
同时操作系统提供了开源软件以及开发库,提高了开发效率;
操作系统提供了丰富的网络协议栈,用于远程控制和智能化;操作系统提供了多任务机制(进程,线程)。
2.嵌入式系统的组成
一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成。
嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成;执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
2.1软件子系统与硬件子系统的组成和岗位需求
(1)软件系统(Software Systems)是指由系统软件、支撑软件和应用软件组成的计算机软件系统。如Linux C(C/C++)、android(java)、ios(oc),(java、php、.net脚本)。
应用软件的岗位需求:1.精通一门语言
2.熟悉一款操作软件
3.掌握数据结构及算法
系统软件的岗位需求:1.精通C语言
2.熟悉汇编语言
3.理解操作系统的实现
4.熟悉硬件的工作原理
(2)硬件系统由五大部件组成:主机部分由运算器、控制器、存储器组成,外设部分由输入设备和输出设备组成,其中核心部件是运算器。这种硬件结构也可称为冯·诺依曼结构。
如BSP、驱动、内核、网络协议栈。
2.2嵌入式系统CPU的选择
【CPU主要的性能指标 】
(1) 主频:即CPU的时钟频率(CPU Clock Speed)。一般说来,主频越高,CPU的速度越快。由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样。
(2) 内存总线速度(Memory-Bus Speed):指CPU与二级(L2)高速缓存和内存之间的通信速度。
(3) 扩展总线速度(Expansion-Bus Speed):指安装在微机系统上的局部总线如VESA或PCI总线接口卡的工作速度。
(4) 地址总线宽度:决定了CPU可以访问的物理地址空间,对于486以上的微机系统,地址线的宽度为32位,最多可以直接访问4096 MB的物理空间。
(5) 数据总线宽度:决定了CPU与二级高速缓存、内存以及输入/输出设备之间一次数据传输的信息量。
(6) 超标量:是指在一个时钟周期内CPU可以执行一条以上的指令。Pentium级以上CPU均具有超标量结构;而486以下的CPU属于低标量结构,即在这类CPU内执行一条指令至少需要一个或一个以上的时钟周期。
(7) L1高速缓存:即一级高速缓存,对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。
(8) 采用回写(Write Back)结构的高速缓存它对读和写操作均有效,速度较快。而采用写通(Write-through)结构的高速缓存,仅对读操作有效。
2.3嵌入式操作系统的选择?实时性的划分?
嵌入式操作系统的划分:
1.按收费模式划分
(1) 商用型:Vxworks , Nucleux , PlamOS , Symbian , WinCE , QNX , pSOS , VRTX, LynxOS , Hopen , Delta OS
(2) 免费型:Linux, μCLinux, μC/OS-Ⅱ,eCos,uITRON
2.按实时性划分
(1) 硬实时:Vxworks
(2) 软实时:WinCE,RTLinux
(3) 无实时:Embedded Linux
嵌入式操作系统的选择:
1.能满足大多数项目需求的uC/OS-II :
uC/OS-II最大的应用价值是简洁与实用,当一个系统选用uC/OS-II时,最多只需要2M的NOR Flash,2M的SDRAM或最多8M的SDRAM,因此整个系统的成本是最低的。
uC/OS-II能满足很多项目的需求,而µC/OS-III其新的一些特性是:抢占式多任务,在同一优先级支持任务的轮询调度,没有任务数的限制,内核提供丰富的服务:信号量、互斥信号灯、完全支持优先级继承、事件标志、消息队列、定时器、固定大小的内存块管理,以及内置性能测量。
如果将它移植到ARM9,会发现它的启动速度是最快的,甚至只需要1秒的时间。当开发基于GUI的产品时,您会发现最终的效果可以与其它的操作系统媲美。很多人不知道如何将uC/OS-II移植到ARM9,其实只要支持MMU即可。
虽然它能够满足很多产品对CF卡、SD卡、TCP/IP以太网、CAN-bus/CANopen/DeviceNet/J1939现场总线、GUI图形用户界面、RS232、RS485等多方面的需求,但它还是有一定的局限性。如果需要支持Wi-Fi等更多的软件时,那就非常麻烦了。
2. 资源丰富、继承性最好的WinCE
如果一次购买超过3000个授权,价格还是很便宜的,这是很多用户都能够承受的。由于WinCE与Windows一脉相承的关系,且使用同样的开发工具,那么对于熟练掌握Windows编程的软件开发人员来说也就非常方便了,所以很多客户还是选择WinCE。如果项目中还需要用到GUI的话,那么WinCE可以说是最佳的选择了,这是WinCE最明显的优势之一。
如果无论开发什么产品都选择WinCE的话,肯定是不划算的。比如选用uC/OS-II就可以实现的项目,如果因为开发人员的喜好而选用WinCE,至少需要2片32M的SDRAM,1片32M的NOR Flash或一片2M的NOR Flash+128M的NAND Flash(因为容量少的工业级NAND Flash越来越难购买),可想而知其硬件成本还是非常之高的。
3. 高贵、实时、稳定的Vxworks
Vxworks最大的应用价值是实时性和稳定性,其血统高贵,由于系统使用了Vxworks,用户对产品的信任度立即凸显。如果一次性购买的授权数量适当大一些,其价格是很多企业都能够接受的,最终您一定会惊讶得不可思议,在计算成本时甚至可以忽略不计。
您可以得到所有丰富的源代码,并使用于任何CPU微处理器。如果您只选用某一系列处理器或不需要升级源代码,那么以后每年的费用则是可以节省的,只要支付每个产品的授权费用即可。如果您不需要源代码,那么所要支付的年费将会更加便宜。
4. 开源、自由的嵌入式Linux
嵌入式Linux最大的应用价值是开源,如果需要支持Wi-Fi的话,那么嵌入式Linux是很好的选择之一,搭配QT开发GUI人机界面也是非常不错的。但很多人选择嵌入式Linux的出发点是免费,这是绝对错误的,因为很多企业长期采取放羊式的产品开发方法,即便一些企业实施了项目管理,但对于成本核算还是缺乏参照物,几乎没有购买商业化操作系统开发产品的经验,从而忽略了开发人员的高工资开支。
嵌入式Linux的内核是比较稳定的,而相对Vxowork、WinCE来说却是最贵的。但为什么还是要推荐选用嵌入式Linux呢?首先Linux是支持新微处理器、新驱动软件和新协议软件最多、速度最快的平台。由于其最大的好处就是开源,所以我们可以根据需要而任意裁剪,即便某些驱动不稳定,但因为有源代码我们也可以任意修改,所以嵌入式Linux最大的应用价值不是免费。随着Linux技术与时俱进式的发展,Linux技术将会越来越完善,因为Linux存在的价值,将时刻提醒垄断性商业化软件回归大众化的价格,市场势必呈现按需配置的多元化用户自由选择的新时代。
5. 开源软件
刚起步的一些网站、企业或个人由于对价格的敏感往往选择免费的开源软件,这些软件的性能正变得越来越好。然而大公司更注重将锋线降到最低点,因而他们愿意选用收费的微软软件或者红帽子等公司Linux系统提供商的服务。公司知道,他们向软件公司开出了一张支票,就同时得到了一份合约,有了这份合约,这些公司就会得到“高水准服务的保证”。也就是说,如果软件出了故障,那么您就可以拨打某个维修电话了。
2.4嵌入式系统的应用行业
1.军事国防
2.工业控制:工控设备、智能仪表、汽车电子
3.消费电子:信息家电、智能玩具、通信设备、移动存贮
4.网络设备
5.电子商务