嵌入式开发硬件平台的最新趋势与挑战

发表时间: 2024-06-05 11:02

我认为在嵌入式环境中的 Linux 和 ARM 架构的情况下

一个健康完整的嵌入式项目应该包含以下语言:

(我自学了C++大约2-3个月,熟悉了对象编程和语法。我没有详细研究C++11库。)

(学习makefile大概需要一周时间,加上日常的shell应用)

(大概用了一个月的时间完全掌握shell的基本语法,又用了一个月的时间深入学习,包括正则表达式的学习)

(Python基础语法及应用1个月)

(JavaScript、jq、html的使用和使用大概2个月)

(汇编arm架构,大概只需要1天时间看完)

(学习C语言需要很长的时间,每天都要学习,包括Linux的系统API、网络编程与算法、内核的阅读与学习以及初中高级的Linux运维知识。虽然C语言语法简单,学习时间短,但是后面的内容需要花费很多时间去学习)

我先说一下我的学习历程:

先学了C,然后在日常C学习的基础上,学习了Linux运维知识,然后是shell,然后是Linux系统编程、驱动编程、高级系统编程、Linux内核知识。无聊的时候就用C++或者Python来换换口味,实在无聊的时候就学点前端的东西,虽然不合理,但是很充实,所以也没空。然后把基础知识反反复复的看,深入拓展学习复杂的知识。最后无聊的时候就学了makefile,刚开始很难,但是发现了和shell的关系之后就变得好学了。如果觉得没有合适的项目可以学习和练习,就学Linux上的C开源项目和内核代码,然后基于这些改写和扩展公司原有的工程项目。然后学了开发板(也是硬件协议接口),不过都差不多,关键是资料是否齐全,越全学得越多。 初级的树莓派,然后就是xilinx板子的学习,什么机器学习、神经网络,我根本就没打算去做,太高级了,不是我这种凡人能搞定的。

(所以从时间成本上来说,需要投入很多的时间,比单纯学习Java要多得多。按照最低时间成本来算,学习这些东西大概需要1年左右的时间。其他语言可以入门,C语言应该可以精通。这些语言虽然有对象方法等等,但是其实本质上都是基于C的,如果C基础好的话,时间会缩短。所以C、C++工程师稀缺是有原因的。这还不包括对各种硬件协议接口、芯片数据手册、公司已有项目工程、Linux命令行源码的学习。)

(不管硬件有多好,底层一定要用C,因为它最接近机器语言,效率高。其次就是Verlog,FPGA开发用的语言【FPGA开发,建议研究生以上学历,有完整的电子电路知识】)

我也粗略看过那些培训班的视频,不是说教学不好,只是更多的是讲一些硬知识,没有去思考内容。所以在校学生如果条件允许,就应该做这些事情,会比培训班毕业的人基础更好,理解更透彻,可能会走得更远。所以很多大学里的人没有接触过这些,是一个巨大的遗憾。

C语言是最好的嵌入式开发语言,用于最底层的驱动开发。那么问题来了,为什么不用C++来做最底层的开发呢?

第一点是运行环境的问题,如果运行环境是C++的话,消耗的资源比C稍微多一点。

另一个困难的发展

并且

底层逻辑多为程序化,用C比较合适,C++有点大材小用,C++作为应用层,用于GUI界面和简单的嵌入式服务器开发。Python很适合,理由同上,但是开发简单,维护方便,可以调用C的动态库。

我认为趋势是C底层+python应用,而目前ADI的驱动应用,采用的方式是JavaScript,HTML,JavaScript查询,主要是针对web配置页面的搭建,理由同上,但是web服务器目前多采用boa和浏览器交互的shell语言,对于嵌入式开发来说,不精通shell有点说不过去,linux编程提供的API接口大部分都是和shell的用法一致的,Makefile项目管理,精通使用,结合shell脚本使用Makefile,换句话说,越精通shell,就越能熟练使用makefile

以上关于C++的学习完全看个人,因为确实比较复杂(我只看了C++11标准),但是其余语言如果不了解的话,也是学不来的。哦对了,还有一门娱乐脚本语言,vim脚本语言,有兴趣的话也可以看看。

所以从时间成本上来说,至少需要1年才能看懂,剩下的就是2年的深入学习和项目经验的积累。所以学习嵌入式系统至少需要3年。这也是我咨询过的一个完整的开发团队给出的结论。但是如果你大学做了4年,还去读了硕士,说实话,你毕业的时候可以去一家做嵌入式系统开发的非常好的公司。

书籍推荐:

京东百佳Linux书籍及嵌入式书籍(不考虑图灵系列及人民邮电出版社等出版社出版的书籍)

翻译水平不如这两家出版社,另外国内开发者出的一些书质量有限,不推荐,有能力的还是直接看国外原版书吧。)

(此东西就像游戏卡带,越买越上瘾,请理性消费)

最后总结一下:这里要跨越的山山水水,大家最好做好准备。