收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
return 0;
}
if(fseek(fp_bin,0,SEEK\_END) != 0)
{
printf("fseek file err\n");
goto exit;
}
ota_header.bin_len = ftell(fp_bin);
printf("bin size :%d-hex(%x)\n",ota_header.bin_len,ota_header.bin_len);
int retry;
retry =0 ;
lp_retry:
fseek(fp_bin,0,SEEK_SET);
unsigned char dat;
int i=0;ota_header.head_sum=0; int ret=0;
while( (ret = fread(&dat,1,1,fp_bin)) !=0)
{
if(ret == 1)
{
i++;
ota_header.bin_sum += dat;
retry = 0;
}
else
{
printf(“fread err retry %d\n”,retry);
retry++;
if(retry <10)
goto lp_retry;
else
goto exit;
}
}
if(i!=ota_header.bin_len)
{
printf(“read err\n”);
goto exit;
}
printf(“read done\n”);
ota_header.head_sum = ota_header.header_flag + ota_header.sw_version + ota_header.bin_len + ota_header.bin_sum;
/*
printf(“#########bin header info#######\n”);
printf(“header_flag : %X\n”,ota_header.header_flag);
printf(“sw_version : %X\n”,ota_header.sw_version);
printf(“bin_len : %X\n”,ota_header.bin_len);
printf(“bin_sum : %X\n”,ota_header.bin_sum);
printf(“head_sum : %X\n”,ota_header.head_sum);
printf(“tail_flag : %X\n”,ota_header.tail_flag);
printf(“##############################\n”);
printf(“%d\n”,sizeof(BOOTLOADER_UPDATE_FILE_HDR_S));
*/
char *ota_file_name=NULL;
if(argc == 3)
ota_file_name = calloc(strlen(“ota_”)+strlen(file_name)+1,sizeof(char));
else if(argc == 4 && create_file_name!= NULL)
ota_file_name = calloc(strlen(create_file_name)+1,sizeof(char));
if(ota_file_name == NULL)
{
printf("ota\_file\_name zalloc fail\r\n");
goto exit;
}
if(argc == 3)
{
sprintf(ota_file_name,"ota\_%s",file_name);
}
else if(argc ==4)
{
memcpy(ota_file_name,create_file_name,strlen(create_file_name));
}
printf("create ota name: %s\n",ota_file_name);
fp_out = fopen(ota_file_name,"wb+");
if(fp_out == NULL)
{
printf("无法打开 %s\n",ota_file_name);
goto exit;
}
retry = 0;ret = 0;
lp1_retry:
fseek(fp_out,0,SEEK_SET);
if( (ret = fwrite(&ota_header,sizeof(BOOTLOADER_UPDATE_FILE_HDR_S),1,fp_out)) != 1 )
{
printf(“fwrite ota header retry %d\n”,retry);
retry++;
if(retry<10)
goto lp1_retry;
else
goto exit;
}
int retry_ota=0;
lp2_retry:
i=0;dat=0;retry =0;ret =0;retry_ota = 0;
fseek(fp_out,sizeof(BOOTLOADER_UPDATE_FILE_HDR_S),SEEK_SET);
fseek(fp_bin,0,SEEK_SET);
while( i < ota_header.bin_len)
{
if( (ret = fread(&dat,1,1,fp_bin)) == 1)
{
retry = 0;
if( (ret = fwrite(&dat,1,1,fp_out)) ==1 )
{
retry_ota = 0;
i++;
}
else
{
printf(“fwrite %s err %d\n”,ota_file_name,retry_ota);
retry_ota++;
if(retry_ota<10)
goto lp2_retry;
else
goto exit;
}
}
else
{
printf(“fread %s err %d\n”,file_name,retry);
retry++;
if(retry<10)
goto lp2_retry;
else
goto exit;
}
}
if(fseek(fp_out,0,SEEK\_END) != 0)
{
printf("fseek file err\n");
goto exit;
}
unsigned int out_bin_num = ftell(fp_out);
if( out_bin_num != (ota_header.bin_len) + sizeof(BOOTLOADER_UPDATE_FILE_HDR_S))
{
printf("create ota file fail !!!\n");
goto exit;
}
retry=0;BOOTLOADER_UPDATE_FILE_HDR_S ota_header_bak;
lp3_retry:
fseek(fp_out,0,SEEK_SET);
memset(&ota_header_bak,0,sizeof(BOOTLOADER_UPDATE_FILE_HDR_S));
fread(&ota_header_bak,sizeof(BOOTLOADER_UPDATE_FILE_HDR_S),1,fp_out);
if(memcmp(&ota_header_bak,&ota_header,sizeof(BOOTLOADER_UPDATE_FILE_HDR_S)) != 0)
{
printf(“create ota file haeder err !!!\n”);
goto exit;
}
printf(“######### %s info ############\n”,ota_file_name);
printf(“header_flag: %X\n”,ota_header.header_flag);
printf(“sw_version : %X\n”,ota_header.sw_version);
printf(“bin_len : %X\n”,ota_header.bin_len);
printf(“bin_sum : %X\n”,ota_header.bin_sum);
printf(“head_sum : %X\n”,ota_header.head_sum);
printf(“tail_flag : %X\n”,ota_header.tail_flag);
printf(“###############################\n”);
printf(“create ota file success !!!\n”);
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
sdn.net/topics/618679757)**
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!