跟涛哥一起学嵌入式 25:我接触过近50块嵌入式开发板,分享一下教训和总结...

最近老是有学员问我:涛哥,你的嵌入式教程针对哪款开发板鸭?到底使用哪款开发板学习?我的回答往往是:暂时不用开发板,学习嵌入式,不一定非得用开发板,在qemu仿真平台上学习就可以了。3年前我发布了互联网上第一套《使用QEMU搭建嵌入式U-boot+Linux+NFS学习环境》的视频教程(现已部分免费分享到B站),三年来累积了大量学员,也收到了很多积极反馈和建议,现在也吸引了同行去基于QEMU开发教程,这也从侧面证明了当前的学习思路是不错的。为什么没有着急选一块开发板,基于这块开发板开发教程,而是使用QEMU呢?这还得从我的嵌入式学习经历说起。

我到底玩过多少开发板?

我学习嵌入式是从51单片机入门的,课程学完后自己买了一块51开发板,刚买回来那叫一个新鲜,跑马灯、数码管、LCD屏、蜂鸣器、LED屏、串口、I2C…统统玩了一遍。然后就没有然后了,就扔在一边攒灰了,只是偶尔当当烧写器使用。因为当时有一款学习单片机的仿真软件叫proteus,可以直接在上面设计电路,写程序,仿真效果跟在实际开发板上一样,而且不用在电脑上插各种线,仿真库中各种外围器件、模块应尽应有,使用非常方便。

v2-d680c32bd960aacc308f7f127d9fd668_b.jpg

当时觉得单片机的USB下载和调试接口很玄幻、很有意思,想研究下,于是自己又买了一块51单片机USB学习板,我记得开发板是成都的一个电子工程师自己做的,一个很小的开发板再加上配套的USB教程和源码,学到了很多知识,知道了什么是USB,什么是HID、什么是复合设备,如何模拟鼠标键盘。这是我购买的第二块开发板。

后来自己又用面包板焊了一块,还额外焊了一个多路电源适配器,可能整流电路中的滤波电容型号没选对,电容爆掉了,害得其中一路9V的电源无法使用,但也算是领略了硬件设计的门槛。

那时ARM9刚刚流行,在当时算是高端了,学校实验室里的开发板是基于ARM7的,无法跑Linux,但可以跑uC/OS。第一次接触了OS,多任务例程跑一遍,自己模仿着写了一个demo,感觉很玄幻,觉得找到了自己的兴趣和方向。

读研后,选择了嵌入式方向,实验室里都是使用自己研发的处理器做的开发板,ARM720T内核,虽然是ARM7,但是带MMU,可以跑Linux,是不是很玄幻?自己就是从这块开发板入门Linux的。

v2-3d1abb66bbc492c19e1b360ce71c31e1_b.jpg

后来网上有个STM32开源项目很有趣,自己一咬牙,又入手了一块,在上面移植uC/OS,做个电子书、听听音乐,感觉很有趣

后来又买了一块ARM9开发板,NorFlash坏了,烧写程序一直不成功,折腾了一个多月,拿回厂家换了一块NorFlash芯片就好了,然后开始混迹于各大BBS论坛,别人开发板上的好玩的东西都试着移植到自己开发板上,热心分享和网友交流…

由于项目和科研需要,实验室里自己研发的处理器,各种开发板肯定也是都玩了一遍,基于自主国产内核的开发板…

工作后进入一家芯片公司,做平板、电视盒子SOC芯片,从事Android/Linux下的驱动开发,当然更会接触各种各样的开发板、不同处理器型号、不同版本,Nano板,发现开始对开发板麻木了…

每天的工作就是解决不同开发板、不同处理器上的bug,不停地搭建环境,不停的下代码、编译代码,升级系统。接触的开发板和客户平台不下于20个吧…

v2-9ff1d1f51dfecc36f4a7532356a2fae7_b.jpg

期间也接触了很多国外开源的开发板,如熊猫板、beagle等,作为参考之用。

后来换了平台,做手机芯片平台的驱动开发,每天接触不同厂家的手机开发板,不同处理器的开发板,估计也有20多个吧。

v2-668b98de7deffeca5e7afd2e5a7d88a9_b.jpg

带翅膀的手机,是不是很有喜感?不会飞的,是调试接口,调试用的。手机调试相比开发板调试,还是比较麻烦的,编译Android镜像,USB烧写升级,重启,重现,抓log,分析log…,一个流程下来,得20分钟。期间也参与了芯片测试、Android系统移植搭建的工作,在一块环境更加苛刻的FPGA开发板上,要跑CPU软核镜像,然后跑Android,各种时序问题,调试更加费劲、艰难。

