20170126_jeffrey - silenceuncrio/diary GitHub Wiki
- 0925 - 早上來 morris 告知昨天幫他燒錄的那六片 M300 怎麼開機還是那麼久才會閃燈
- 1025 - 原來 morris 準備的哪幾片要出 sample 的
-
1055 - 跟 ariel 討論一下早上 morris 的需求 -
閃燈快一點這件事能夠在一燒錄完就有了
- 1140 - 可以來 patch 了
- 1310 - git commit
- 1535 - 過年後需要跟產線單位 demo 一下怎麼使用 mfgtool
早上來 morris 告知昨天幫他燒錄的那六片 M300 怎麼開機還是那麼久才會閃燈
那是因為閃燈要快的話要 uboot 幫忙
uboot 要幫忙的話要靠 bootcmd
bootcmd
的修改要等 rc.local 跑完才會套用新的 bootcmd
所以要等到 SIM 燈閃動才表示 rc.local 跑完了
這一點可能要註明一下才不會讓後續的生產流程誤會
不過 morris 是希望閃燈快一點這件事能夠在一燒錄完就有了
不然產線很容易就誤會了
原來 morris 準備的哪幾片要出 sample 的
結果我燒錄的是最新的 develop 上的 code
雖然有快速點系統燈的修改 不過 develop 新增的部分都還沒經過驗證
ariel 表示先就目前這個版直接從 WEB UI upgrade 成 m300_v1.1_012C000000129880.tar
對外統一放在 P:\2_Projects\3_Wireless\M300_M301\firmware\20170112
不過因為目前 uboot env 已經實作 no_good counter 的關係
只要開機兩次後就會切換 image... 所以 ariel 直接 upgrade 兩次把 dual image 都燒成 m300_v1.1_012C000000129880.tar
跟 ariel 討論一下早上 morris 的需求 - 閃燈快一點這件事能夠在一燒錄完就有了
這需要直接修改 <u-boot-imx>\include\configs\mx6ul_14x14_evk.h
參考 https://github.com/silenceuncrio/diary/wiki/20161219_jeffrey
...
#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:" \
"3m(boot),1m(boot_env)," \
"10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a)," \
"4m(misc)," \
"10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)\0"
#define CONFIG_NAND_PARTITION CONFIG_MFG_NAND_PARTITION
...
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
CONFIG_VIDEO_MODE \
"fdt_addr=0x83000000\0" \
"fdt_high=0xffffffff\0" \
"console=ttymxc0\0" \
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
CONFIG_NAND_PARTITION \
"kernel_addr=0x00400000\0" \
"dtb_addr=0x00E00000\0" \
"bootcmd=nand read ${loadaddr} ${kernel_addr} 0x800000;"\
"nand read ${fdt_addr} ${dtb_addr} 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
...
#define CONFIG_ENV_OFFSET 0x00300000
#define CONFIG_ENV_SECT_SIZE 0x00100000
#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
我需要把目前最新的 uboot env 套上去
root@Mobile Router:~# fw_printenv
active_firmware=a
app_choose=if test ${no_good} = ".xx";
then echo replace primary app; run app_replace; setenv no_good .; saveenv;
else echo run primary app;
fi
app_primary=a
app_replace=if test ${app_primary} = a;
then echo a to b; setenv app_primary b; setenv app_secondary a;
else echo b to a; setenv app_primary a; setenv app_secondary b;
fi
app_secondary=b
baudrate=115200
bootargs=console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs_a rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootargs_a=echo bootargs for room a;
setenv bootargs console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs_a rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootargs_b=echo bootargs for room b;
setenv bootargs console=ttymxc0,115200 ubi.mtd=9 root=ubi0:rootfs_b rootfstype=ubifs mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
bootcmd=mw 0x020A0004 00100000 1; mw 0x020E01CC 0x00000005 1;
run app_choose;
echo run bootargs_${app_primary}; run bootargs_${app_primary};
run nandread_${app_primary};
setenv no_good ${no_good}x; saveenv;
bootz ${loadaddr} - ${fdt_addr}
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=1
console=ttymxc0
dtb_a_addr=0x00E00000
dtb_b_addr=0x08E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
initrd_addr=0x83800000
initrd_high=0xffffffff
kernel_a_addr=0x00400000
kernel_b_addr=0x08400000
loadaddr=0x80800000
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" mtdparts=gpmi-nand:3m(boot),1m(boot_env),10m(kernel_a),2m(dtb_a),96m(rootfs_a),16m(config_a),4m(misc),10m(kernel_b),2m(dtb_b),96m(rootfs_b),-(config_b)
nandread_a=nand read ${loadaddr} ${kernel_a_addr} 0x800000;
nand read ${fdt_addr} ${dtb_a_addr} 0x100000;
nandread_b=nand read ${loadaddr} ${kernel_b_addr} 0x800000;
nand read ${fdt_addr} ${dtb_b_addr} 0x100000;
panel=TFT43AB
rootfs_a_mtd=4
rootfs_b_mtd=9
uboot_env_ver=1.0
no_good=.
整理一下
可以來 patch 了
- bitbake u-boot-imx -c clean
- bitbake u-boot-imx -c devshell
- quilt new uboot_env_v1.0.patch
- quilt add include/configs/mx6ul_14x14_evk.h
- 套用
<u-boot-imx>\include\configs\mx6ul_14x14_evk.h
- quilt refresh
- cp patches/uboot_env_v1.0.patch to
meta-proscend\recipes-bsp\u-boot\files
- modify
meta-proscend\recipes-bsp\u-boot\u-boot-imx_2015.04.bbappend
- add
uboot_env_v1.0.patch
toSRC_URI_append
- add
bitbake u-boot-imx -c clean
bitbake u-boot-imx
built image... ok
mfgtool flash frimware... ok
git commit
commit bf8a6e5f032f1d5ae4e32c3ae7daeef77be5bed9
Author: jeffrey <[email protected]>
Date: Thu Jan 26 13:08:15 2017 +0800
patch the u-boot-imx for support the following features:
- dual image failover
- quick turn on system led
the uboot env verion is 1.0
過年後需要跟產線單位 demo 一下怎麼使用 mfgtool
最好是一次燒四台
我需要先演練一次才行
mfgtool 本身我也應該把我為了 M300 修改過後的版本放到 git server 上才行
過年後需要進行這些事