首页 > 嵌入式基础教程 > 基础知识

此处嵌入式特指基于linux平台,单片机和其他rtos不在讨论范围~

我从事嵌入式软件开发有6,7个年头,bsp、驱动、应用软件、android hall、framework等都有涉猎。平时除了关注嵌入式行业的发展,也多少对Web、后台服务端、分布式等方向的技术有一些关注。

近期有萌生换个行业方向的想法,想做做后台服务器相关的开发,由于之前工作中并没有这方面的实际需求,只是自己平时关注,了解了些知识,比如:NIO、epoll、ngnix、zeromq、libevent、libuv、高并发、分布式、redis、python、tornado、django,涉猎比较杂,都了解个皮毛,不精。意外的是屡屡被互联网行业鄙视,面试机会都寥寥无几。

此时我想到底是什么问题呢,难道嵌入式出身的已经这么不受待见了吗?想当初,嵌入式,驱动开发,可是趋之若鹜的行业(有点夸张,不过8,9年前嵌入式可是听着比做java web的要牛逼些哦)。

问题总是有原因的,我说下自己的理解:

嵌入式是否真的高大上?为什么没有嵌入式软件架构师?

打开各种招聘网站,搜索架构师,会出现各种系统架构师,web架构师,后台服务端架构师等等,但是唯独很难看到嵌入式软件架构师。嵌入式软件不需要架构吗,驱动不需要架构吗?答案是当然需要,不过为什么没有这方面的职位?

我的看法:目前国内的嵌入式开发主要分为嵌入式底层开发和嵌入式应用开发,嵌入式的底层开发一般叫做驱动开发,或者bsp开发,有时也有称之为linux内核开发,名字听着都很高大上的感觉。

这么高大上的名字为什么没有架构师呢?linux、 kernel的架构师是linus等一众linux kernel开发维护者,因为本身linux kernel或者操作系统就是一个通用的平台,解决通用的问题,linux开源届的大牛都已经制定好了架构规则,留给可发挥的地方并不多,大部分工作只需要按照规则框架填充就可以了。

以目前国内大部分公司的业务需求,只是在做外围设备的集成,嵌入式平台的porting、搭建裁剪、业务需求完全不会超过kernel里提供的功能范围,导致没有什么新的架构需要开发人员去设计、实现。那嵌入式bsp开发人员都在做什么?除了调试多种多样的外设,替硬件擦屁股,就是解些稳定性的bug了(这里对具体工作不详细描述了,调试外设只会增加一些经验,增加广度,对提高深度贡献不大,只是按不会调试-》会调试-》调试的快这个路线发展,而解稳定性问题确实是需要一些积累经验)

嵌入式上的应用开发,一般业务逻辑比较简单,被很多人忽略,所以招聘方也会感觉没有什么必要找架构师级别的了。

至此感觉嵌入式行业的确不需要架构师,被互联网行业的鄙视也没什么大惊小怪的。

但的确是这样子的吗?对于嵌入式底层的开发,有能力对kernel、驱动架构提出架构层优化的,国内的开发人员应该不多,所以对于大部分普通人,还是不要“妄想”做Linux kernel的架构师了(当然我相信国人中一定存在有这个能力的大牛),发现,解决一些bug,到更靠谱些。

那么对于嵌入式应用层的开发,我们真的不需要架构吗?

以自己的实际经历讲述下曾经对一个嵌入式设备应用软件的架构设计和优化:我曾经接手过一个项目,项目采用单进程多线程的模型,项目中包括几个模块,以a, b, c, d,e代表。这个项目的业务逻辑决定这几个模块有不少关联。

例如:最初的设计中a模块是一个状态监测模块,它会基于监测到的状态调用b,c模块的接口实现一些功能(多线程的好处就是直接调用很方便,所以开发人员大多这么干,简单粗暴)。但是需求总是千变万化,加入一个f模块,f模块也需要对a模块监测的状态进行一个处理,按照之前的套路,完成这个功能分两步:

在f模块提供接口。

在a模块中调用该接口,至此新需求已经“完美”的解决了。

前面提到需求总是千变万化的,新的需求又来了,客户提出定制需求,需要加入另一个g模块,同样处理a模块监测的状态,但是该定制需求不需要刚刚加入的f模块,此时最简单粗暴的方式是,定义一个宏,区分该定制需求和之前的通用需求,build两个程序版本。这样的做法看似简单,但后面如果定制需求逐渐增多,维护这么多定制版本程序就是个噩梦,代码管理和通用性也会是很大的问题,同时代码中充斥着对不同宏定义的差异化处理。

比较好的做法是加入设备型号版本的动态监测,用一个build程序版本动态支持所有的定制需求,这样减少了对不同build程序的维护。但是这种做法只解决build程序的版本维护工作,没有解决宏定义差异化处理的问题,只是会将之前的宏判断,改为动态设备版本号判断,如果这些差异化的判断只集中在一处进行,也不会引起大的复杂化的问题,但显然这个不好保证,有可能这些差异化的处理会蔓延到整个项目的各个角落,这样项目维护起来就会变成一场噩梦。

