U-Bootのデフォルト環境変数を設定した
Orange pi R1をMTDブートさせたい件で、U-Bootのデフォルト環境変数を設定した。
include/configs/sunxi-common.h の CONFIG_EXTRA_ENV_SETTINGS で設定できる。
末尾に空行が入らないといけないのと、途中に改行が入るといけないみたいなのでエスケープに注意。
MEM_LAYOUT_ENV_SETTINGS は無いとscriptaddrとかkernel_addr_rとか使えなくなる。
fdtfileもboot.scrで使うので入れた。
初期設定でビルドするとdistro_bootcmdが自動実行されるのでこれを変えた。
SPIフラッシュを有効にして、load_scrを実行して、スクリプトを処理する。
load_scrは長いんで分けたが、SDの第1パーティションに/boot.scrがあればそれをロード。なければSPIフラッシュからオフセット512kBの4kBをロード。
オフセットの512kBまでにU-Boot本体を入れる。boot.scrは4kB。
搭載フラッシュは256B単位で読めるようなんだが、MTDは4kB単位で使うのが基本ぽい?
てな感じで、SPIフラッシュとSDカードの両方で使える感じにした。
boot.scrも共通で使えるようにしたい。init.shも共通にできるかな。
include/configs/sunxi-common.h の CONFIG_EXTRA_ENV_SETTINGS で設定できる。
#define CONFIG_EXTRA_ENV_SETTINGS \
/*
CONSOLE_ENV_SETTINGS \
MEM_LAYOUT_ENV_SETTINGS \
DFU_ALT_INFO_RAM \
"fdtfile=" FDTFILE "\0" \
"console=ttyS0,115200\0" \
SUNXI_MTDIDS_DEFAULT \
SUNXI_MTDPARTS_DEFAULT \
"uuid_gpt_esp=" UUID_GPT_ESP "\0" \
"uuid_gpt_system=" UUID_GPT_SYSTEM "\0" \
"partitions=" PARTS_DEFAULT "\0" \
BOOTCMD_SUNXI_COMPAT \
BOOTENV
*/\
MEM_LAYOUT_ENV_SETTINGS \
"fdtfile=" FDTFILE "\0" \
"load_scr=if load mmc 0:1 $scriptaddr /boot.scr;then echo Found boot.scr in mmc;else mtd read nor0 $scriptaddr 0x80000 0x1000;fi;\0"\
"distro_bootcmd=sf probe;run load_scr;source $scriptaddr;\0"
#else /* ifndef CONFIG_SPL_BUILD */
初期設定はまるごとコメントアウトした。/*
CONSOLE_ENV_SETTINGS \
MEM_LAYOUT_ENV_SETTINGS \
DFU_ALT_INFO_RAM \
"fdtfile=" FDTFILE "\0" \
"console=ttyS0,115200\0" \
SUNXI_MTDIDS_DEFAULT \
SUNXI_MTDPARTS_DEFAULT \
"uuid_gpt_esp=" UUID_GPT_ESP "\0" \
"uuid_gpt_system=" UUID_GPT_SYSTEM "\0" \
"partitions=" PARTS_DEFAULT "\0" \
BOOTCMD_SUNXI_COMPAT \
BOOTENV
*/\
MEM_LAYOUT_ENV_SETTINGS \
"fdtfile=" FDTFILE "\0" \
"load_scr=if load mmc 0:1 $scriptaddr /boot.scr;then echo Found boot.scr in mmc;else mtd read nor0 $scriptaddr 0x80000 0x1000;fi;\0"\
"distro_bootcmd=sf probe;run load_scr;source $scriptaddr;\0"
#else /* ifndef CONFIG_SPL_BUILD */
末尾に空行が入らないといけないのと、途中に改行が入るといけないみたいなのでエスケープに注意。
MEM_LAYOUT_ENV_SETTINGS は無いとscriptaddrとかkernel_addr_rとか使えなくなる。
fdtfileもboot.scrで使うので入れた。
初期設定でビルドするとdistro_bootcmdが自動実行されるのでこれを変えた。
SPIフラッシュを有効にして、load_scrを実行して、スクリプトを処理する。
load_scrは長いんで分けたが、SDの第1パーティションに/boot.scrがあればそれをロード。なければSPIフラッシュからオフセット512kBの4kBをロード。
オフセットの512kBまでにU-Boot本体を入れる。boot.scrは4kB。
搭載フラッシュは256B単位で読めるようなんだが、MTDは4kB単位で使うのが基本ぽい?
てな感じで、SPIフラッシュとSDカードの両方で使える感じにした。
boot.scrも共通で使えるようにしたい。init.shも共通にできるかな。
てなわけで、明日boot.scrとinit.shを作り直してSPIフラッシュからブートできるようにしたい。
あとちょっとと思う。
あとちょっとと思う。