20190417_jeffrey - silenceuncrio/diary GitHub Wiki
review
先整理一下 wiki 讓大家知道發生了什麼事
會講到 iweb 之前用的 workaround 方式
先拿一個 M300 2.0 之前的版本抓一些資訊好簡單介紹一下歷史
以最近的 MR401-G V1.77 為例
MR401-G# mgmt info list
active-image = a
hostname = MR401-G
lan-mac = 4E:34:CD:2D:F4:84
wan-mac = 3E:2F:E0:8F:2C:C0
sn =
smcsv = 013600721772E76A
hmcsv = 013600721772E76A
bootloader = 1.0
version = V1.77
modem = EC25AUFAR02A02M4G
IMEI = 861107031198691
uptime = 00:04:01
剛開機完會看到兩個 iweb process
bash-4.3# ps aux | grep iweb
root 2094 0.0 0.3 10584 1796 pts/3 Ss+ 00:42 0:00 iweb -p 80 -d /www
root 6447 1.5 0.5 10584 2728 pts/8 Ss+ 00:44 0:00 iweb -p 443 -d /www -s
root 7431 0.0 0.0 1768 320 ttymxc0 S+ 00:44 0:00 grep iweb
HTTP (PID 2094) 與 HTTPS (PID 6447)
透過 HTTP 做第一次的 login 之後
bash-4.3# ps aux | grep iweb
root 2094 0.2 0.5 10684 2552 pts/3 Ss+ 00:42 0:00 iweb -p 80 -d /www
root 6447 0.0 0.5 10584 2728 pts/8 Ss+ 00:44 0:00 iweb -p 443 -d /www -s
root 26836 0.0 0.0 1768 320 ttymxc0 S+ 00:49 0:00 grep iweb
shit!
V1.77 就會了
再往前追吧
M300_M301\firmware\20190110_V1.75\Hytec
HWL-2501-DS# mgmt info list
active-image = a
hostname = HWL-2501-DS
lan-mac = 4E:19:A2:BA:C2:BA
wan-mac = CA:32:BC:27:BE:19
sn =
smcsv = 013600531752E69E
hmcsv = 013600531752E69E
version = V1.75
modem = EC25AUFAR02A02M4G
IMEI =
uptime = 00:01:53
剛開機完會看到兩個 iweb process
bash-4.3# ps aux | grep iweb
root 2092 0.0 0.3 10568 1792 pts/3 Ss+ 07:04 0:00 iweb -p 80 -d /www
root 3279 0.4 0.5 10568 2664 pts/5 Ss+ 07:04 0:00 iweb -p 443 -d /www -s
root 7043 0.0 0.0 1768 320 ttymxc0 S+ 07:05 0:00 grep iweb
HTTP (PID 2092) 與 HTTPS (PID 3279)
透過 HTTP 做第一次的 login 之後
我們會利用 /cgi-bin/syslog.cgi?act=gen_log
這個 request 來讓 iweb 死掉
這是一個利用以往的現象得到的 workaround 方式
沒有為什麼
不這樣的後續使用者發這個 request 也是會造成 iweb 死亡
目前 web 這個 icos module 有能力讓 process 再度啟動
bash-4.3# ps aux | grep iweb
root 9701 2.2 0.6 10568 3088 pts/8 Ss+ 07:06 0:00 iweb -p 443 -d /www -s
root 9702 0.9 0.5 10568 2948 pts/5 Ss+ 07:06 0:00 iweb -p 80 -d /www
root 10288 0.0 0.0 1768 320 ttymxc0 S+ 07:06 0:00 grep iweb
浴火重生後的 HTTP (PID 9701) 以及沒它的事也跟著自殺順便復活(未知靈異現象)的 HTTPS (PID 9702)
HTTPS 幾次的存取都正常
V1.75 HWL-2501-DS HTTPS
最新的 M360 也發生一樣的現象
看來換 web server 這件事不能慢了
再把所謂的 現象 抓一下資訊
M300_M301\firmware\20190314_V1.77\Xentino
MR401-G# mgmt info list
active-image = a
hostname = MR401-G
lan-mac = B6:2D:74:DC:B3:27
wan-mac = D2:92:47:C0:94:C0
sn =
smcsv = 013600721772E76A
hmcsv = 013600721772E76A
bootloader = 1.0
version = V1.77
modem = EC25AUFAR02A02M4G
IMEI =
uptime = 00:01:19
MR401-G#
剛開機完會看到兩個 iweb process
bash-4.3# ps aux | grep iweb
root 1604 0.0 0.3 10584 1796 pts/3 Ss+ 02:14 0:00 iweb -p 80 -d /www
root 1607 0.3 0.4 10584 2472 pts/4 Ss+ 02:14 0:00 iweb -p 443 -d /www -s
root 7962 0.0 0.0 1768 320 ttymxc0 S+ 02:16 0:00 grep iweb
HTTP (PID 1604) 與 HTTPS (PID 1607)
透過 HTTP 做第一次的 login 之後
我們一樣利用 /cgi-bin/syslog.cgi?act=gen_log
這個 request 試著讓 iweb 死掉
殺不死!!!
bash-4.3# ps aux | grep iweb
root 1604 0.5 0.5 10684 2552 pts/3 Ss+ 02:14 0:00 iweb -p 80 -d /www
root 1607 0.2 0.4 10584 2472 pts/4 Ss+ 02:14 0:00 iweb -p 443 -d /www -s
root 11225 0.0 0.0 1768 320 ttymxc0 S+ 02:17 0:00 grep iweb
沒有浴火重生的 HTTPS
M300_M301\firmware\20190314_V1.77\Xentino
昨天的 code 還沒 commit
review 一下改了什麼
➜ M300 git:(feature/lighttpd) ✗ git status
On branch feature/lighttpd
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: meta-proscend/recipes-extended/lighttpd/lighttpd_1.4.36.bbappend
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
modified: proscend/prosrc/icos/icoslib/entry.c
...
新增的 lighttpd_1.4.36.bbappend
➜ M300 git:(feature/lighttpd) ✗ cat meta-proscend/recipes-extended/lighttpd/lighttpd_1.4.36.bbappend
SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
file://index.html.lighttpd \
file://lighttpd.conf \
file://lighttpd \
file://lighttpd.service \
file://pkgconfig.patch \
"
RDEPENDS_${PN} += " \
lighttpd-module-cgi \
"
# DISABLING INIT SCRIPT START LINKS
INITSCRIPT_PARAMS = "disable"
-
SRC_URI
- remove patch 0001-mod_cgi-buffers-data-without-bound.patch- The patch uses internal API functions from older versions of lighttpd which don't exist in this version.
- RDEPENDS_${PN} - add lighttpd-module-cgi for mod_cgi.so
- INITSCRIPT_PARAMS - disable init script start link
修改的
diff --git a/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb b/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
old mode 100755
new mode 100644
index 6f0a623..095fd09
--- a/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
+++ b/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
@@ -88,6 +88,9 @@ RDEPENDS_${PN} += " traceroute"
# iptable tool
RDEPENDS_${PN} += " conntrack-tools"
+# lighttpd
+RDEPENDS_${PN} += " lighttpd"
+
# ======================================
# Build dependence
diff --git a/proscend/prosrc/icos/icoslib/entry.c b/proscend/prosrc/icos/icoslib/entry.c
index 1804073..b2e41f7 100644
--- a/proscend/prosrc/icos/icoslib/entry.c
+++ b/proscend/prosrc/icos/icoslib/entry.c
@@ -86,7 +86,7 @@ sAttStringSet moduleInitAry[] =
{ "MODULE_CWMP", MODULE_CWMP },
#endif
- { "MODULE_WEB", MODULE_WEB },
+// { "MODULE_WEB", MODULE_WEB },
{ "MODULE_DNAT", MODULE_DNAT },
{ "MODULE_SNAT", MODULE_SNAT },
@@ -1131,7 +1131,7 @@ int ICOS_Bootinit(void)
//ICOS_broadcast(0, NULL, 0, ICOS_BOOTINIT_DONE); // Ariel
led_on(LED_SYSTEM_STATUS);
ICOS_msg_sendto(0, MODULE_NETMON,NULL, 0,ICOS_BOOTINIT_DONE);
- ICOS_msg_sendto(0, MODULE_WEB,NULL, 0,ICOS_BOOTINIT_DONE);
+ //ICOS_msg_sendto(0, MODULE_WEB,NULL, 0,ICOS_BOOTINIT_DONE);
return ICOS_SUCCESS;
}
- do not init the web module (iweb)
- do not send even ICOS_BOOTINIT_DONE to MODULE_WEB or the notify handler will start the iweb process
上 code 吧
先不 push
commit 984b7c052b82834a2ad1f794f830f6e1eb0ec732
Refs: [feature/lighttpd]
Author: jeffrey <[email protected]>
Date: Wed Apr 17 11:36:30 2019 +0800
add lighttpd to replace the current web server iweb(mongoose)
- lighttpd_1.4.36.bbappend
- `SRC_URI` - remove patch 0001-mod_cgi-buffers-data-without-bound.patch
- The patch uses internal API functions from older versions of lighttpd which don't exist in this version.
- RDEPENDS_${PN} - add lighttpd-module-cgi for mod_cgi.so
- INITSCRIPT_PARAMS - disable init script start link
- do not init the web module (iweb)
- do not send even ICOS_BOOTINIT_DONE to MODULE_WEB or the notify handler will start the iweb process
meta-proscend/recipes-core/prosrc/prosrc_0.1.bb | 3 +++
.../recipes-extended/lighttpd/lighttpd_1.4.36.bbappend | 16 ++++++++++++++++
proscend/prosrc/icos/icoslib/entry.c | 4 ++--
3 files changed, 21 insertions(+), 2 deletions(-)
先來準備一下要給 yuncore 的 image
wifi 的部分已經做好了
先拉一份 M330 最新的 code
給 yuncore 的文件跟 image 都準備好了
來追一下 issue 0000481: user upgrade from v1.72 to v1.77, DUT hang on uboot
這問題可能會很嚴重
先用 mfgtools 燒一個 M300_M301\firmware\20180905_V1.72\Xentino
的 MR401-G_013600721722C2B2_mfgtools.zip
紀錄一下開機後的 uboot env
bash-4.3# fw_printenv
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)
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
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)
stderr=serial
stdin=serial
stdout=serial
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;
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)
app_primary=a
app_secondary=b
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_choose=if test ${no_good} = ".xx"; \
then echo replace primary app; run app_replace; setenv no_good .; \
else echo run primary app; \
fi
turnon_sysled=mw 0x020E01CC 0x00000005 1; mw 0x020A0004 00100000 1; mw 0x020A0000 00000000 1
reset_ethernet_and_mobile=mw 0x020E00BC 00000005 1; mw 0x020E00C0 00000005 1; \
mw 0x0209C004 C0000000 1; mw 0x020AC004 00000080 1; \
mw 0x0209C000 00000000 1; mw 0x020AC000 00000000 1; \
sleep 1; \
mw 0x0209C000 C0000000 1; mw 0x020AC000 00000080 1
bootdelay=0
bootcmd_v1.3=run turnon_sysled; run reset_ethernet_and_mobile; \
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}
uboot_env_ver=1.3
uboot_env_1.3_bondary_1=therer are 3 bondary
uboot_env_1.3_bondary_2=therer are 3 bondary
uboot_env_1.3_bondary_3=therer are 3 bondary
bootcmd=run bootcmd_v1.3
hw_mcsv=013600721722C2B2
serialno=NA
no_good=.
wdog_prev_image=1
bash-4.3#
透過 web ui upgrade M300_M301\firmware\20190314_V1.77\Xentino
的 MR401-G_v1.77_013600721772E76A.img
firmware upgrade 完成
重開機前的 uboot env
bash-4.3# fw_printenv
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)
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
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)
stderr=serial
stdin=serial
stdout=serial
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;
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)
app_primary=a
app_secondary=b
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_choose=if test ${no_good} = ".xx"; \
then echo replace primary app; run app_replace; setenv no_good .; \
else echo run primary app; \
fi
turnon_sysled=mw 0x020E01CC 0x00000005 1; mw 0x020A0004 00100000 1; mw 0x020A0000 00000000 1
reset_ethernet_and_mobile=mw 0x020E00BC 00000005 1; mw 0x020E00C0 00000005 1; \
mw 0x0209C004 C0000000 1; mw 0x020AC004 00000080 1; \
mw 0x0209C000 00000000 1; mw 0x020AC000 00000000 1; \
sleep 1; \
mw 0x0209C000 C0000000 1; mw 0x020AC000 00000080 1
bootdelay=0
bootcmd_v1.3=run turnon_sysled; run reset_ethernet_and_mobile; \
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}
uboot_env_ver=1.3
uboot_env_1.3_bondary_1=therer are 3 bondary
uboot_env_1.3_bondary_2=therer are 3 bondary
uboot_env_1.3_bondary_3=therer are 3 bondary
bootcmd=run bootcmd_v1.3
hw_mcsv=013600721722C2B2
serialno=NA
wdog_prev_image=1
no_good=.xx
bash-4.3#
重開機
有開起來
開起來後的 uboot env
Password: bash-4.3#
bash-4.3# fw_printenv
app_choose=if test ${no_good} = ".xx";
then echo replace primary app; run app_replace; setenv no_good .;
else echo run primary app;
fi
app_primary=b
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=a
baudrate=115200
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)
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=run bootcmd_v1.3
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootcmd_v1.3=run turnon_sysled; run reset_ethernet_and_mobile;
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}
bootdelay=0
bootloader_ver=1.0
console=ttymxc0
dtb_a_addr=0x00E00000
dtb_b_addr=0x08E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
hw_mcsv=013600721722C2B2
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;
reset_ethernet_and_mobile=mw 0x020E00BC 00000005 1; mw 0x020E00C0 00000005 1;
mw 0x0209C004 C0000000 1; mw 0x020AC004 00000080 1;
mw 0x0209C000 00000000 1; mw 0x020AC000 00000000 1;
sleep 1;
mw 0x0209C000 C0000000 1; mw 0x020AC000 00000080 1
serialno=NA
stderr=serial
stdin=serial
stdout=serial
turnon_sysled=mw 0x020E01CC 0x00000005 1; mw 0x020A0004 00100000 1; mw 0x020A0000 00000000 1
uboot_env_1.3_bondary_1=therer are 3 bondary
uboot_env_1.3_bondary_2=therer are 3 bondary
uboot_env_1.3_bondary_3=therer are 3 bondary
uboot_env_ver=1.3
no_good=.
wdog_prev_image=2
bash-4.3#
目前開起來的 MR401-G V1.77 Identification
再 upgrade 一次
從 Active Image Partition
b 把 a 一樣 upgrade 成 MR401-G_v1.77_013600721772E76A.img
直接重開機
一樣可以把 kernel 帶起來
此時的 uboot env 為
bash-4.3# fw_printenv
app_choose=if test ${no_good} = ".xx";
then echo replace primary app; run app_replace; setenv no_good .;
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=run bootcmd_v1.3
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootcmd_v1.3=run turnon_sysled; run reset_ethernet_and_mobile;
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}
bootdelay=0
bootloader_ver=1.0
console=ttymxc0
dtb_a_addr=0x00E00000
dtb_b_addr=0x08E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
hw_mcsv=013600721722C2B2
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;
reset_ethernet_and_mobile=mw 0x020E00BC 00000005 1; mw 0x020E00C0 00000005 1;
mw 0x0209C004 C0000000 1; mw 0x020AC004 00000080 1;
mw 0x0209C000 00000000 1; mw 0x020AC000 00000000 1;
sleep 1;
mw 0x0209C000 C0000000 1; mw 0x020AC000 00000080 1
serialno=NA
stderr=serial
stdin=serial
stdout=serial
turnon_sysled=mw 0x020E01CC 0x00000005 1; mw 0x020A0004 00100000 1; mw 0x020A0000 00000000 1
uboot_env_1.3_bondary_1=therer are 3 bondary
uboot_env_1.3_bondary_2=therer are 3 bondary
uboot_env_1.3_bondary_3=therer are 3 bondary
uboot_env_ver=1.3
no_good=.
wdog_prev_image=1
改用 mfgtools 燒一個 P:\2_Projects\3_Wireless\M300_M301\firmware\20190314_V1.77\Xentino
的 MR401-G_013600721772E76A_mfgtools.zip
紀錄一下開機後的 uboot env
bash-4.3# fw_printenv
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=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=0
bootloader_ver=1.0
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;
stderr=serial
stdin=serial
stdout=serial
uboot_env_ver=1.3
hw_mcsv=013600721772E76A
serialno=NA
no_good=.
wdog_prev_image=1
注意到 bootcmd 的值
bootcmd=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}
透過 web ui downgrade 成 M300_M301\firmware\20180905_V1.72\Xentino
的 MR401-G_v1.72_013600721722C2B2.img
upgrade 後直接重開機
可以把 kernel 帶起來
不過此時 uboot env 的 bootcmd
已經被改掉了 - bootcmd=run bootcmd_v1.3
word: bash-4.3#
bash-4.3# fw_printenv
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=b
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=a
baudrate=115200
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)
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_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=0
bootloader_ver=1.0
console=ttymxc0
dtb_a_addr=0x00E00000
dtb_b_addr=0x08E00000
ethact=FEC1
ethprime=FEC
fdt_addr=0x83000000
fdt_high=0xffffffff
hw_mcsv=013600721772E76A
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;
serialno=NA
stderr=serial
stdin=serial
stdout=serial
uboot_env_ver=1.3
bootcmd=run bootcmd_v1.3
no_good=.
wdog_prev_image=2
這會造成下次的開機就涼涼了
U-Boot 2015.04imx_v2015.04_4.1.15_1.2.0_ga+gede7538 (Jan 28 2019 - 00:59:48)
CPU: Freescale i.MX6UL rev1.1 at 396 MHz
CPU: Temperature 41 C
Reset cause: POR
Board: MX6UL 14x14 EVK
I2C: ready
DRAM: 512 MiB
turn on the IO control power
turn on sys led
reset Ethernet 1
reset Ethernet 2
reset Mobile
force_idle_bus: sda=0 scl=0 sda.gp=0x1d scl.gp=0x1c
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: Phy 1 not found
PHY reset timed out
FEC1
Error: FEC1 address not set.
Normal Boot
Hit any key to stop autoboot: 0
## Error: "bootcmd_v1.3" not defined
先擋一下產線不要用 V1.76 以及 V1.77 來生產
剛剛找了 ariel 過去跟 shin 聊了一下
我直接說目前的現象
用 v1.76 或 v1.77 生產出來的板子
只要 downgrade 1.75 或先前的版本就會導致這個現象
shin 表示這影響不大 他可以 handle
我則是要想個辦法在 V2.0 克服這個問題
我需要整理一下情報 update 這個 issue