什么是嵌入式
-
嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统;
-
国内普遍认同的嵌入式系统定义是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统;
-
从应用对象上加以定义来说,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
-
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车,机器人等,都使用嵌入式系统,有些嵌入式系统还包含操作系统
嵌入式芯片选型
单片机能搞定的:
- 共享单车的锁
- 单片机 gps定位模块, NB-Iot模块放送定位消息到服务器, 服务器将密码发送到手机支付宝,手机蓝牙发送指令打开电磁锁
- 宿舍楼下刷卡开铁门
- 单片机,读卡器,电磁锁
- 快递小哥扫快递二维码
- 单片机 屏幕 二维码技术
- 共享汽车开锁
- GSM通信模块,电磁锁(基于汽车锁改造)
低端单片机搞不定的,用ARM架构,比如STM32,比如ARM+Linux+QT,比如安卓系统
-
人脸识别
- 比如C51的摄像头,清晰度低,算法慢,准确率低
-
带人机交互的
- C51,stm32配合屏幕,UI自定义底层UI风格体验差,开发量大
- QT方案:通常基于Linux,STM32跑不了Linux,所以用nanopi,树莓派,2440等
- 安卓的方案:基于安卓,高通的,华为海思的等
考虑因素:
- 可靠性、成本、体积、功耗等严格要求
- 功能和需求
硬件架构
:
- ARM架构(stm32,高通,骁龙,海思,树莓派的Cortex-A53d等)
- Intel架构(i5,i7)
- X86架构 (AMD)
- MIPS架构
- PowerPC架构
注意:
- stm32跑linux需要mmu模块,因为芯片是ARMV4内核
- 带操作系统的芯片:海思方案,瑞芯微方案,移远方案
- 驱动是针对操作系统来讲,与普通的裸机开发有不同【可否理解为逻辑的驱动只操作寄存器,而操作系统的驱动也是操作成寄存器但是要给应用层开放接口】
为什么学
学习目标依然理Linux系统,平台是ARM架构,也就是Linux-ARM开发经验
(arm指的是:平台所用CPU是ARM9处理器,linux指的是:运行的操作系统是Linux)
- 蜂巢快递柜,配送机器人
- 第三方介入库,比如刷脸支付和公交车收费设备需要集成支付宝sdk,提供的libalipay.so是Linux的库,设备必须跑Linux系统
- 图像识别,音频,视频等领域的技术支撑也无法脱离linux系统
- 人工智能设备通常需要更好的系统和更高的算力
- 能跑Linux的一般为X86(intel公司),ARM,MIPS,PowerPC( 苹果 )等架构,而ARM市场占有率最大
- 目前的PC架构绝大多数都是Intel的X86架构, X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多、强得多 。 但ARM的优势不在于性能强大而在于效率,ARM采用RISC流水线指令集,在完成综合性工作方面根本就处于劣势,而在一些任务相对固定的应用场合其优势就能发挥得淋漓尽致。
学什么
这个领域分为三个方向:
- 应用开发:通常与产品的业务相关,比如智能家居的中控板,可以是c++QT,可以是c GTK,可以是Android页面,也可以是基于串口屏的UI交互,后台数据交互和系统交互都是基于Linux系统的,难点在于协议开发
- 系统开发:主要任务为硬件工程师设计的产品板操作系统,比如uboot(内核启动程序),linux内核(kernel),文件系统等,一般为原厂招聘
- 算法工程师:与数据模型相关
嵌入式为什么要引入操作系统
单片机: 软件 —— 硬件
嵌入式: 软件 ——操作系统——硬件
嵌入式是通过操作系统,间接控制硬件。
优点:
- 软件移植性好。
- 软件开发人员不需要懂硬件,极大地提高了开发效率。
- 操作系统提供了很多开源的软件,工具,库。
- 可以实现多任务。
- 操作系统中有一些网络协议,因此嵌入式是可以上网的,提供了大量的网络资源,实现远程控制。
架构
ARM
DSP
FPGA
软件开发:给芯片写代码
硬件开发:比较好的方向如下
- ARM、DSP、FPGA开发调试
- 芯片,FPC柔性电路,集成电路