嵌入式开发完整流程

1.硬件选型和价格:
SoC主芯片:手机的一般在30~70RMB。旗舰芯片如高通骁龙820在240RMB。手机芯片主要分为通信处理器(BP)、应用处理器(AP)
屏幕:7寸显示屏带电容触摸板100RMB左右。手机屏幕30~120RMB之间。
芯片选型:1.各功能要满足,图形蓝牙音频功耗等等各种,2.易开发程度,3.工业级,车规级(通过各种车规测试)
相应的每款芯片的datasheet开始最醒目的位置都会有一个简介和feature list,包括器件的供电电压,电流,功耗,资源,封装信息等等基本内容,通过这些内容我们就可以快速的明确芯片功能和使用领域,确定芯片是否能满足项目需求。以此来进行快速的筛选,完成选型工作。
例如需求需要支持多高通信速率,能否支持。最简单靠谱的选型方法,就是看相似量产产品用的芯片是什么,拿过来参考。
目前主流的芯片:
ST公司STM32:ARM架构,广泛用于工业控制
Renesas公司V850:V850是一个不同于ARM的架构,有一系列芯片用于不同用途,比较适合用于电机控制,以及处理CAN总线协议,用途如下图。但是价格很高,几美元到几十美元一片。汽车HU上用的大概5~6美元。

蓝牙芯片:Bos:低端802.11ac Cypress CYW89459,高端802.11ax:Marvell 88W9098A。
所有芯片选型参考VCU。
公司的选型,是采购先提供一系列供应商名单,然后供应商给出相应的芯片型号和特性说明,然后研发来选择

2.硬件电路设计
电路设计2周,开发板投产2周,验证工作1周
如果有大的设计问题要重新设计投产再走一个周期。小问题就硬件自己把开发板rework一下

3.底层软件(kernel)
也就是驱动层,对芯片上硬件模块直接操作的那一层代码。
做通用大型应用的MPU(也就是装Linux系统的,例如手机芯片)芯片厂商,对于B2B的项目都提供了完整的驱动、内核和技术支持,我们只需根据需求稍作修改或定制即可。驱动是跟Linux系统匹配的,例如linux的uBoot和filesystem。
做简单专用控制的MCU芯片厂商都会提供一定的驱动代码控制各种寄存器和硬件外设。例如定义了芯片内的各种地址、地址转换,startup.s汇编代码(芯片的上电初始化启动程序,里面会走到我们的main.c),串口UART,SPI等。有的还提供CMSIS库、RTOS。我们可以在此基础上对驱动稍作修改、匹配,就可以在上面开发App调用驱动实现功能了。
芯片公司提供的kernel,一般会一段时间Release一个新版本,修改了一些bug和增加了一些功能,同时会出一个ReleaseNote告知做了哪些修改。我们一般情况需要做一下rebase使用这个心kernel,如果不想做,可以看下ReleaseNote修改是否对我们没有影响,没有影响可以不做rebase。
硬件和底层软件可以找那种做硬件的小公司做,从芯片到电路板到驱动都能提供好。
如果自己做:
BootLoader大概需要1个人力

4.Platform
对于大的产品例如车机,往往会分平台和项目
platform概念:是在linux内核之上的,例如Sybian/Android/Ios/Ubuntu都是linux内核上的platform。Genivi就是车机上的platform。
我们用的是ADIT公司出的,是多厂家合作推出的开源的,成本比各自独自做平台的成本低很多(10元/台)
各电子设备的功能都是相似的,为何采用不同的platform:本质的区别在于用户场景,1.输入方式,2.可靠性要求(所以车机软件都精简高效),3.使用环境(高低温等)
Platform为App提供的基础性SDK:HMI/Input, Audio, Vedio, LCM。各platform基本都要提供这几个SDK。
平台与应用的区别
INC的惨痛教训。
1.平台代码追求的是稳定,需要周密的分析和大量的压力测试、自动化老化测试、异常case测试来保证稳定。因为一旦出了问题那就是大问题,开不了机关不了机重启系统崩溃等等。
2.平台代码要尽量简单清晰,少而精,少用设计模式等,避免复杂的异常case
3.中断也会打断执行顺序,INC队列的惨痛教训。所以中断中千万不要做复杂的操作尤其是访问全局变量,也不要调用任何函数。一定要小心中断对执行时序的影响!!!因为它是可以在任意代码位置打断现有执行的。
平台的调试方法:一般很难用现场调试,因为会涉及到开关机和重启。通用做法是加Trace和errmemory这样的记录,来看和分析。

5.App(可能会再分中间件和App)

6.UI
可以用视频软件制作效果视频:AdobeAftereffects。生成.aep文件
PSD--Photoshop Document,Photoshop专用格式,.psd文件。
UI的资源部分可以找专门的设计公司来做,会漂亮很多,大概800块一个页面。

7.集成
大约需要1个人力来做集成,主要工作如下:编译环境构建,每日构建,版本发布和基本功能测试

8.测试
平台测试:
质量相关的测试:DVtest

9.生产
TestManager:在生产时产线会在末端进行出厂测试,自动化的,需要软件系统配合,来检查硬件正确性。TestManager是一个框架。

10.认证 蓝牙认证,苹果认证,Wifi认证等等。所以遵循第三方标准协议和其他设备交互的,都需要认证。大部分认证是外包给专门做这个的公司。 Wifi认证:Bos外包商Cetecom, Wipro Technologies. USB认证:Bos外包商eurofins