学习笔记一:
嵌入式系统课程学习储备知识:C语言+单片机(硬件的工作原理)
1、嵌入式技术是什么?
嵌入式软件与非嵌入式软件的区别?
嵌入式开发与单片机开发的区别?
嵌入式开发的优缺点?

嵌入式技术是以应用为中心,以计算机技术为基础的系统技术,把软件直接烧录在硬件里,而不是安装在外部储存介质上。即在已有的硬件上移植操作系统,让操作系统去管理软硬件资源,使软硬件耦合度降低,在操作系统之上做上层应用开发,在操作系统之下做底层开发。

单片机开发是传统开发,开发流程为先看原理图,然后写代码,最后将代码下载到开发板中,即由软件和硬件两大元素组成,熟悉硬件的工作原理再去写软件,将写好的软件烧录到硬件中,由软件去控制硬件工作(软件即代码,底层的开发板即硬件)。其缺点:首先软件和硬件的耦合度高,软件移植性差(适配平台能力差),运行效率低,功耗高。其次,在开发人员能力要求方面传统开发工程师要软硬兼顾,相对于团队合作,其开发效率低,工程师精力有限,很难顾全局,用户体验感降低。

嵌入式是在软件和硬件中间移植入操作系统。操作系统可以管理软件资源和硬件资源,类似于生活中的管家(我们提出要求他做),实现软件和硬件之间的隔离,例如想要运行硬件中的摄像头,至于要让软件向操作系统发出相应的指令,由操作系统去控制硬件,硬件将数据返回给操作系统,操作系统再将数据返回给软件,这样我们在开发软件时就不需要去了解硬件的工作原理和构造,只要操作系统不发生变化,硬件的改变就不会影响到软件。因此软件移植性好(适配平台能力强),开发人员能力划分更清晰,操作系统实现了多任务机制、提供了丰富的网络协议、提供了开源软件和库。其缺点在于操作系统升级硬件成本会提高。


嵌入式使产品更加智能,跑更多的软件。嵌入式软件是结合操作系统做的开发,而非嵌入式软件是裸机开发(没有跑操作系统)。判断是不是嵌入式产品,看产品中有没有跑操作系统,在各行各业都有不同类型的操作系统,应用非常广泛,但是其作用都为隔离软硬件。
2、嵌入式开发的方向及要求
1)、嵌入式上层应用软件开发:
精通一门语言;
熟悉一款操作系统(会看说明书);
数据结构/算法;
2)、嵌入式底层系统软件开发:
精通C语言(所有的操作系统内核都是有C+汇编开发的);
理解操作系统的实现(会使用,会添加/修改功能);
熟悉硬件的工作原理(CPU:stm32+64位,SPI,IIC,蓝牙,wifi物联网,摄像头);
熟悉汇编;
注:
(1)、为什么选择C语言?C语言的特点?C语言能够直接访问硬件、移植性好、运行效率高
(2)、为什么C语言能够直接访问硬件?因为C语言有指针数据类型,指针可以对地址操作
(3)、什么时候选择用汇编,什么时候选择用C语言?对硬件初始化用汇编,做复杂操作用C
3)、嵌入式系统工程师:方向:BSP(固件工程师)、内核开发;

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信