日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

amlogic S905X udpate imge的压缩和解压

發(fā)布時(shí)間:2023/12/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 amlogic S905X udpate imge的压缩和解压 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用的板子是khadas VIM

amlogic的升級(jí)和燒寫(xiě)有多種方式, 常見(jiàn)的是USB燒寫(xiě)和SD卡燒寫(xiě). USB燒寫(xiě)的流程其實(shí)是解壓update.img中的文件,然后push到RAM中運(yùn)行. 然后再push文件到ram中燒寫(xiě). 這個(gè)和Freescale的MFGTools類(lèi)似.


update.img的生成

生成update.img的命令如下,可以看到不同文件在update.img中被包含, 中括號(hào)里面是文件名字和分區(qū)名字, 這個(gè)信息在后面的解壓中會(huì)被用到.

$ ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r out/target/product/kvim/upgrade/aml_upgrade_package.conf out/target/product/kvim/upgrade/ out/target/product/kvim/update.img [Msg]Pack Item[USB , DDR] from (out/target/product/kvim/upgrade/u-boot.bin.usb.bl2),sz[0xc000]B, [Msg]Pack Item[USB , UBOOT] from (out/target/product/kvim/upgrade/u-boot.bin.usb.tpl),sz[0xd0000]B,ft[normal] [Msg]Pack Item[UBOOT , aml_sdc_burn] from (out/target/product/kvim/upgrade/u-boot.bin.sd.bin),sz[0xdc200]B,ft[normal] [Msg]Pack Item[ini , aml_sdc_burn] from (out/target/product/kvim/upgrade/aml_sdc_burn.ini),sz[0x24d]B, [Msg]Pack Item[PARTITION , boot] from (out/target/product/kvim/upgrade/boot.img),sz[0x7ee800]B,ft[normal] [Msg]Pack Item[VERIFY , boot] from (out/target/product/kvim/upgrade/boot.img),vry[sha1sum aa0fea3f2bd1ffe15f8f5c9ff1d71609ee7db42d] [Msg]Pack Item[PARTITION , bootloader] from (out/target/product/kvim/upgrade/u-boot.bin),sz[0xe0000]B,ft[normal] [Msg]Pack Item[VERIFY , bootloader] from (out/target/product/kvim/upgrade/u-boot.bin),vry[sha1sum 3f5d17c6352bdb7bdff9a1114da3ce6f36c3803d] [Msg]Pack Item[PARTITION , logo] from (out/target/product/kvim/upgrade/logo.img),sz[0x11b5b0]B,ft[normal] [Msg]Pack Item[VERIFY , logo] from (out/target/product/kvim/upgrade/logo.img),vry[sha1sum bf640f9e75764aa138a5783550d3f842814ed171] [Msg]Pack Item[xml , manifest] from (out/target/product/kvim/upgrade/manifest.xml),sz[0xe2f2]B, [Msg]Pack Item[dtb , meson1] from (out/target/product/kvim/upgrade/meson.dtb),sz[0x94dd]B, [Msg]Pack Item[conf , platform] from (out/target/product/kvim/upgrade/platform.conf),sz[0xca]B, [Msg]Pack Item[PARTITION , recovery] from (out/target/product/kvim/upgrade/recovery.img),sz[0xab5800]B,ft[normal] [Msg]Pack Item[VERIFY , recovery] from (out/target/product/kvim/upgrade/recovery.img),vry[sha1sum 3dc97761a4200b31e7898aa32a4465e3d792bc61] [Msg]Pack Item[PARTITION , system] from (out/target/product/kvim/upgrade/system.img),sz[0x222f3954]B,ft[sparse] [Msg]Pack Item[VERIFY , system] from (out/target/product/kvim/upgrade/system.img),vry[sha1sum c4e2bb6e4fadfe8762490d99be6d9b85a9fd7f29] [Msg]version:0x2 crc:0xf2f5fb70 size:597054308 bytes[569MB] Pack image[out/target/product/kvim/update.img] OK

Update.img的解壓

參考下面這個(gè)地址中的.c文件

http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s912/others-aml-s912/knowledge-tutorials-av/608116-how-to-recover-so-you-bricked-your-box

因?yàn)樗倪@個(gè)是為S912S為處理的, 對(duì)于S905X而言也是類(lèi)似的, 同時(shí)因?yàn)樗J(rèn)指定了一個(gè)打開(kāi)的文件, 因此我改了一下:

#include <errno.h> #include <inttypes.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h>uint32_t convert(uint8_t *test, uint64_t loc) {return ntohl((test[loc] << 24) | (test[loc+1] << 16) | (test[loc+2] << 8) | test[loc+3]); }void main(int argc, char * argv[]) {FILE *fileptr;uint8_t *buffer;long filelen;FILE *f;char *filename;uint64_t record;uint64_t record_loc;uint64_t file_loc;uint64_t file_size;printf("file is %s\n", argv[1]);fileptr = fopen(argv[1], "rb");fseek(fileptr, 0, SEEK_END);filelen = ftell(fileptr);rewind(fileptr);buffer = (uint8_t *)malloc((filelen+1)*sizeof(uint8_t));fread(buffer, filelen, 1, fileptr);fclose(fileptr);for (record = 0; record < (uint8_t)buffer[0x18]; record = record + 1){record_loc = 0x40 + (record * 0x240);filename = (malloc(32));sprintf(filename,"%s.%s",(char *)&buffer[record_loc+0x120], (char *)&buffer[record_loc+0x20]);file_loc = convert(buffer,record_loc+0x10);file_size = convert(buffer,record_loc+0x18);f = fopen(filename, "wb");if (f == NULL) {printf("ERROR: could not open output\n");printf("the error was: %s\n",strerror(errno));free(filename);continue;}fwrite(&(buffer[file_loc]), sizeof(uint8_t), (size_t)file_size, f);fclose(f);free(filename);}free(buffer); }
將這個(gè)代碼保存, 使用gcc直接編譯, 然后就可以帶一個(gè)update.img為參數(shù)運(yùn)行了, 即可得到對(duì)應(yīng)的解壓文件.

解壓后各個(gè)文件的意義

因?yàn)榻鈮汉蟮拿侄际荖AME.PARTITION這樣的命名, 這個(gè)需要看前面提到的update.img的生成log中對(duì)應(yīng)


使用SD卡燒寫(xiě)

SD卡的燒寫(xiě)一樣可以參考下面文章中的dd:

http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s912/others-aml-s912/knowledge-tutorials-av/608116-how-to-recover-so-you-bricked-your-box

具體而言就是將uboot.bin.sdcard dd到第二個(gè)sector, 然后拷貝各種配置文件.

總結(jié)

以上是生活随笔為你收集整理的amlogic S905X udpate imge的压缩和解压的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。