bin文件操作

目前在做一个项目,具有在线升级功能,具有boot区,boot_data区,APP区和上位机升级软件

(讲解APP,boot及上位机实现的,请看https://blog.csdn.net/wuhenyouyuyouyu/article/details/102851287)

。正常情况下是下载Boot程序,然后用上位机下载APP,考虑到生产上的效率能不能下载一个HEX就可以

了,经过查看资料是可行的,具体思路如下。

一、上位机实现

1、要能根据APP文件生成boot_data文件;

2、如果考虑加密,可以具有一些加密功能。

bin文件操作_第1张图片

bin文件读写:出处https://blog.csdn.net/weixin_42287851/article/details/103759331

bin文件操作_第2张图片

 

方法1:

(1)写bin文件

#include 
#include 
 
int main(){
 
    float data[224*224*3];
    for(int i=0; i<224*224*3; ++i){
        data[i] = i/2.0;
    }
 
    // save
    FILE *fp = fopen("test.bin", "w");
    fwrite(data, sizeof(float), sizeof(data), fp);
    fclose(fp);
 
    return 0;
}


(2)读bin文件

#include 
#include 
 
int main(){
    float* data = new float[3*224*224];
 
    //read
    std::ifstream inF("test.bin", std::ios::binary);
    inF.read((char*)data, sizeof(float) * (3*224*224));
    inF.close();
 
    std::cout << "read bin file" << std::endl;
    for(int i=0; i<10; i++){
        std::cout << i << ": "<< data[i] << std::endl;
    }
    for(int i=224*224*3-10; i<224*224*3; i++){
        std::cout << i << ": "<< data[i] << std::endl;
    }
 
    return 0;
}


方法2:

(1)写bin文件

#include 
#include 
 
int main(){
 
    float data[224*224*3];
    for(int i=0; i<224*224*3; ++i){
        data[i] = i/2.0;
    }
 
    // save
    std::ofstream outF("test2.bin", std::ios::binary);
    outF.write(reinterpret_cast(data), sizeof(data));
 
    outF.close();
 
    return 0;
}


(2)读bin文件

#include 
#include 
 
int main(){
    float* data = new float[3*224*224];
 
    //read
    std::ifstream inF("test2.bin", std::ios::binary);
    inF.read(reinterpret_cast(data), sizeof(float) * (3*224*224));
    inF.close();
 
    std::cout << "read bin file" << std::endl;
    for(int i=0; i<10; i++){
        std::cout << i << ": "<< data[i] << std::endl;
    }
    for(int i=224*224*3-10; i<224*224*3; i++){
        std::cout << i << ": "<< data[i] << std::endl;
    }
 
    return 0;
}

二、下位机实现

1、boot实现

具体实现过程不说了,这里说下注意点,其实地址和发小设置好,然后编译输出bootBin文件。

2、APP实现

具体实现过程不说了,这里说下注意点,其实地址和发小设置好,然后编译输出APPBin文件。

3、用上位机生成bootConfig文件

bin文件操作_第3张图片

上面是从Flash读出的配置,下面是生成的配置。

4、合成bin

1)打开 J-Flash,File->open data file,输入boot地址;

2)打开File->merge data file,输入配置地址;

3)打开File->merge data file,输入APP地址;

4)打开File->save data file as,选择HEX格式;

5)用HEX烧写工具即可。

你可能感兴趣的:(单片机)