嵌入式软件工程师所做的事情便是在芯片上进行程序编写,根据产品的需求编写逻辑及数据采集和处理以及输出等。嵌入式软件一般采用的编程语言为C语言,有些地方会要求有汇编语言。为什么需要用C语言,因为C语言是接近底层的语言,当然汇编是更加接近的语言。但是汇编语言编写复杂,因此在实际应用中,人们并不直接使用汇编语言进行编程,而是使用相对高级的语言C。C语言有一个好处便是在硬件上运行时,速度快。只有在一些特定的环境下,比如芯片的启动代码(cstartup)、初始化芯片内存、直接操作PC指针等情况下人们才会优先考虑汇编,否则,几乎都是C语言。因此,可以说,嵌入式软件工程师就是C语言程序员。
想成为一个合格的嵌入式软件工程师,下面几项是必须要牢牢掌握的:
- 指针
这是嵌入式中使用最为广泛的知识点。复杂点的工程几乎所有的函数在传递变量时不会直接传递变量,而是传递变量的指针。这样做有什么好处呢?好处便是这样做是直接操作内存。
举个例子:
我们知道代码中定义的变量都是有内存的。比如 int a = 3;
我们定义完之后,编译器会自动向芯片ram区申请一块区域放置这个数据。比如申请到的ram区的地址是 0x00016。这个时候,在这个区域存放的数据便是3。可以想象成0x00016是一个门牌号,在这家门口挂了一个框子,框子里装的是3。 如果我们传递指针时,直接操作内存相当于芯片直接去寻找0x00016这个门牌号,然后把框子里的3替换成其他数。这样首先提高了代码执行效率,其次避免了在变量传递过程中有可能导致的错误。 - 基本语法
这个是基本功。 - 单片机原理
这个不多说,你需要了解单片机的组成,包括CPU、串口、数据总线地址总线、ADC、时钟、AHB、定时器等等的概念及基本用法。因为在嵌入式编程中,除了编写应用层的代码之外,你还需要设置芯片的时钟(主控频率)、定时器(实现一些中断)等。 - 读懂芯片手册的能力
每个嵌入式软件工程师都是针对一款特定的芯片进行编程,这时候你需要时间与这个芯片打交道,你需要读的懂芯片手册,知道在你需要更改一些芯片操作的时候应该怎么配置。 - 看懂硬件原理图的能力
嵌入式软件工程师不是光和软件打交道,有时候你需要根据硬件来配置串口IO等。这就需要你懂得硬件原理图。当然,有些时候在调试软件功能时还需要你去焊接一些信号线,这就需要更加了解图了。
参考自https://blog.youkuaiyun.com/dongtuoc/article/details/78072618