1、什么是嵌入式技术
(1)嵌入式软件与非嵌入式软件的区别?
答:嵌入式软件是结合操作系统之上做的开发;非嵌入式软件是做的裸机开发。(裸机:没有操作系统)
(2)嵌入式开发与单片机开发的区别?
答:区别:是否有操作系统。
拓展:
1)传统开发的缺点:传统开发由两大元素组成:软件和硬件。(软件控制硬件,硬件给软件反馈)。从系统架构上来说,软件移植性差(即适配平台能力差)(移植性:从一个平台切换到另一个平台,代码改的越少或者产品改地越少,移植性越高)。
开发人员能力要求:软硬通吃(开发效率低)。
2)单片机的相关概念:①单片机的特性:单片机是8位的,它的处理速度跟不上。从开发模式上分析,软件和硬件的耦合度非常大(耦合度高导致的问题软件移植性差)。②单片机开发叫做传统开发。③单片机的开发流程/开发步骤:看原理图—看硬件—写程序—下载到开发板上运行。
3)有操作系统的好处:解决了软件的移植性;解决了开发人员的能力的划分问题。操作系统有多任务机制,多任务机制带来的好处:提供了丰富的网络协议;提供了开源软件和库。
(3)嵌入式开发的优缺点?
答:优点:解决了软件的移植性;解决了开发人员的能力的划分问题。提供了丰富的网络协议;提供了开源软件和库。
缺点:需要较为强的硬件支撑。
(4)嵌入式的开发方向
①嵌入式上层应用软件开发
a.精通一门语言
b.熟悉一款操作系统(会看说明书)
c.数据结构/算法
②嵌入式底层系统软件开发
a.精通C语言(所有的操作系统内核都是由C+汇编开发的)
b.理解操作系统的实现(会使用,也会添加/修改功能)
c.熟悉硬件的工作原理(CPU:stm32+64位;SPI,IIC,蓝牙,Wifi,物联网,摄像头)
d.熟悉汇编
拓展:
1)为什么内核开发选择C语言?(即问C语言的特点?)
答:能够直接访问硬件;移植性好;运行效率高。
2)为什么C语言能够直接访问硬件?
答:C语言有指针数据类型,指针可以对地址进行操作。
3)什么时候选择用汇编?什么时候选择用C语言?
答:对硬件初始化的时候采用汇编,对一些硬件的复杂操作(对屏幕的控制,内存的控制,内存分配的策略)的时候用C语言。
a.汇编的特点:低级语言,没有高级语法的支撑;访问硬件的效率大于C语言。
③嵌入式系统工程师
BSP(固件工程师) 内核开发
2、嵌入式系统的组成
(1)软件子系统与硬件子系统的组成?
答:软件子系统由应用程序和操作系统组成;硬件子系统由存储器、处理器、输入接口和输出接口组成。
(2)嵌入式系统CPU的选择?
①CPU体系结构的种类、特点及应用场景?
1)ARM:
特点:体积小、低功耗、低成本、高性能;支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件;采用RISC体系结构,大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。
应用场景:工业控制领域、网络应用、消费类电子产品、成像和安全产品。
2)X86/Atom:
特点:速度快;单条指令功能强大,指令数相对较带宽要求低;还是因为指令数相对少,即使高频率运行也不需要很大的带宽传输指令;控制简单。
应用场景:低端电脑。
3)MIPS:
特点:MIPS支持64bit指令和操作,ARM目前只到32bit;MIPS有专门的除法器,可以执行除法指令;MIPS的内核寄存器比ARM多一倍,所以同样的性能下MIPS的功耗会比ARM更低;MIPS开放。
应用场景:游戏机、路由器、激光打印机、掌上电脑等各个方面。
4)PowerPC:
特点:可伸缩性好、方便灵活。
(3)嵌入式操作系统的选择?实时性的划分?
①哪些操作系统可以作为嵌入式操作系统?
答:可以移植(代码开源、提供可移植接口)的操作系统称之为嵌入式操作系统。
②嵌入式操作系统分类
1)按收费模式划分
a.商用型:Vxworks,Nucleux,PlamOS,Symbian,WinCE,QNX,pSOS,VRTX,Lynx OS,Hopen,Delta OS
b. 免费型:Linux,μCLinux,μC/OS-Ⅱ,eCos,uITRON
2)按实时性划分
a.硬实时:Vxworks
b.软实时:WinCE,RTLinux
c.无实时
拓展:
a.实时性(软件、硬件):在规定的时间内完成规定的动作(软件:通过算法实现的;硬件:通过硬件实现实时性)
b.Vxworks:实时性强 Linux:无实时的 运行效率 稳定 RT-Linux openwrt有实时性
(4)嵌入式系统的应用行业