6626自定义升级

yangzh · 10次点击 · 15小时前

以下是6626通过本地已存固件,实现自己更新代码示例,以下是simple工程为例介绍

  1. 增加自定义函数


    void test_mbr_update(void) {
        uint8_t rd_data[1]={0};
        uint16_t crc_val=0;
        uint32_t length =  0x21edc; //文件长度
        uint32_t i;

        OM_LOG_DEBUG("start crc_val =0x%x,length = 0x%x\n",crc_val,length);
       
        for(i=0;i<length;i++)
        {
            drv_sfs_enable();
            drv_sf_read(OM_SF,0,0x34000+i,rd_data,1);
            crc_val = om_crc16_ccitt(crc_val,rd_data,1);
        }
       
        OM_LOG_DEBUG("end crc_val =0x%x,length = 0x%x\n",crc_val,length);
       
      // mbr
      drv_sfs_enable();
      // 96 固定标识
      // 0x34000 新固件存放地址
      // 21edc 新固件长度
      // 0x8a38 新固件CRC16校验码
      mbr_write_part(96, 0x34000, length/*0x22280*/, crc_val/*0x7d6f*/);

      OM_LOG_DEBUG("REBOOT !!\n");
      drv_pmu_force_reboot();
    }
  2. 调用自定义函数

    定时器调用

    static void evt_timer_0_handler(evt_timer_t *timer, void *param)
    {
        OM_LOG_DEBUG("evt timer: %d\n", PMU_TIMER_TICK2MS(drv_pmu_timer_cnt_get()));
       
        test_mbr_update();
    }


  3. 烧录备份新固件文件image.png

  4. 代码运行后

    ea87eb2cda650ab3146baf3c2ae4205e.png

main-202510202802.c
被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站