在功能确定以后,可将嵌入式软件开发分为以下几个阶段。
阶段一、关键技术点试验与验证
针对,有些点在之前的项目中已经验证过的、可可以不必一一编写程序验证。(为了稳当点、最好还是,把各个技术点列出来一个表格,写出来可能性能需求,以及验证后的结果),该阶段要考虑以下几点。
1、中间件的验证
中间件是从外部获得的一些软件包括协议栈、辅助数据接口(链表、循环队列)、系统等,往往需要验证其可靠性、以及接口功能情况(例如不同蓝牙协议栈的广播函数接口,有的需要指定广播包,有的需要同时指定广播包和扫描相应包),可提高开发效率。
协议栈会用到lwip、tinyusb、minble等一些开源的协议栈;系统可能会用到rtos、osal等;其它组件会用到fts、循环队列等。
2、硬件验证
对iic、i2s、spi、gpio、spi、uart、gpio、中断、定时器、cpu、蓝牙、Wi-Fi、2.4g、flash、eeprom等可能用到的硬件编写例程,测试验证它们的功能、性能、功耗能不能达到设计的预期要求。(虽然,有时候会不充分,但至少可以减少一些问题)
3、关键算法验证
通常在开发过程中,会遇到一些复杂的数据处理算法,例如imu、ahrs、卡尔曼、fft、语音识别、神经网络、运动控制、以及相关专业的处理算法,需要验证其在芯片上的运行时间、精度等可能存在的问题(例如,有的算法在片上运行需要裁剪优化等等)
最后,这三个方面,有时会互相杂糅在一起,根据具体的产品方案框架来制定自己的计划。例如文件系统,就往往基于外部flash、而外部flash需要基于spi总线,可根据实际情况直接对写一个文件系统验证例程来验证。
阶段二、标准化编程
其实对于嵌入式产品,上述的验证后,技术研发阶段基本就完成了,可根据需求规范确定完整的详细设计规范,后边基本上就是编码、测试等体力活。给出编码规范(也可以不给)。即可对整个系统进行编码是实现(一般都是,先对各个模块定义一堆.h文件写清楚每个函数的功能、输入、输出,在.c中一顿实现)。
然后按照常规套路,再进行测试验证,性能优化即可。
阶段三、转产
嵌入式软件,往往需要下载到对应的硬件中。会遇到批量生产下载问题。需要按照相关的规范生产生产文件,并配套生产下载时相关的工具(jtag、usb转ttl等硬件,jflash、串口助手等软件),必要时该要给出操作文件、以及进行相关的培训。
对于一些产品,还需要在产品程序中添加一些生产自检、配置等工序相关程序,以及配套交互文档。
结语,在嵌入式开发的三个阶段,针对阶段一只能通过用熟悉的接口、芯片、中间件提高效率,因为如果用到新的就需要去验证研究(切忌,拿过去类似的经验来想当然的“感觉”当前的也可以)。第二阶段,基本就时拼的编码熟练度;如果,之前产品有成熟的转产方案,最好拿来直接用,这样可以减少对生产人员的培训,可减少很多风险。
注:后面的等总结好再写。