如何做好嵌入式项目?

Asandstar / 2023-07-24 / 原文

1   固件

固件:嵌入在硬件设备中的软件,通常通过下载器下载到设备中。

固件功能可包括系统、驱动、应用的具体实现。

2   固件方案设计

固件方案设计:一般在阅读产品说明书及硬件初步原理图后开始。

分两个模块:①确定方案系统②确定应用架构

完成后输出方案文档、系统框图、技术调研文档后评估方案。

2.1  确定系统方案

依据:产品功能复杂程度、硬件芯片外设资源→决定:有无操作系统

底层实现方案

2.1.1 裸机:不上任何操作系统。

适用:产品功能简单、需要处理的任务少

实现:用状态机轮询

好处:对设备主控要求资源少,代码简单,易维护

2.1.2 RTOS:实时操作系统

适用:产品功能相对复杂、任务多,对业务响应的实时性要求强

分类:FreeRTOS, RT-Thread, uCOSii 等等

选用RTOS的评估方法:团队成员对该RTOS的熟悉程度、该RTOS的资料丰富程度、费用、空间占用、功能满足度。

比较FreeRTOS

  优点 缺点
FreeRTOS相比uCOSii

1.内核ROM和耗费RAM(尤其)小

前者2~3k, 后者5k以上

2.可用协程共用STACK减少RAM;uCOS只可用任务

3.可有优先度一样的任务,按时间片轮流处理(可处理>64个);uCOS每个任务只能有一个优先级(只能管64个)

4.商业上免费;uCOSii商业上付费

1.更简单,任务间通讯只支持Queque, Semaphores, Mutex;uCOS还支持Flag, MailBox

2.支持更少,除操作系统仅支持TCPIP;uCOS有大量外延支持FS、USB、GUI、CAN等等

3.中等优化就会出问题;uCOS可靠性更高,耐优化;

2.1.3 Linux或Android

适用:有更好的交互体验、快速迭代产品(显示与交互:Android,底层处理和运算要求:Linux)

裁剪和移植:基于现有系统源码(由芯片厂家提供)做修改应用到你自己的产品中

eg.基于Linux开发摄像头,不需要显示→裁剪意味着把Linux的SDK中显示部分功能去掉或注释掉,再把系统固件重新编译、烧录

2.2  通讯协议

根据硬件方案需求文档确定

2.2.1 设备间通讯

可选用下方的,也可根据实际情况自定通讯协议

①Modbus:应用层报文传输协议,标准物理层接口有RS232,RS422,RS485和以太网接口,用master/slave方式通讯

控制器相互之间或经由网络与其他设备间通讯

工业标准!!!使不同厂商生产的控制设备可连成工业网络集中监控

②CANopen(基于CAN):应用层。

一个从站点一个ID号、一个数据字典、四种工作状态。

将CAN总线协议的通讯帧进一步封装、分类以满足高层次通信需要。

【注】CAN提供了所有网络管理服务和报文传送协议却没有定义对象的内容或正通讯的对象的类型,即定义了方法,没有定义对象。

故CANopen弥补了这里的空缺,其核心概念是设备对象字典(Object Dictionary),通过对象字典访问驱动器所有参数。

③ CANopen(EtherCat)

主站发送数据,整个网络或只有一个数据帧依次通过每个节点。

主站是唯一运行发送帧的节点,子站只可以转发帧。

类比~~~数据帧像火车,从主站开出,途径子站,把对子站的数据放下或带上回主站

优点:有利于确保实时操作、避免延迟。

2.2.2 物联网设备与服务器端通讯

智能硬件设备通讯协议模型

物联网适合发布/订阅服务,如DDS、MQTT、AMQP、JMS

特点:服务自发现、动态扩展、事件过滤

解决的问题:物联网系统在应用层的数据源快速获取、物的加入和退出、兴趣订阅、降低带宽流量、物联结在空间上(双方无需知道通信地址)、事件上和同步松耦合

DDS 智能家居的电力供给、发电厂的发动机组的监控
MQTT 电力线的巡查和维护
AMQP 家电里所有电器电量的消耗传到云端或家庭网关进行分析
REST/HTTP 用户公布自家能耗查询服务,开放API服务

可用一套协议完整实现整个链路,亦可根据协议特点进行具体业务模块划分

2.2.3 音视频流通讯

①RTSP发起或终结流媒体

对流媒体数据封包、实现媒体流实时传输

组成

头部(Header):前12个字节含义固定

负载(Payload):音频或视频数据

②RTP传输媒体数据

③RTCP对RTP控制同步

 

 

 

2.3  应用模块划分

 

2.3.1 主业务

 

2.3.2 监控

 

2.3.3 工具

 

2.3.4 网络

 

2.3.5 协议

 

2.3.6 配置

 

2.3.7 日志

 

2.3.8 加密

 

2.3.9 升级

 

2.3.10 自测

 

2.3.11 产测

 

2.3.12 数据

 

2.4  业务外部接口

 

2.4.1 外部接口/SDK

 

2.4.2 第三方库

 

 

2.5  其他设计

 

2.5.1 低功耗设计

 

2.5.2 雾计算引擎

 

2.5.3 内存泄漏监测

 

2.5.4 交互UI

 

2.5.5 深度学习

 

3 方案评审

 

 

 

4 注意事项

 

 

 

 

来源:如何做好 一个企业级嵌入式单片机项目?方法-流程-技巧介绍 【软件篇】_哔哩哔哩_bilibili