第一章 知识总结
1.什么是嵌入式
ARM:微处理器公司的名字(ARM 公司推出首个嵌入式 RISC 核心——ARM6™系列处理器)/微处理器的统称/一种技术的统称,ARM架构特点:低成本、低功耗。(便捷)
X86(PC架构):高性能、高功耗。
1.1 嵌入式vs传统开发
传统的开发就是软件直接到硬件,这就要求工程师兼通软硬件;软件与硬件大都是一一对应的关系(由于接入硬件引脚、高低电平不同),软硬件耦合度高,移植性差;软件主要是实现外围硬件的功能,几乎不考虑用户的体验。
嵌入式开发(引入操作系统)避开了传统开发的缺点,解决了软硬件耦合度高的问题,移植性高;软件工程师可以不考虑硬件结构,提高了产品的开发效率。缺点是成本高。
1.2 操作系统
操作系统就是一个系统软件,它可以与应用软件、硬件进行交互,控制程序的执行(批处理/分时/实时操作系统)。帮助软件工程师无需考虑硬件架构实现功能,帮助硬件工程师无需考虑软件程序实现产品需求。它使软硬件之间的耦合度降低——>依赖于一个不变的东西。
ps:操作系统:桌面上的软件通过Shell(转为Linux命令)与内核直接关联。
移植操作系统:多任务程序、网络远程传输、丰富的库和软件。
1.3 中间件
软件到操作系统搭建一个中间件的桥梁(库、SDK),使工程师更方便/快捷的完成任务要求。中间件是事先编译好的代码完成简单的功能实现,操作者可以直接调用。
1.4 嵌入式
总的来说,嵌入式就是在已有的硬件平台上移植操作系统,降低软硬件之间的耦合度,移植性高,无需考虑硬件结构,提高了产品的开发效率。
2.嵌入式就业前景
2.1 嵌入式上层开发(嵌入式软件应用工程师)
嵌入式上层开发需要应用软件+中间件的掌握(算法、界面)。具体需要:精通C/C++语言;熟悉操作系统(多任务(进程、线程)、文件、网络);熟悉数据库技术、数据结构及算法。
ps:C语言侧重于硬件及硬件开发效率;C++侧重于图形界面(MFC/QT)。
2.2 嵌入式底层开发
嵌入式底层开发主要是操作系统(BSP、内核、驱动)相关知识,它需要:精通C/C++语言;熟悉各个体系结构汇编;熟悉内核的各个功能模块;熟悉至少两种CPU的体系结构;熟悉外围硬件的工作原理(wifi、摄像头、蓝牙...).
ps:底层开发是需要一定的上层开发基础的。
3.嵌入式学习路线
1-9属于嵌入式上层开发。
4.操作系统分类
4.1 嵌入式系统组成
嵌入式软件子系统:操作系统+应用软件
嵌入式硬件子系统:处理器+外围硬件(串口、蓝牙、flash、内存....)
4.2 嵌入式处理器的选择
CPU体系结构:x86(PC) 、ARM(基本上移动设备)、mips(汽车、工业)、powerPC(网络设备)、RISC-V(开源)
ARM体系结构:cortex-M(M系列算力弱,小型操作系统)、cortex-R(R系列实时操作系统)、cortex-A(A系列算力强,大型操作系统)
ARM半导体厂商:意法(stm32)、高通、三星、恩智浦
ARM体系结构的特点:低功耗、精简指令集
4.3 嵌入式操作系统的选择(可移植操作系统)
分类:商业、免费
商业:VxWorks、wince、QNX
免费:Linux、uc/os-II(五千+行代码)、rt-thrwad(实时)
实时性:VxWorks>QNX>rt-thrwad>ucoss-II
第二章:安装Vmware16.2+Ubuntu20.05
第三章:面试题
1.什么是嵌入式?
总的来说,嵌入式就是在已有的硬件平台上移植了操作系统,降低软硬件之间的耦合度,移植性高;使软件工程师无需考虑硬件结构参与项目,提高了产品的开发效率。
2.什么是嵌入式操作系统?
就是一种用途广泛的系统软件;负责系统全部的软硬件资源分配,任务管理,控制协调各个进程;使软硬件之间的耦合度降低,使其依赖于一个不变的体系;将软硬件分离开来,推动项目进度,提高产品的开发效率。
3.常见的操作系统有哪些?
嵌入式实时操作系统,如:VxWorks、QNX、uC/OS-II、rt-thrwad、嵌入式Linux;以及应用在智能手机电脑上的Android、iOS。