前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESA2GJK1DH1K升级篇: 关于升级篇数据校验

ESA2GJK1DH1K升级篇: 关于升级篇数据校验

作者头像
杨奉武
发布2019-11-28 20:46:10
3430
发布2019-11-28 20:46:10
举报
文章被收录于专栏:知识分享知识分享

前言

  鉴于大家都希望升级的时候加入数据校验,所以就满足大家的要求.

  其实我也希望自己做的足够的稳定可靠,让大家使用起来放心.

  上一节测试了一节加入校验以后的操作方式,这节来详细的说一下校验部分的代码.

数据校验方式

  数据校验方式是 每个数据做累加

  注意哈,单片机程序是 char 型的数据类型,然后像下面做数据累加.

  char  sum;

       sum= sum + 数据;

  数据呢就是升级的时候接收的一个字节一个字节的数据.

  我还是多说一句吧!

  问一下就像是上面  假设现在 sum = 255;  然后接着数据是 0x03

  我问下执行  sum= sum + 0x03;  现在sum等于多少?

  等于 0x02 

  我只做下提醒

  int a = 0x0102

  char  b = a;

  b = 0x02;

  上位机呢,和单片机那边计算方式一样

  上位机源码在这里大家自己去看哈

然后看单片机程序:  BootLoader 加入数据校验

  其实加入了校验就相当于多了一个判断而已!!!!

  大家记得哈,云端的数据是这样的

  SumBin1是第一份用户程序bin文件的数据校验和

  SumBin2是第二份用户程序bin文件的数据校验和

  先说下 BootLoader程序改变了哪些

  增加了3个状态标志,两个变量

  SumBin初始化为 -1 ,是因为校验值的范围是0-255,所以这个变量不能让它初始化为0

  以前的程序只是获取版本,现在需要再获取下bin文件的校验值,放到下图位置

  然后写上获取云端的校验值程序.

  刚才定义的SumBin和UpdateStatus_SumBinRangeErr 派上用场了

  接收数据的时候开始累加数据,计算数据的和

  上面定义的Sum就用上了

  然后呢其实有个状态变量是优化以前的一个地方

  以前为了少定义一些状态,就把下面的错误设置成了  UpdateStatus_DataAddressError

  其实UpdateStatus_DataAddressError 这个状态是判断的下面的

  这次呢,想了想,换个新标志  UpdateStatus_MissingData

  然后加上最终的判断校验

  加上

  其实呢,就是多加了个判断而已...

  升级的时候弄了好多状态,实际上就是为了保证万无一失.

然后看单片机程序:  用户程序

  写上新添加的升级状态.

  把升级状态,转为字符串的地方需要加上新状态了.

  然后就移植上了数据校验了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数据校验方式
  • 然后看单片机程序:  BootLoader 加入数据校验
  • 然后看单片机程序:  用户程序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档