什么是嵌入式?

转载自https://blog.csdn.net/dongtuoc/article/details/78072618?utm_source=app&app_version=4.5.8

姓名 魏子勋      学号20009101910

竹园三号书院

【嵌牛导读】本文介绍了嵌入式的体系以及什么一个嵌入式系统开发工程师需要具备哪些特质。

【嵌牛鼻子】嵌入式简介

【嵌牛提问】什么是嵌入式?什么是嵌入式开发工程师?

【嵌牛正文】

什么是嵌入式?

关于这个问题,在自己刚找到第一份嵌入式软件工程师的工作之后,有一次在学校和师弟师妹们聊天,谈到自己的工作规划,有了以下的对话。


“师兄,你找的工作是什么方面的啊?”

“嵌入式软件工程师”

“啊?这么高端,是干什么的啊”

“就是写写程序啥的”

“哦”


其实当时我自己也不懂嵌入式具体工作内容是什么?只是听说是写程序的。对于一个不同专业的行业,能够在研究生毕业的时候找一个跨专业的工作,对于师弟师妹们来说被定义为“高端”,而自己却一脸懵逼,支支吾吾不能详细回答他们的问题。


那么,到底什么是嵌入式呢?

嵌入式软件工程师具体的工作内容是什么呢??


度娘给出的答案是:


嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。


说这么多我相信对于非这个专业的同学来说,仍然一知半解。


以我个人的理解,嵌入式是那种需要把程序烧写到芯片中,通过芯片控制硬件实现特定功能的系统。


实际上,现实中我们经常会遇到嵌入式系统,像是手环、智能单车锁等。拆开这些产品,你会发现有一块电路板,在电路板上有一个甚至好几个芯片,一般产品会有一个主要的芯片(称为主控芯片),用来整个产品的数据处理、硬件控制等。


嵌入式软件工程师所做的事情便是在芯片上进行程序编写,根据产品的需求编写逻辑及数据采集和处理以及输出等。嵌入式软件一般采用的编程语言为C语言,有些地方会要求有汇编语言。为什么需要用C语言,因为C语言是接近底层的语言,当然汇编是更加接近的语言。但是汇编语言编写复杂,因此在实际应用中,人们并不直接使用汇编语言进行编程,而是使用相对高级的语言C。C语言有一个好处便是在硬件上运行时,速度快。只有在一些特定的环境下,比如芯片的启动代码(cstartup)、初始化芯片内存、直接操作PC指针等情况下人们才会优先考虑汇编,否则,几乎都是C语言。因此,可以说,嵌入式软件工程师就是C语言程序员。


对应的,还有嵌入式硬件工程师。他们的主要工作便是电路板的设计。一个产品比如智能单车车锁。一个简单的动作,比如手机APP解锁。当你扫描二维码解锁时,产品后台会通过短信向产品发送信号,电路板上的短信接收单元接收到短信后,会进行处理并将信号传给主控芯片,主控芯片进行相应的逻辑判断,验证短信正确后从芯片引脚输出高/低电平,高/低电平经电压转换电路(可能转换成5V也可能转换成12V)输送给继电器开关,继电器控制开关动作,实现单车锁的解锁。实际产品中可能会和上面的描述不一样,但是大致原理是相似的。嵌入式硬件工程师便是设计电路板,设计原理图、PCB板图,从而实现产品的功能。


所谓软硬件可裁剪,个人理解是软件功能通用。比如你编写了一个短信验证函数如下:


int message_ver(int data, int num)

