zoukankan      html  css  js  c++  java
  • 基于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
            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.在失败会一直重启

  • 相关阅读:
    WCF Restful 服务 Get/Post请求
    网络共享做本地映射
    跨服务器存放文件(1)
    Socket通信简单实例(WCF调用Socket)
    HttpWebRequest传值
    实体对象,List泛型 转换为DataTable
    (转)打印相关_C#(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
    (转)C#.NET WINFORM应用程序中控制应用程序只启动一次
    (转)C#操作Word文档
    (转)Java调用Weservice
  • 原文地址:https://www.cnblogs.com/wt88/p/14541540.html
Copyright © 2011-2022 走看看