龙芯2k0300 PMON取消Linux自启动

适用场景 :调试固件、烧录新系统、排查启动问题
关键词:龙芯 2K0300、PMON、取消自动启动、boot.cfg、auto_loaded

在使用 龙芯 2K0300 开发板 进行嵌入式开发时,我们经常需要 中断 PMON 的自动启动流程 ,以便手动加载内核、烧写镜像或调试硬件。但你会发现:PMON 并不像 U-Boot 那样支持 saveenv 命令,导致设置无法持久保存。

本文将介绍两种可靠方法,助你彻底"停住"PMON,进入命令行调试模式。


❓ 为什么需要取消自启动?

默认情况下,PMON 启动后会:

  1. 倒计时 3 秒(Booting system in [3] second(s)...
  2. 自动扫描 eMMC/SD 卡/U 盘中的 boot.cfg/boot/boot.cfg
  3. 按配置加载 Linux 内核并启动

这在量产设备中很实用,但在开发阶段却会阻碍调试------你根本来不及按任意键中断!


✅ 方法一:尝试设置 auto_loaded 0(临时有效)

这是最直接的方式,但在 2K0300 上通常无法永久生效

操作步骤:

  1. 开机时按任意键,进入 PMON 命令行:

    复制代码
    Booting system in [3] second(s)...
    (快速按任意键)
    PMON>
  2. 输入命令禁用自动加载:

    pm 复制代码
    PMON> set auto_loaded 0
  3. (可选)清空启动命令:

    pm 复制代码
    PMON> setenv bootcmd ""
  4. 重启测试

    pm 复制代码
    PMON> reset

⚠️ 重要限制:

  • saveenv 命令不存在!
    在龙芯 2K0300 的标准 PMON 中,没有 saveenv 命令 (执行会提示 Command not found)。
  • 因此,上述设置仅在本次会话有效,重启后恢复默认行为。

💡 结论:此方法适合单次调试,但无法"永久"禁用自启动。


✅ 方法二:重命名 boot.cfg(推荐!持久有效)

既然 PMON 的自动启动依赖 boot.cfg/boot/boot.cfg 文件,那我们就让它找不到这个文件

原理:

  • PMON 启动时会依次扫描 eMMC、SD 卡、U 盘的 boot.cfg/boot/boot.cfg
  • 如果找不到,就会放弃自动启动,停在 PMON> 命令行

操作步骤:

  1. 先正常启动进入 Linux 系统(确保能访问 eMMC)

  2. 执行重命名命令:

    bash 复制代码
    sudo mv /boot/boot.cfg /boot/boot.cfg.bak
  3. 重启开发板

    bash 复制代码
    sudo reboot
  4. 观察串口输出:

    • 不再出现倒计时
    • 直接进入 PMON> 提示符
    • 可自由输入命令(如 help, mmcinfo, usb 等)

成功!现在你可以随意调试了。


🔁 如何恢复自动启动?

只需把文件名改回来:

bash 复制代码
sudo mv /boot/boot.cfg.bak /boot/boot.cfg
sudo reboot

下次启动,PMON 将恢复正常自动加载。


🧪 补充:手动启动 Linux(无需 boot.cfg)

即使没有 boot.cfg,你仍可手动启动系统:

pm 复制代码
# 加载内核(假设在 eMMC 第一分区,ext4)
PMON>load (emmc0,0)/boot/vmlinuz-custom-loongarch

# 启动
PMON>g  console=tty console=ttyS0,115200 rdinit=/sbin/init rootdelay=5 root=/dev/mmcblk0p1

📌 总结

方法 是否持久 操作难度 推荐度
set auto_loaded 0 ❌ 临时 ★★☆
重命名 boot.cfg ✅ 永久 ⭐⭐ ★★★★★

对于龙芯 2K0300 开发者,强烈推荐使用"重命名 boot.cfg"方案 ------ 简单、可靠、无需修改固件。

相关推荐
T1mzhou6 分钟前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
小羊没烦恼!22 分钟前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
Elastic 中国社区官方博客22 分钟前
教程:使用 ES|QL 进行威胁狩猎
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·安全威胁分析
bwz999@88.com1 小时前
Ubuntu Server 24.04 设置中文
linux·运维·ubuntu
fly-971 小时前
Ubuntu FTP/SFTP 报错:找不到匹配的 hostkey 算法 完整解决
linux·ubuntu
Cx330❀1 小时前
【Linux网络】网络层协议 IP :从网络层原理到 Linux 内核源码
linux·运维·服务器·网络·tcp/ip·ai·ai编程
志栋智能2 小时前
运维超自动化的变更管理实践
运维·自动化
全栈攻略2 小时前
Docker 中 ROS2 工作流 Topic 验证与常用命令指南
运维·docker·容器
Gl�ria2 小时前
Linux 清理日志常用命令
linux·运维·服务器