第一时间看干货文章
1
从个人的嵌入式开发从业经历(10年 )和个人体会来说,如果非要说做底层和做应用哪个好?我个人的答案是:适合你自己的技术栈范围就好,适合你自己的技术追求就好。不要非要争个高下,毕竟这两块是嵌入式开发领域的左膀右臂。你能说你的左胳膊比你的右胳膊好?还是你的右胳膊更优秀一点?所以说,适合就好。
先说下答主眼中的底层和应用开发的优缺点:
其次,解释下为何适合最重要:
这里举两个例子,大家可以自行体会:
第一个,当年答主因为创业节省资金问题,自己自学BSP和驱动。那段时间虽然过的充实(辛苦),但是也是咬牙挺了过来(差点崩溃)。毕竟你让一个做应用的人,从零基础去搞BSP。在产品进度要求紧张的情况下,很多时候出了问题都不知道看什么方面的书,往哪个方向调查。所以,让合适的人做适合的事情,才是合理的开发道路。 第二个,当年答主在华为,见证了很多试用期没结束就主动离职的社招程序猿(能力都是非常优秀)。其实原因很简单,就是我们项目组使用的技术栈,他们在过往的开发经历中不曾接触也不喜欢接触。来了自然而然的就很抵触,从而形成恶性循环到最后的一拍两散。所以如果努力方向,不是你的技术追求和兴趣爱好,那么仅仅靠工作为动力,迟早还是会回归初心的。 最后,还是建议大家从个人的技术兴趣爱好和技术追求出发,以个人的技术栈为范围,选择适合自己的嵌入式开发方向。 这里说一下简单的界定方法。例如:我们需要使用一款SOC的芯片,开发一款视频流媒体转发嵌入式产品。【其主要功能是通过接收的视频数据流(二进制H265编码流),根据配置进行视频媒体流的转发】 在上面的例子中:
底层开发工程师主要负责的是Linux操作系统的裁剪,SOC芯片的移植,外设驱动的linux系统开发。总结起来就是一句话:让SOC能够运行Linux系统正常的跑起来。 应用开发工程师主要负责在已经跑起Linux的SOC上,开发H265数据接收功能,数据流的转发功能,里面涉及到Linux操作系统的多线程,线程互斥,TCP/IP协议栈SOCKET通信等等理论知识。总结起来也是一句话:在Linux操作系统上,完成嵌入式产品的功能。
本文系网络转载,版权归原作者所有,如有侵权,请联系删除。