嵌入式平台中参数的思考与设计

提笔有因

程序是数据+计算,参数既是数据的一部分,又参与计算,是每个软件不可或缺的部分。
在上层应用中可以使用基于文件的ini、json、xml等参数功能接口,非常灵活方便。可在嵌入式环境中,由于资源的限制无法使用这些功能接口,需要另行设计,是一项有挑战的任务。

存储介质

常见的存储介质有内存RAM、片内FLASH、外部FLASH等。

  • RAM的特点是随机读写,按字节访问,掉电丢失,寿命长。
  • 片内FLASH的特点是按字节读写,按块擦除,掉电保存,寿命1万次擦写,损坏需更换MCU。
  • 片外FLASH的特点是按字节读写,按块擦除,掉电保存,寿命1-10万次擦写,损坏后需要参数重设。

FLASH存储设计

  • 上电加载
    设备上电后首先判断参数校验是否通过,校验通过则加载参数,不通过则初始化参数。
  • 数据备份
    FLASH的擦除是按块进行的,所以必须先备份再擦除后方可写入,防止过程中掉电,造成数据数据丢失。
  • 同步机制
    为了提高数据访问速度,通常会将FLASH数据加载到内存进行保存,在内存中操作参数之后,需要将参数同步到FLASH中。如未能及时同步,遇到掉电将会造成数据更新不生效。

数据类型设计

  • 存储类型
数据类型占用空间说明
BOOL1bit
INT1-4 Byte有符号整数
UINT1-4 Byte无符号整数
BYTE[]1-n ByteByte数组
  • 显示类型
显示类型说明
整数显示%d
十六进制显示%x
字符串显示%s
十六进制数组%02x%02x …

参数归类设计

根据参数掉电保存、修改频率、数据大小进行如下归类:

存储介质特点例子
内存RAM掉电重置日志开关
片内FLASH掉电保存/低频变更/小数据量IP地址
片外FLASH掉电保存/高频变更/大数据量最新定位位置

读写接口设计

读写接口设计也是非常重要的环节,设计要求罗列如下:

  • 可按参数ID(int)读写接口
  • 可按参数别名(string)读写接口
  • 有一对读写接口可以读写所有参数
  • 可以有一些简便的读写接口,不宜过多
  • 添加删除参数是简洁方便的
  • 用List数据结构设计,用for循环读写,切忌使用switch case

串口读写参数

有了上述工作的基础,我们开始编写串口读写参数功能了,举一反三,蓝牙/网络读写参数雷同。
串口协议我们选择AT协议,设计一对串口读写接口,调用统一的一对读写参数接口即可完成该功能。
串口显示时,数据显示类型派上用场了,可根据整数、十六进制、字符串等进行显示。
示例:
发送:AT+SET=IP,“192.168.1.1”,PORT,8080
接收:AT+SET=IP,“192.168.1.1”,PORT,8080
发送:AT+GET=IP,PORT
接收:AT+GET=IP,“192.168.1.1”,PORT,8080

结束语

分享到此,感谢阅读,希望对您有用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值