期间有了工资收入,囊中不再羞涩,开启了开发板买买买之路,树莓派、cubieboard、智能硬件…

你是否已经掉入了开发板陷阱?

接触了这么多开发板,我成为了嵌入式高手 了吗?

NO!也许对某些模块或者业务很精通,相反,我感觉自己得了“开发板厌食综合征”,每天不想再看到开发板。真正的高手早就脱离开发板了,嵌入式产生真正价值的地方也早已不在硬件上,而是在硬件之上。每天接触这么多开发板,来回反复地搭建环境,就感觉同时跟几十个人谈恋爱,没有时间和精力去深入了解每一个人,走马观花般地吃吃饭,交换交换名片,每天干完活,算是完成任务。了解一个人,需要时间,想要深入了解一个人,更需要时间。开发板也是如此,如果你是做项目,无可厚非,你必须去了解某个平台,深谙它的每一个硬件特性,然后使用软件去压榨出它的最后一点性能。但是,如果从学习的角度上讲,不停地换平台,追逐最新最流行的,四核换八核的,你会发现,你的大部分嵌入式学习时间都花在了熟悉硬件平台上,跑跑简单的demo、搭建搭建环境,运气好顺利的话,可以很快完成,运气不好,各种兼容性、硬件问题,如果你手里没有调试工具的话,一个小问题把你卡在那里半个月没脾气都很正常。如果你是一个学生,手头没有专业的硬件调试工具,一味地追逐最新硬件平台,我觉得已经掉入了开发板的学习陷阱。人的时间和精力是有限的,疲于奔命地凿了100口浅井,不如沉下心来,好好地挖一口深井,大道至简,很多道理都是相通的,吃透了一个,其它的也就触类旁通了。否则,你就是买了一个又一个地铁锹,铁锹商带着你随便凿两下,学会怎么用,然后人家又开发出新的铁锹,鼓励你再去买新的铁锹,凿新的井。

未来的课程怎么录?

嵌入式学习个人认为,可以分为三个时代。

  • 个人英雄时代

早期的单片机、MCU比较简单,硬件软件通信协议可以全部自己做。最理想的场景是躲在一个小黑屋里,光着膀子,一个人做完全套,等你走出小黑屋,在别人眼里就很牛X了。

  • 开发板时代

随着SOC上集成的IP模块越来越多,一个人想要搞通软硬件,甚至搞通整个Linux、Android也是不现实的,嵌入式开发进入分工时代:软硬件分工,底层驱动与上层应用分离。此时学习嵌入式软件开发的流程一般是基于某个开发板,移植U-boot、kernel,搭建好环境,然后按部就班的学习。

  • AIOT时代

嵌入式、物联网、人工智能、云、大数据越来越融合,进而构建不同的应用场景。此时再拿着不同的开发板学习已经过时了,市场需求和划分越来越细化,越来越多的CPU和开发板涌入市场,不断地更新换代。上百种CPU、上千个开发板,你打算都买来学一遍,就像旷工一样,不停地买铁锹,不断地凿第100口浅井吗?

随着物联网、AIOT时代的到来,会涌现出越来越多的平台和生态,未来的关注点已经不在开发板本身,而是接口、互联,当越来越多的成熟平台和方案趋于标准化,甚至去构建一个大的生态,以及业务新需求将会对嵌入式工程师的技能产生新的要求。

还有一个趋势就是CPU的开源,CPU的架构越来越多,从ARM、MIPS到RISC,平台差异、架构差异,也导致硬件学习成本越来越高,

未来的嵌入式学习,将会进入后开发板时代,你学习的技能要想不很快被淘汰,就要适应开发板、适应CPU不断升级迭代、细分的现实。沧海桑田,哪些技术转瞬即逝,哪些技术一直在用?哪些是核心技术,哪些是跨平台的技术?我们学习嵌入式也要转换思路:你不是学习某个开发板,不是基于某个开发板填鸭式学习,而是学习某个技术要用到某块开发板做实验、去验证它。

这就是我的视频教程录制思路:教你如何凿井,凿井的方法和技巧,将以前的开发板经验进行提炼,总结成核心技能分享给你,视频教程和技能可以通吃和适配不同的开发板和平台,是跨开发板的,只要你手头有开发板,吃透教程,在你的当前环境下就可以学习了。而不是不停地换平台,一次一次兜售新的铁锹给学员,去凿一口一口的浅井,给学员增加学习负担不说,关键是摊子铺大了,又学不到什么干货,进而陷入不断凿浅井的循环。未来的嵌入式学习肯定是要做减法,学真正有用的,不涉及到具体的项目一般都是可以脱板学习的。

使用QEMU搭建嵌入式U-boot+Linux+NFS学习环境视频教程免费分享:

哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宅学部落-王利涛

just for test

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值