当前位置: 首页 > news >正文

LoongSon——PMON实战命令手册:从启动到调试

1. PMON基础入门龙芯平台的启动管家第一次接触龙芯开发板时看到黑屏上跳动的PMON提示符我整个人都是懵的。这玩意儿既不像BIOS也不像U-Boot输入help还全是晦涩的缩写命令。后来才发现PMON其实是龙芯平台的大管家从硬件初始化到内核加载全都归它管。PMON全称Processor Monitor是龙芯处理器专属的Bootloader。和常见的U-Boot不同它直接内嵌在处理器内部上电后第一个跑的就是它。我经手过的龙芯2K1000、3A4000开发板启动时都会先进入这个蓝底白字的界面。最神奇的是它支持完整的命令行交互不仅能加载内核还能直接操作内存、修改设备树甚至自带网络协议栈。这里有个新手容易踩的坑PMON的命令风格特别像Unix但又有自己的方言。比如查看内存不是用md而是用d系列命令修改环境变量不是用printenv/setenv而是直接用set。刚开始我总把U-Boot的习惯带过来结果各种报错。后来总结了个规律——所有命令都不超过3个字母功能越基础命令越短。2. 系统启动全流程实战2.1 网络加载内核的三种姿势最常用的启动方式莫过于网络加载了特别是在调试阶段。我习惯先用devls确认网卡设备名龙芯板子一般显示为syn0或rtl0。设置IP只需要一句ifaddr syn0 192.168.1.100接着就是经典的tftp三部曲load tftp://192.168.1.1/vmlinux initrd tftp://192.168.1.1/initrd.gz g consolettyS0,115200这里有个隐藏技巧如果内核启动卡住可以在g命令后加-s参数进入单步模式。有次调试驱动时我就是靠这个发现内核卡在SD卡初始化阶段。另外initrd不是必须的如果是内置根文件系统的内核可以直接g启动。2.2 U盘启动的避坑指南比起网络加载U盘启动更依赖硬件兼容性。首先要用devls确认U盘设备名通常是usb0或usb1。加载命令看起来简单load (usb0,0)/vmlinux但实际使用时我踩过两个坑一是U盘必须FAT32格式NTFS会识别失败二是分区表必须是MBRGPT分区会报invalid device。建议专门准备个老式U盘做启动盘新买的USB3.0盘反而容易翻车。3. 固件烧写的正确姿势3.1 NAND Flash操作三板斧给龙芯板烧写系统要格外小心我见过有人误操作把整片Flash擦成砖。安全流程应该是查看分区表mtdparts擦除分区一定要带r后缀跳过坏块mtd_erase /dev/mtd0r烧写内核devcp tftp://192.168.1.1/vmlinux /dev/mtd0特别注意mtd_erase不带r参数会强制擦除坏块可能导致Flash寿命缩短。有次批量烧写时偷懒没加r结果有块板子的NAND直接写保护了血的教训。3.2 环境变量的妙用PMON的环境变量比U-Boot灵活得多可以存整个启动流程set al1 /dev/mtd0 set rd /dev/mtd1/initrd.gz set append consolettyS0,115200 root/dev/mtdblock1调试时我常建个debug变量组set debug_cmd load tftp://192.168.1.1/vmlinux;g需要时直接执行$debug_cmd4. 内存与设备树调试技巧4.1 内存查看的四种武器PMON的d系列命令堪称调试利器d1查看字节d1 0x80000000 16d2查看半字d2 0x80000000 16d4查看字d4 0x80000000 16d8查看双字d8 0x80000000 16有次排查内存泄漏就是靠d4发现某地址数据异常增长。修改内存同样方便比如改GPIO状态m4 0xbfe10420 0x000000014.2 设备树动态调试龙芯的设备树操作简直黑科技print_dtb /soc/uart0xBFE20000能直接打印串口节点所有属性。更厉害的是支持运行时修改rm_dtb_node /soc/usb0xBFE10000这个在调试USB驱动时帮了大忙不用重新烧写就能禁用问题设备。5. 实战故障排查案例上周就遇到个典型问题板子启动卡在Starting kernel...。用以下步骤定位单步执行发现卡在内存初始化print_dtb查看发现内存参数错误通过m8命令修正内存大小重新烧写正确dtb文件整个过程不用接JTAG全靠PMON命令搞定。另外分享个冷知识PMON的ping命令其实能测网络延迟有时候比Linux下的ping还准。
http://www.rkmt.cn/news/1408768.html

相关文章:

  • 实战指南:在Kali Linux 2024.1中部署OWASP WebGoat 8.3.0
  • LightGlue:突破性自适应特征匹配技术实现10倍速度提升
  • 如何在现代浏览器中实现无插件的FLV播放?flv.js完整实战指南
  • 知识图谱驱动的研究工具:从信息孤岛到智能工作流
  • 保姆级教程:从零在LEVIR-CD数据集上复现DDPM-CD变化检测模型(PyTorch版)
  • 倾向得分加权Cox模型:ATT/ATO权重下方差估计的陷阱与校正
  • AI产品经理学习汇总
  • Taotoken模型广场助力快速选型与对比主流大模型效果
  • LLM应用安全实战:构建IPI-Scanner防御间接提示注入攻击
  • 2026年5月更新江苏无尘室净化空调系统:一体化服务商的深度选择指南 - 2026年企业资讯
  • 7种字重完整开源:思源宋体CN重塑你的中文排版体验
  • 开发团队如何通过Taotoken实现API密钥的统一管理与审计
  • Claude Code本地化部署与智能体编程实战指南
  • 2026年5月长春数字科技职业大专选校指南:深度解析长春数字科技职业学院 - 2026年企业资讯
  • 避坑指南:Unity中用C# DateTime处理时间,别忘了时区和性能这两件事
  • AI赋能软件无线电:从认知无线电到物理层安全的实战落地
  • 无线传感器网络高精度定位:双向自适应与模糊权重PSO优化
  • 用Python搞定CIC-IDS-2017数据集:从原始CSV到机器学习可用的完整预处理流程
  • 新手避坑指南:用PHPStudy 8.1.1.3搭建XHCMS靶场,从建站到配置数据库的完整流程
  • P16225 [蓝桥杯 2026 省 A] 量子 2048 题解
  • 2025-2026年尚百年全铝家居联系电话:电话查询前请核实产品特性与订购流程 - 品牌推荐
  • 瑞芯微RK3588 开发板USB线刷eMMC系统教程
  • 弱人工智能、强人工智能、超人工智能 概念解析
  • 钉钉消息防撤回补丁PC版:终极解决方案,让你不再错过任何重要信息
  • 实战复盘:我用Python+Appium给公司老旧的Win32客户端做自动化回归测试,踩了这些坑
  • 【小白零基础】 OpenClaw2.7.5 Windows 快速部署方法(包含安装包)
  • 百考通AI:智能问卷设计,轻松输出专业内容
  • Pearcleaner:Mac应用清理的终极解决方案,彻底释放存储空间
  • ArcGIS10地图包:从打包到解包,一站式解决工程数据共享难题
  • ABAQUS作业XML解析失败:从报错信息到资源调优的实战排查