设置 bootdelay 为 0 后,拯救 uboot 串口

为了将 OpenWRT 的启动时间加快,我把 uboot 的环境变量 bootdelay 设置为 0。之后发现再也无法进入 uboot 命令行。

使用下面的命令,在 OpenWRT 命令行下修改 uboot 的 bootcmd 环境变量,发现 mtd1 为只读不可写。

root@OpenWrt:/# fw_setenv bootdelay 2
Can't open /dev/mtd1: Permission denied

在 dts 文件中 (我用的设备是 Xiaomi 4c 路由器,对应的文件为 mt7628an_xiaomi_mi-router-4.dtsi),将 uboot 的 config 区的 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 的串口就拯救回来了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容