【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
随着经济越来越走向常态化发展,将来的公司基本是两个趋势,一个是公司越做越大,越来越趋向于垄断;另外一方面,公司越做越小,可能2-3个人就能开公司、做产品、搞营销。就拿linux来说,从前的linux soc开发可能很复杂,将来不管是芯片公司,还是硬件设计,其实一个人,多一点,1-2个人肯定是可以开发产品的。

1、选择集成化程度高的soc
大部分soc都是运行linux,在这个基础之上跑ubuntu,或者是android。不过如果人数不多,可以选择集成化程度高的、可以定制image的、价格合适的soc,比如内置ddr的soc。一方面门槛低,另外一方面比较好上手,能做的东西多。
相比较mcu,soc生态丰富,cpu频率高,特别是音视频和网络,优势明显。
2、购买板子
本着先软件,后硬件的原则,一开始的时候不要自己做板子。买市场上相同soc的板子,如果没有,买类似的板子即可。起初一定要降低难度,先迈出第一步再说。
3、安装好交叉编译环境
我们自己的电脑一般是跑windows系统的,开发的时候通常需要交叉编译环境。这个时候要学会用virtualbox安装交叉编译环境。编译uboot、编译kernel、编译rootfs,生成image之后,再用厂家提供的上位机软件烧录进去,这就算完成第一步了。
4、编写第一个程序
第一个程序可以是hello world,可以是qt,根据自己的实际情况来。用交叉编译完成之后,再用tf卡拷贝到板子上,如果跑起来,代表应用层没问题,下面就可以正式进行开发了。
5、驱动用到哪个做哪个
常用的linux驱动其实不复杂,一般就是key、uart、gpadc、pwm、tf、屏幕、网口这些。很多的soc厂家,默认都带了这些驱动。就算屏幕这样的驱动,也是可以根据厂家的demo进行修改的。当然,屏幕本身特殊一点,不仅需要soc厂家的帮助,还需要屏厂的支持。
现在的驱动开发不复杂,主要就是看menuconfig、dts和dmesg,如果实在不行,就去看一下驱动代码即可。厂家有芯片手册提供还好,没有的话,只能自己去慢慢扒了。
6、第三方库添加
常用的第三方库,最好自己会编译,比如boost、opencv、qt、lvgl、xmlrpc、lua等等。不会编译,厂家如果已经提供了对应的sdk,那也是可以的,这样我们就可以直接借助于厂家的sdk进行软件开发,不需要从0到1做起。
7、芯片特殊的sdk内容
很多soc有特殊的sdk,特别是硬件加速部分,这部分一般都是不开源的。不管是底层的ko驱动,还是上层的so、.a库,我们可以参考它们提供的文档和代码,一点一点去坑,最终才能把soc的特色功能挖掘出来,而不是简单的linux编程,这就没意思了。
8、重点放在核心应用上
不管是硬件也好,软件也好,本身都是为产品服务的。硬件是平台,软件是实施手段,产品才是最终目的。多去看看市场上什么产品卖的好,自己能不能做。如果能做,应该怎么做,怎么推广。一开始不用想那么多,一步一步去实现,就会慢慢发现自己其实路走了很远。
以应用为出发点,硬件、驱动、第三方库都是随时可以修改的。
9、先实现再优化
开发的时候,用git把代码管起来。很多功能,先实现,再优化和测试。**完成比完美更重要,特别是一些常年销量比较高的嵌入式产品,肯定有一些槽点是一直没有解决的,这部分就是个人开发的机会。**技术本身,只是手段,不是目的。