基于rt-thread的qboot学习

1、启动qboot线程

2、打印qboot版本信息

3、解压分区里面的固件 download

  1. 检查分区存在不存在

  2. 读取存放在分区里面的信息,封装了固件信息 if ( ! qbt_fw_info_read(fw_part_name, fw_info, false))//读取头部信息

    1. 查找分区
    2. 读取头部的分区数据 sizeof(头部结构体)
  3. 校验头部信息 if ( ! qbt_fw_info_check(fw_info))//检测头部信息 检测头部信息的crc

    1. 校验头部信息的crc
    2. typedef struct {
      u8 type[4];//
      u16 algo;
      u16 algo2;
      u32 time_stamp;
      u8 part_name[16];//分区名?? 还是包名?
      u8 fw_ver[24];//版本信息
      u8 prod_code[24];
      u32 pkg_crc;//包的crc
      u32 raw_crc;
      u32 raw_size;
      u32 pkg_size;//包的大小
      u32 hdr_crc;//包头的crc
      }fw_info_t;
  4. 固件检测 if ( ! qbt_fw_crc_check(fw_part_name, sizeof(fw_info_t), fw_info->pkg_size, fw_info->pkg_crc))//固件的crc检测 去掉头部信息的大小,就是app的地址。包的大小。数据包的crc

    1. 查找分区
    2. 每次读取4096个字节,就是一个扇区
    3. 读取出来加入到crc校验函数中去
    4. 返回结果
  5. app的crc检测 (和固件检测的区别是啥,没细看)

  6. 如果需要升级,就会擦除app分区

  7. 如果跳转失败就会从download分区下载数据、或者factory分区

  8. 在失败会一直重启

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值