嵌入式开发底层平台和应用开发一定要分开,即使这项工作是你一个人完成的也要注意分开设计注意模块化、API设计等。

1、底层平台构建

MCU也要注意底层平台构建,很多公司一款MCU给很多产品线用,如果每一个产品都单独开发势必要很多人力、物力。一般这样的公司都会成立一个平台组,专门针对某个MCU开发适合自己产品线的底层平台。不过要注意这些平台一般仅仅适用于自家产品,拿给其他产品用会发现实时性、可移植性都有很大问题。这类MCU底层平台构建如果再与Autosar等特定标准结合,构建起来工作量会更加大。

嵌入式Linux和安卓底层平台的构建,因为工作量大原厂和开发板制作商都参与进来了。笔者知道很多公司就是拿第三方的开发板构建的平台直接用,这样可以快速占领市场。第三方的开发板有些做的的确不错,比起自主开发省去很多人力物力。有些公司甚至整个平台都不改了,直接开发应用,开发板在应用层都提供了接口直接调用即可。比如提供一个so库就可以调用各种底层驱动库。安卓平台也是类似,最多改改framebuffer层。

2、应用软件的开发

1、MCU应用软件比较简单,一般平台构建时都会考虑应用的框架,带了RTOS的就更加简单了直接添加task就好了。

2、嵌入式Linux和安卓的应用开发最难,涉及很多要会makefile、shell、linux C、java等等。一般的嵌入式Linux应用包括启动shell脚本、一个单独的进程管理、多个qt应用。当然带了桌面系统的可能简单点,开机就启动桌面。安卓的情况比较特殊,从启动看uboot可以三跳——进fastboot、recovery、kernel和安卓部分,启动后framebuffer又可以参与某些配置,最后才到java应用层。