不需要什么高深的软件思想,大部人都会想到把差异化的部分提取出来,放在一个统一的地方集中管理,对差异化的修改只集中在这个统一管理的地方。

通用做法就是采用callback设置钩子,然后在callback中定制差异化的需求,对callback的处理做差异化的配置,对应到上面例子,就是在a模块添加一个钩子,然后在系统初始化时,根据设备版本号的不同,差异化定制callback处理函数,同时要将这些定制callback处理函数放在同一地方处理,否则仍然分散在各个角落里就没有意义(前一种方式不放置钩子是无法将这些差异化配置放在一起的),这样处理带来的另外一个好处是,我们对功能性需求的改变,不会影响到a模块的处理,也就是我们添加功能,不需要修改a模块的代码了(前一种方式要修改a模块的调用流程),这样也就实现了一个模块的分离。

至此第二种的方案的架构(其实也谈不上架构了)相比第一种方案已经有了不少提升,至少让开发人员稍微轻松了些,对于其他定制需求,开发人员之需要修改这个callback处理,关注差异化部分就可以了。

软件是需要不断进化的,第二种方案是最优解吗,当然不是,还有优化空间吗?

下面先跑个题,谈谈多线程/多进程模型的优缺点,主要谈多进程的优点了:

教科书上的解释就不提了,首先我对大的项目是推崇多进程模型,无关性能,主要原因有:

换一批

延伸阅读

[行业资讯] 赛普拉斯与海力士携手组建NAND闪存合资公司

赛普拉斯与海力士携手组建NAND闪存合资公司

全球领先的嵌入式解决方案供应商赛普拉斯半导体公司(Cypress Semiconductor Corp.)(纳斯达克代码:CY)日前宣布,与海力士半导体公司(SK hynix system ic, Inc.)成立合资公司。协议约定在前五年中......

关键字:NAND闪存 嵌入式 存储产品

[行业资讯] 赛普拉斯公布2018年第三季度财报

赛普拉斯公布2018年第三季度财报

全球领先的嵌入式解决方案供应商赛普拉斯半导体公司(Cypress Semiconductor Corp.)(纳斯达克代码:CY)发布2018年第三季度财报,亮点如下: ......

关键字:赛普拉斯 嵌入式 NAND闪存

[行业资讯] 齐聚深圳、嵌入式专家研讨人工智能时代发展机遇

齐聚深圳、嵌入式专家研讨人工智能时代发展机遇

近日,嵌入式系统联谊会第23次主题讨论会就这些问题,邀请业内知名专家和学者做了深入的探讨!本次会议由嵌入式系统联谊会、深圳北航新兴产业技术研究院主办,深圳北航物联网研究院、物联网咖啡承办,北京航空航天大学出版社、泰智会共同协办。主题为”人工......

关键字:嵌入式 单片机 人工智能 嵌入式系统

[行业资讯] 晶心科技再创里程碑 累积授权合约数突破200份

晶心科技再创里程碑 累积授权合约数突破200份

晶心的销售市场涵盖臺湾、美国、日本、韩国、大陆、欧洲等地,代表晶心科技的产品与技术获得全球客户的肯定。 ......

关键字:晶心科技 IPO 嵌入式系统

[行业资讯] 赛普拉斯发布2017年四季报和年报

赛普拉斯发布2017年四季报和年报

嵌入式解决方案领导者赛普拉斯半导体公司(纳斯达克代码:CY)近日公布其2017年四季报和年报。 ......

关键字:赛普拉斯 嵌入式 PSoC®6微控制器

[趣科技] 厉害了!这款咖啡无人机能配送,还能预测何时想喝咖啡......

厉害了!这款咖啡无人机能配送,还能预测何时想喝咖啡......

北京时间8月23日早间消息,IBM刚刚获得了一项咖啡无人机专利,不仅能配送咖啡,还可以预测某人何时需要咖啡。根据IBM提交给美国专利和商标局的文件,这款设备可以用在办公室、咖啡厅或活动现场,将预订的咖啡投递送......

关键字:咖啡 无人机

[疯狂史] 忆当年硬件开发梦:就俩字,TM青涩!

忆当年硬件开发梦:就俩字,TM青涩!

此文仅献给那些刚刚踏上硬件之路和还在徘徊的同学们,在此我简要的记录了我的学习经历和其间自己所获的一些心得,以帮助初学者少走弯路。......

关键字:硬件开发 硬件学习

[真心话] 电子工程师安身立命的八大看家本领,你学会了几个?

电子工程师安身立命的八大看家本领,你学会了几个?

作为一个电子工程师(electronic engineer)必备技能:抄板,焊板,画板,仿真,编程,调试,创意,坚持。八大技能,你几级了?......

关键字:电子工程师
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14