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

 

 

 

前言

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

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

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

数据校验方式

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

  注意哈,单片机程序是 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

    

 

 

  然后加上最终的判断校验

 

    

 

 

  加上

 

    

 

 

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

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

    

 

 

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

  写上新添加的升级状态.

    

 

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

    

 

 

 

 

 

 

 

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

 

 

现在很多人问,什么时候才有视频

  我是这样想的,我先写完文章教程以后再录制视频

  其实大家应该看出来了,每一节教程都是很复杂的教程

  涉及的知识点很多.我现在录制视频教程不敢打包票一次就录制好

  我不想像前几次似的录制了以后发现出问题了,一旦有问题,就必须重新录制

  文章有了问题好修改,修改的没有问题了,再遵循着文章录制视频教程

  这样才能保证一次性就成了!

  大家如果对代码上的思路不明白就问我哈,我正好可以总结大家的问题

  然后再整理整理文章.

 

  

 

posted on 2019-11-27 02:06  广源时代  阅读(347)  评论(0编辑  收藏  举报

导航

支付宝 QQ群