一.目标
1、了解嵌入式技术;
2、掌握嵌入式Linux操作的使用;(命令)
(80%以上的开发平台都是Linux)
3、掌握嵌入式Linux开发工具的使用;(gcc、gbd、make、shell)
4、掌握嵌入式Linux应用开发;(文件、多任务、网络)(数据库)
5、了解嵌入式产品开发流程;(硬件–软件–系统)
6、了解嵌入式系统移植;(u-boot、内核、文件系统)
7、了解嵌入式底层软件开发;(驱动开发)
嵌入式系统学习储备知识:C语言(累积代码量:3w)+单片机(硬 件的工作原理)
二、嵌入式开发概述
1、嵌入式技术是什么?
在已有的硬件上移植操作系统;在操作系统之上做应用开发;在操作 系统之下做底层开发;
(操作系统的作用:管理资源(软件资源和硬件资源)==管家)
嵌入式解决的问题:让软硬件耦合度降低,软硬件不直接发生关系;
2、嵌入式系统的组成
应用程序(多变)—>操作系统(核心)—>处理器(核心)
嵌入式CPU的选择
3.嵌入式软件与非嵌入式软件的区别?
嵌入式软件是结合操作系统做的开发
非嵌入式软件是做的裸机开发(没有跑操作系统)
嵌入式让产品更加智能,可以跑更多的软件,软件可以多任务的执行
4.嵌入式开发与单片机开发的区别?
嵌入式开发有操作系统,单片机开发无操作系统。
单片机开发可称为传统开发
(学习单片机的目的:对于学习偏硬件的同学来说,不是为了掌握这个芯片,而是掌握CPU开发的流程和一些外设硬件的工作原理,所以不必死磕)
单片机开发流程:看原理图–写代码–下载到开发板上运行
引申到传统开发:两大元素:软件和硬件(写软件控制硬件工作,硬件给软件反馈)
5.传统开发的缺点?
①软件移植性差(适配平台能力差,硬件一变化软件就必须跟着变化)
②开发人员能力要求:软硬通吃(不能分组,开发效率低;公司招人难度大,培养成本高)
③无法考虑用户的使用体验
6.嵌入式开发的优缺点?
优点:
功能上:软件适配性强;开发人员能力划分更加清楚;
技术上:多任务机制;提供丰富的网络协议;提供了开源软件和库
缺点:高效的操作系统对于硬件要求很高,成本高
三、嵌入式开发的方向(学习路线):
1.嵌入式上层应用软件开发
a.精通一门语言;
b.熟悉一款操作系统;(相当于会看说明书,会使用)
c.数据结构/算法
2.嵌入式底层系统软件开发
a.精通C语言(操作系统的核心是内核,所有操作系统内核都是由C+汇编开发的)
b.理解操作系统的实现(会使用,也会添加/修改功能)
c.熟悉硬件的工作原理(CPU:stm32+64位)(外设:SPI,IIC,蓝牙,WiFi,物联网,摄像头)
d.熟悉汇编
3.嵌入式系统工程师
BSP(固件工程师) 内核开发
4.为什么内核开发选择C语言?(C语言的特点?)
能够直接访问硬件、移植性好、运行效率高
5.为什么C语言能够直接访问硬件?
C语言有指针数据类型,指针可以对地址进行操作
6.什么时候选择用汇编?什么时候选择用C语言?
汇编语言是低级语言,没有高级语法的支撑,访问硬件效率大于C语言,对于硬件进行初始化时用汇编,对于硬件进行复杂操作时用C语言。
7.单片机是否可以作为嵌入式CPU?
YES, 操作系统有类似ucossii小的操作系统,所以单片机可以上小型的操作系统
8.哪些操作系统可以作为嵌入式操作系统?
嵌入式操作系统是可移植(代码开源。提供可移植接口)的操作系统(例:win10不能作为嵌入式操作系统因为他只适配在PC端,不可移植)
实时性(软件、硬件):规定的时间内完成规定的动作
vxworks:实时性强 Linux:无实时的,运行效率稳定
实时性的还有:RT-Linux openwrt