為了將 OpenWRT 的啟動時間加快,我把 uboot 的環(huán)境變量 bootdelay 設(shè)置為 0。之后發(fā)現(xiàn)再也無法進(jìn)入 uboot 命令行。
使用下面的命令,在 OpenWRT 命令行下修改 uboot 的 bootcmd 環(huán)境變量,發(fā)現(xiàn) mtd1 為只讀不可寫。
root@OpenWrt:/# fw_setenv bootdelay 2
Can't open /dev/mtd1: Permission denied
在 dts 文件中 (我用的設(shè)備是 Xiaomi 4c 路由器,對應(yīng)的文件為 mt7628an_xiaomi_mi-router-4.dtsi),將 uboot 的 config 區(qū)的 read-only 去掉即可(見下面的代碼)
&spi0 {
status = "okay";
flash0: flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <10000000>;
partitions: partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "bootloader";
reg = <0x0 0x20000>;
read-only;
};
partition@20000 {
label = "config";
reg = <0x20000 0x10000>;
read-only; <----- 刪除該行
};
重新編譯,升級 firmware,重新使用 "fw_setenv bootdelay 2"。 uboot 的串口就拯救回來了。