bootm.c文件中的do_bootm函数中增加解压uimage.gz功能
时间: 2024-02-12 17:02:16 浏览: 118
要增加解压uimage.gz功能,可以在do_bootm函数的代码中添加以下部分:
```c
// 解压uimage.gz
if (image_check_type(image, IH_TYPE_MULTI)) {
image_multi_getimg(image, 0, &data, &len);
if (len == 0) {
printf("## Error: No valid image found\n");
return 1;
}
if (gunzip((unsigned char *)data, len, (unsigned char *)load_addr) != 0) {
printf("## Error: Uncompressing uImage file failed\n");
return 1;
}
} else {
data = image_get_data(image);
len = image_get_data_size(image);
if (len == 0) {
printf("## Error: Empty image\n");
return 1;
}
memcpy((void *)load_addr, data, len);
}
```
这部分代码首先判断image是否为多文件类型,如果是,则获取第一个文件的数据和长度,并使用gunzip函数解压缩数据到指定的load_addr地址;如果不是,则直接将image的数据拷贝到load_addr地址。需要注意的是,gunzip函数需要在代码中实现。
阅读全文