2016年12月4日 星期日

客製化 u-boot (2016 版)

u-boot 客製化 (2016 年)

我們在使用 u-boot 時必須要手動輸入底下資訊才能成功開機:

setenv "root=/dev/mmcblk0p2 console=ttyAMA0"
fatload mmc 0:1 0x60008000 uimage
bootm 0x60008000

這主要原因是由於 u-boot 開機環境並沒有設定好,因此我們要來客製化 u-boot
原始碼,讓它可以照我們的要求來開機。請編輯:

u-boot-2016.09/include/configs/vexpress_common.h

這個檔案,修改以下片段:

#define CONFIG_EXTRA_ENV_SETTINGS \
                CONFIG_PLATFORM_ENV_SETTINGS \
                BOOTENV \
                "console=ttyAMA0,38400n8\0" \
                "dram=1024M\0" \
                "root=/dev/sda1 rw\0" \
                "mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel)," \
                        "24M@0x2000000(initrd)\0" \
                "flashargs=setenv bootargs root=${root} console=${console} " \
                        "mem=${dram} mtdparts=${mtd} mmci.fmax=190000 " \
                        "devtmpfs.mount=0  vmalloc=256M\0" \
                "bootflash=run flashargs; " \
                        "cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; " \
                        "bootm ${kernel_addr} ${ramdisk_addr_r}\0"


改為:

#define CONFIG_EXTRA_ENV_SETTINGS \
                CONFIG_PLATFORM_ENV_SETTINGS \
                BOOTENV \
                "console=ttyAMA0,38400n8\0" \
                "dram=1024M\0" \
                "root=/dev/mmcblk0p2 rw\0" \
                "flashargs=setenv bootargs root=${root} console=${console}\0" \
                "bootflash=run flashargs; " \
                "fatload mmc 0:1 0x60008000 uimage; " \
                "bootm 0x60008000\0"


然後重新編譯 u-boot,再把 u-boot u-boot.bin 複製到 /mnt/sdcard1 中。

之後請重新開機,看看這次還能不能直接開機,無需手動介入。

1 則留言: