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

我到底玩过多少开发板?

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

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

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

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

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

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

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

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

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

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

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

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

带翅膀的手机,是不是很有喜感?不会飞的,是调试接口,调试用的。手机调试相比开发板调试,还是比较麻烦的,编译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

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

  1. 跟涛哥一起学嵌入式 第02集:工作还是考研?

    大家好,我是涛哥,今天我们聊聊第一个话题:工作还是考研. 工作与考研,是每个大三大四学生都要去纠结一下的问题,也是一个很难做抉择的话题.对自己的现状不满意,蹉跎了岁月,感觉自己学得不够多,没学到什么技 ...

  2. 跟涛哥一起学嵌入式 第06集:后ARM时代,嵌入式工程师的自我修养

    大家好,我是涛哥,今天我们继续聊一聊嵌入式的学习,由于最近比较忙,就把以前写的一篇文章重新发给大家,里面谈到的一些学习方法和学习经验,还是很值得参考一下的. 嵌入式学习的一些概念理解误区 很多嵌入式初 ...

  3. 跟涛哥一起学嵌入式 16:设计一款CPU芯片到底有多难?

    文章结构 导读 一颗芯片是怎么诞生的? 一款CPU是如何设计出来的? 设计一款CPU到底难在哪里? 导读 这几天,刷遍朋友圈的新闻就是:中兴被"一剑封喉",被美国停止一切芯片进口和 ...

  4. 跟涛哥一起学嵌入式 20:后ARM时代,嵌入式工程师的自我修养

    1 嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox ...

  5. 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...

    1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十六章 ...

  6. 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十八章 UCOSII 实验 3...

    1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十八章 ...

  7. 嵌入式linux物联网毕业设计项目智能语音识别基于stm32mp157开发板

    stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质.高性价比的Linux+单片机二合一的嵌入式教学级开发板.开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex ...

  8. 跟涛哥一起学嵌入式 31:深入浅出CPU流水线工作原理

    现在的CPU处理器一般都是超流水线工作,动不动就是10级以上流水线,超高主频,这两者之间有什么关系呢?今天就跟大家科普下CPU流水线的工作原理,以及他们之间的关系. 说到流水线,很多人会想到富士康:说 ...

  9. 跟涛哥一起学嵌入式 26:深入浅出计算机编码、乱码问题

    很多新手在编写程序.使用软件打开文档或者浏览网页时,经常遇到乱码显示.全角半角的问题. 网上也有很多解决的方法,大部分都是跟编码有关:比如Unicode.UTF-8.ASCII码.GB2312..., ...

最新文章

  1. linux php环境升级,php5.6升级到php7.1.10(Linux环境)
  2. SQL--添加角色权限
  3. html上传文件与后台处理,关于前端html图片和文件上传和后台接收方法
  4. 是啥意思_属猴人:十猴九苦是啥意思 十猴九不全什么意思 为什么
  5. cNoteReadFile_C语言读取文件内容
  6. PHP Ueditor 富文本编辑器
  7. 【STM32】FreeRTOS 调度器开启和任务相关函数详解
  8. 如何制作LINUX的patch文件及如何打patch
  9. 数据挖掘初次接触!学习代码
  10. springboot整合多数据源
  11. Java中static的作用详解_详解java中static关键词的作用
  12. 一万个“无序”数查找两个重复数,在O(N)的基础上再快一点
  13. ACS 4.2安装图解
  14. Python中的unittest模块(入门学习款)
  15. 留言板asp mysql,asp留言板(asp留言板源代码)
  16. java7 3dm下载_3DM游戏运行库合集安装包v2.8
  17. 密码编码学与网络安全(学习)
  18. html背景渐变蓝色,CSS3网页渐变色背景,适用于IE
  19. JQuery插件二--colorbox
  20. 蒙特卡洛的应用软件统计——小李子LC

热门文章

  1. nginx负载均衡之一致性Hash方式
  2. L1-7 谷歌的招聘
  3. 不讲武德,Kubernetes 弃用 Docker刷爆了网络,我们公司也慌了!
  4. 2022美亚杯第八届中国电子数据取证大赛-个人赛write up详解,软件就用弘连和美亚,尽量写的细致一点。建议入门看,仅为了解题,没有专业精神。专业选手去看后面推荐的两篇解析,都是大佬。
  5. 二叉树思想实现的计算器
  6. 软件架构设计之如何编排复杂多任务
  7. valine评论系统使用
  8. 荣耀路由pro没有虚拟服务器,荣耀路由怎么设置端口映射规则
  9. A_A02_004 J-LINK驱动安装
  10. 8本书助你了解人民日报“创作大脑”