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

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

  • 提笔有因
  • 存储介质
  • FLASH存储设计
  • 数据类型设计
  • 参数归类设计
  • 读写接口设计
  • 串口读写参数
  • 结束语

提笔有因

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

存储介质

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

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

FLASH存储设计

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

数据类型设计

  • 存储类型
数据类型 占用空间 说明
BOOL 1bit
INT 1-4 Byte 有符号整数
UINT 1-4 Byte 无符号整数
BYTE[] 1-n Byte Byte数组
  • 显示类型
显示类型 说明
整数显示 %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

结束语

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

来源:诚人毅事

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年2月16日
下一篇 2019年2月16日

相关推荐