加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

龙芯pmon常用命令

发布时间:2020-12-15 06:23:53 所属栏目:百科 来源:网络整理
导读:?PMON是一个兼有BIOS和boot loader部分功能的开放源码软件,多用于嵌入式系统。 与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多。基于龙芯的系统采用 pmon 作为类 BIOS 兼 bootloader,并做了很多完善工作。 其有如下主要特点: ??? * 支持ext
?PMON是一个兼有BIOS和boot loader部分功能的开放源码软件,多用于嵌入式系统。

与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多。基于龙芯的系统采用 pmon 作为类 BIOS 兼 bootloader,并做了很多完善工作。

其有如下主要特点:
??? * 支持ext2 fat32 ram 文件系统
? ? * 支持网络引导(tftp),磁盘引导,flash 引导
? ? * 内建调试功能(强大,调试内核举重若轻)
? ? * USB 2.0 Mass Storage 支持
? ? * 支持MIPS、ARM、PowerPC 平台
? ? * BSD Licensed
? ? ...
以下结合实际,给出开发中常用的命令介绍
1. pmon 日常命令
??? a. load --- 加载文件
??? load [-options] pathname
??? -o offset ? ? 将文件加载到内存 load_address + offset 处
? ? -f addr ? ? ? 将文件加载到 flash 的地址 addr 处
? ? pathname ? ? 要加载的文件路径或URL
??? 其他选项 h load 查看
??? 例子:
??? 加载位于硬盘第一个分区的(pmon 只认第一个分区)内核:
??????? load /dev/fs/ext2@wd0/boot/vmlinux ? # 第一个分区是ext2文件系统
? ? ? ? load /dev/fs/ext2@wd0b/boot/vmlinux #加载第二个分区上的内核文件,wd0c,wd0d,为第三,四个分区。

??? 从远程tftp服务器上加载内核: (该功能在反复编译调试内核中很方便)

? ? ? load tftp://192.168.10.100/vmlinux ? # 先要配置好网络


? ? 其他格式:
? ? ? ?
? ? load /dev/fs/iso9660@cd0/boot/vmlinux
? ? ? ? load /dev/ram@address
? ? ? ? load /dev/ram@address,size
? ? ? ? load /dev/ram/logger

? ? ? ? 这些在龙梦电脑上很少用到,不知有没有被支持(未测试)


? ? ? PS: 以上 wd0,cd0,ram 为pmon 对设备的命名,可以用 devls 命令查看他发现并支持
? ? ? ? 的所有设备,龙梦电脑上常见的设备为:

? ? ? ? ? wd0 --------- 磁盘
? ? ? ? ? rtl0 --------- 网卡
? ? ? ? ? usb0 --------- usb 存储设备

? ? ? ? ? cd0 --------- 光盘
? ? ? ? ? ram --------- 内存

? ? ? ? ?
? b. g ------ 执行程序

? ? g [-st] [-b addr] [-e addr] [-- args...] ? ?

? ? 当 load 完一个文件后,通过 g 命令告诉 pmon 开始执行刚刚载人的文件


? ? 例子: ? ?

? ? ? ? g? # 从 epc 寄存器指定的地址处开始执行

? ? ? ? g -e addr # 从内存地址 addr 处开始执行

? ? ? ? g -e addr -b add2 # 从内存地址 addr 处开始执行,在addr2处设置一个临时断点
? ? ? ? ? ? ? ? # 在下一次执行挂起时删除该断点

? ? ? ? g console=tty root=/dev/hda1 # 从 epc 寄存器指定的地址处开始执行,并将参数
? ? ? ? ? ? ??? # console=tty root=/dev/hda1 传递给程序(内核)


? c. devls ------- 显示设备

? ? devls [-a]

? ? ? 例子:

? ? ? ? devls -a # 显示所有设备
?


? ? d. ifaddr ------ 配置网卡

? ? ifaddr ifname ipaddr[:ifparameters]

? ? 其中 第二个字段可以为 ipaddr:netmask:broadcast:gateway

? ? ? 例子:

? ? ? ? ifaddr rtl0 192.168.10.99 # 设置网卡 rtl0 的 IP 地址
? ? ? ?
? ? ? ? ifaddr rtl0 192.168.10.99:255.255.255.0::192.168.10.2 # 设置网卡 IP 地址和网关
? ?

? ? e. ping

? ? ping 192.168.10.188 # 测试网络是否配置好

[补充]

A. PMON 更新命令

load -r -f bfc00000 tftp://SERVER_IP/gzrom.bin

load -r -f bfc00000 /dev/fs/ext2@wd0/gzrom.bin

可以从系统更新PMON:

modprobe physmap ? ? [装上mtd驱动以识别eeprom]

mknod /dev/mtd0 c 90 0 ? ? [创建mtd设备文件]

cp gzrom.bin /dev/mtd0 ? ? [写入]
sync

reboot


B. 从 USB 光驱加载 kernel:

? load iso9660/usb0/path/to/kernel


C. 从 U 盘或者移动硬盘加载 kernel:

? load /dev/fs/ext2@usb0/path/to/kernel

? 注意:如果根文件系统位于 U 盘或者移动硬盘的话,传给内核的参数应为:

? ? root=8:1 rootdelay=5


//------------------------------------------------------------另一篇文章----------------------------------------------------
输出到串口/显示器(永久起效)
set novga 1/0

输出到串口/显示器(临时起效)
setvga 0/1

设定默认启动内核,第一个IDE硬盘第一个分区(其他分区改a为其他字母即可):
set al /dev/fs/ext2@wd0a/boot/vmlinux-2.6.18-godson2e

设定内核启动参数:
set karg "console=tty root=/dev/hda2 init=/sbin/runit-init"

加载内核:
load /dev/fs/ext2@usb0/path/to/netboot.image

启动内核:
g console=tty root=/dev/hda1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读