修改我對應開發板的.h檔案(uboot/include/configs/***6ULL.h)
修改處1:
#ifdef CONFIG_SYS_BOOT_NAND
#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:2m(boot),128k(env),8m(kernel),128k(dtb),-(rootfs) "
/*#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:5m(boot),1m(env),10m(kernel),1m(dtb),-(rootfs) " */
修改處2:
#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_NAND_MTDPARTS "gpmi-nand:2m(boot),128k(env),8m(kernel),128k(dtb),-(rootfs)"
/* #define CONFIG_NAND_MTDPARTS "gpmi-nand:5m(boot),1m(env),10m(kernel),1m(dtb),-(rootfs)" */
修改處3:
/*
#else
#define CONFIG_BOOTCOMMAND \
"nand read ${loadaddr} 0x600000 0xA00000;"\
"nand read ${fdt_addr} 0x1000000 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}"
#endif
*/
#else
#define CONFIG_BOOTCOMMAND \
"nand read ${loadaddr} 0x220000 0x800000;"\
"nand read ${fdt_addr} 0xA20000 0x20000;"\
"bootz ${loadaddr} - ${fdt_addr}"
修改處4:
#elif defined(CONFIG_ENV_IS_IN_NAND)
#undef CONFIG_ENV_SIZE
/*
#define CONFIG_ENV_OFFSET (5 << 20)
#define CONFIG_ENV_SECT_SIZE (1 << 20)
*/
#define CONFIG_ENV_OFFSET (2 << 20)
#define CONFIG_ENV_SECT_SIZE (1 << 17)
然后用mfgtool工具下載,更換firmware和file下的uboot.imx
更新下載時時報錯:
mtd: opened '/dev/mtd0' - '(null)'
mtd: bootstream too large
mtd_init failed!
uj5u.com熱心網友回復:
這種情況就需要定位了,建議不要一下子改那么多引數,每改一個部分就測驗一下,這樣就能找出問題所在。我用的北京迅為的6ULL終結者開發板,也出現過mfgtool燒寫問題,當時是因為拷貝的檔案不全導致的。你這個提示‘mtd:bootstream too large’,顯然是超出范圍了,搞小點試試,或者把空間拉大。
uj5u.com熱心網友回復:
我就康康..uj5u.com熱心網友回復:
改錯了 mfgtools里面用作燒寫ram的uboot應該被你給換了,你要修改磁區,mfgtools里面有一個磁區腳本。mfgtools的原理是:1、通過usb燒寫ram版本的uboot和image
2、啟動ram中的系統,
3、根據磁區腳本磁區
4、通過fastboot(記得應該這種方式或是類似方式),將uboot燒寫進0x1000(貌似是這個位置)---這個是你要換的
5、將內核燒寫進行boot磁區(emmc中有boot磁區,這個是物理分好的,emmc出廠一般就有)
6、燒寫燒寫檔案系統
7、打完收工
具體步驟應該有一個xml檔案,自己學習一下
uj5u.com熱心網友回復:
https://blog.csdn.net/mack_liu/article/details/106658151轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14022.html
標籤:驅動開發/核心開發
