凡亿专栏 | 什么算是嵌入式全栈?
什么算是嵌入式全栈?

这两天有小伙伴问我,如何才能做到嵌入式全栈?我用visio软件画了一张图,为大家讲解。

1b947a99b6c535cfb261dd59720a31.png

此图为博主认为的嵌入式全栈,从硬件到软件全套技术栈,我们“从下往上”讲解。

1、首先是需要有原理图库,可以自己画,也可以从别人那里拷贝。有了原理图库,就开始画原理图。画原理图需要你有很扎实的电路、数电、模电、电力电子基础,需要会设计电路原理,需要会器件选型,熟悉芯片的最小系统,熟悉常用的电源电路,熟悉基本的滤波电路和运算放大电路。

2、原理图画好了以后,开始画PCB板,Printed Circuit Board,印制电路板。画PCB板子,首先是根据选型的元器件,查看元器件的数据手册,根据元器件真实封装大小画出PCB元器件库。有了PCB元器件库,就开始画PCB,画PCB需要你懂如何走线(比如不可以走直角),如何进行强弱电分离,如何避免电源对信号的干扰,如何处理EMI、EMC,如何对高频信号进行蛇形等长走线,专门干这个的叫layout工程师(有时候还需要画多层板,更难)。以上两步常用的软件有AD、PADS、Cadence Allegro等。

3、PCB画好了以后,发给厂家打板生产,板子回来以后,进行焊接。焊接也是一个技术活,最难的是焊接芯片,其他元器件都好焊。比如简单的100引脚的QFP封装,会焊接的人可能几分钟焊完,不会焊接的人半个小时焊完,引脚还没对齐,大量虚焊。所以焊接技术是需要有人指导,多多练习的。(自动化打板就不需要自己焊接,但是一开始你就试产几块板子,厂家可能不会理你)

4、板子焊好以后,就是进行软硬件联调,软件对一个IO口进行输出高电平,你硬件没反应,肯定是你没焊好。软硬件联调是比较耗时间的,会找出很多问题。

5、当板子硬件没问题以后,就会一直在软件工程师手中。如果是单片机工程师,就在开发板上开发单片机程序,如果是嵌入式Linux软件开发工程师,就在板子上玩起操作系统,写程序,编固件。

6、写完程序以后,一般我们会预留一些通信接口,比如串口、WiFi、蓝牙等,通过通信接口,我们可以和上位机进行通信。我们也可以用QT自己开发上位机,也能是java工程师开发的手机app,也可能是前端写的web网页。

走到这一步,基本就是嵌入式全栈了,上位机可以是自己开发,也可以由计算机的人去开发。

有了这些基础,你才可以像华为天才少年“稚晖君”一样,自己DIY硬件,自己DIY软件,自己从零做出一个东西来。当自己软硬件都懂的时候,你写代码就会非常踏实,而不会有空中楼阁的感觉。

硬件难还是软件难?

有的小伙伴可能想问这个问题,博主认为软件门槛低一些。

因为软件自学很容易,资料网上一堆,开源代码也很多,不会的就去学,遇到bug全网搜。

硬件却很难自学,一是硬件在网上没有那么多的开源资料,二是如果你遇见一个硬件的bug,网上你是搜不到答案的,除非有人带你。想学硬件,最好是加入一个实验室或者一个团队,手把手教你,如何设计电路,要避免哪些问题,上电之前要先测短路,要小心电解电容接反爆炸,电容电感应该如何计算,到底用多大,电路不通该如何排查,等等。并且团队已经积累了很多年的资料,有了很多成熟的电路,你直接学过来就好了。

所以说,软件三个月入门,硬件三年才入门。

博主自我介绍

杰仔读的专硕,研究生三年,一年时间在做硬件,半年时间在写STM32单片机代码,一年时间在玩嵌入式Linux,有一定的自主DIY能力。

在这里选取两个具有代表性的项目说明一下:

1、硬件+单片机:

cd05c3b6c07106ba17ac750fe0a10b.png

该项目的功能:检测电网电压和电网电流,根据公式计算出有功功率、无功功率、视在功率、功率因素,并且实时显示。如果无功功率不足,控制继电器投切电容器进线路,补偿容性无功功率(因为很多负载为感性负载)。

这个板子是博主设计的电路原理图,画的PCB,自己手工焊接,已量产。因为STM32F103VET6的AD不太准,所以用了一片外部AD,叫ADS8365,我们知道STM32F1单片机自带AD通道精度为12位,ADS8365精度为16位,并且有6通道。做了软件滤波算法后,检测出的电压和电流精度在千分之二(检测220V,显示219.43V),视频如下(电流根据客户要求乘了倍数):


2、嵌入式Linux:

博主曾经基于海思Hi3559V200芯片,开发过一款运动相机,其实也就是基于海思提供的SDK进行二次开发而已,很简单,系统为Linux+LiteOS双系统,主要在Linux下开发。

调用海思预留API,根据客户要求进行功能开发。这款运动相机是安装在无人机上面的,客户基于STM32单片机开发的无人机,板载我的运动相机,两者之间进行一些必要的串口通信。

运动相机硬件板由硬件工程师开发,我主要做软件开发,wifi模块为必联的rtl8192,最远支持80米左右的视频传输,手机app可以观看无人机预览视频流,采用RTSP推流的方式推送视频。摄像头为ov12870。下图为手持摄像头,在电脑上看预览视频流:

c64bc6f63c5f1a585c04973e4e964f.png

硬件上:博主画过四个项目的电路板(当然每个项目都会遇到几次迭代改版),熟悉常用电源电路、滤波电路、运算放大电路、芯片最小系统等。手焊过几十块电路板,进行软硬件联调。会用万用表、示波器分析电路故障。

软件上:熟悉C语言、熟悉STM32单片机开发、熟悉Linux操作系统,爱玩各种模块,现在主要做Linux内核和驱动。

·················· END ··················

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论