{

    if (data == ***)

    {

        if (num == ***)

        {

            return SUCCESS;

        };

    }

    else

    {

        return FAIL;

    }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

该函数输入变量为短信内容data以及车牌号num,然后进行相应处理,r如果符合则输出成功,如果不符合判定则输出失败。这里的成功(SUCCESS)和失败(FAIL)是之前使用的宏定义。如

#define SUCCESS (0x01)

#define FAIL (0x00)

所谓可裁剪,便是该函数可以用在其他需要进行短信验证的地方,使用方法直接调用即可。甚至在其他新的产品中,比如公司需要开发智能摩托车,也需要短信验证,但是代码需要重新编写,这时候你完全可以把这块代码直接复制粘贴到摩托车的工程中。裁剪,便是CTRL+X以及CTRL+V,并且裁剪过程中能够保持代码功能的可用性。


硬件可裁剪类似。比如一块升压电路,需要将3.3V的电压升至5V,你在一个产品中设计好了,该电路出入3.3V,输出5V。你设计好了电阻电容等等细节,并且在一个产品中也得到了验证,稳定性很好。这时候公司需要开发另一款产品,也需要升压,你就可以把这块电路搬到新的原理图中。


软硬件可裁剪是嵌入式系统(产品)的一个很重要的特性。这保证了产品能够更好的维护以及复制以及产品的迭代。


嵌入式软件工程师需要什么知识?

我觉得这个问题很有写一写的必要。


作为一个软件开发人员,C语言知识是必须的,这里的C语言知识不是大学里学到的那些,会写一个for循环或者会写一个if语句那么简单。因为在产品设计时,你需要考虑很多东西,比如新产品立项在选择芯片类型时,你需要了解这个芯片都有神马资源(所谓资源一般指的是有多大内存、多大flash空间、有几个串口等等),这些资源能不能支撑你的产品功能。在判断资源够不够的时候,就需要你对C语言代码有更深的理解,你要知道一行代码在经过编译器编译完之后大约占多大的空间,整个项目大概有多少代码量,芯片flash能不能存的下这么多代码。


在这里就需要一些芯片空间的知识。比如32kb的芯片是什么概念?大约多少行的代码量编译完有32kb,当然不同的编译器是不一样的,但是我觉得这需要心里有个数。


想成为一个合格的嵌入式软件工程师,下面几项是必须要牢牢掌握的:


指针

这是嵌入式中使用最为广泛的知识点。复杂点的工程几乎所有的函数在传递变量时不会直接传递变量,而是传递变量的指针。这样做有什么好处呢?好处便是这样做是直接操作内存。

举个例子:

我们知道代码中定义的变量都是有内存的。比如 int a = 3;

我们定义完之后,编译器会自动向芯片ram区申请一块区域放置这个数据。比如申请到的ram区的地址是 0x00016。这个时候,在这个区域存放的数据便是3。可以想象成0x00016是一个门牌号,在这家门口挂了一个框子,框子里装的是3。 如果我们传递指针时,直接操作内存相当于芯片直接去寻找0x00016这个门牌号,然后把框子里的3替换成其他数。这样首先提高了代码执行效率,其次避免了在变量传递过程中有可能导致的错误。

基本语法

这个是基本功。

单片机原理

这个不多说,你需要了解单片机的组成,包括CPU、串口、数据总线地址总线、ADC、时钟、AHB、定时器等等的概念及基本用法。因为在嵌入式编程中,除了编写应用层的代码之外,你还需要设置芯片的时钟(主控频率)、定时器(实现一些中断)等。

读懂芯片手册的能力

每个嵌入式软件工程师都是针对一款特定的芯片进行编程,这时候你需要时间与这个芯片打交道,你需要读的懂芯片手册,知道在你需要更改一些芯片操作的时候应该怎么配置。

看懂硬件原理图的能力

嵌入式软件工程师不是光和软件打交道,有时候你需要根据硬件来配置串口IO等。这就需要你懂得硬件原理图。当然,有些时候在调试软件功能时还需要你去焊接一些信号线,这就需要更加了解图了。

除了上面几项,其他未尽事项也需要在嵌入式编程中逐渐积累。


因此,回答最初的问题。


什么是嵌入式?


我想每个人都有每个人的理解。嵌入式,说白了,就是把程序(不管是用什么语言编写的)烧录到芯片中,控制芯片外围电路实现特定功能的系统。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容