LoongSon——PMON常用命令整理

通过pmon启动内核相关命令

 

网络加载:

  load tftp://server‐ip/vmlinux

  initrd tftp://server‐ip/initrd.gz

  g console=tty console=ttyS0,115200

 

u 盘启动:

  load (usb0,0)/vmlinux

  initrd (usb0,0)/initrd.gz

  g console=tty console=ttyS0,115200

 

命令解释:

命令: load

格式: load <elf‐file>

解释: load  命令是  PMON  中一个很重要命令。作用是加载一个  elf  文件到内存中(这里只是存放到内存中,而没有烧写到flash中),加载过程是一个自动根据elf文件的信息处理elf文件重定向的等等操作的总体过程,所以这里不需要指定加载的内存地址,load命令会自动完成。

如:load tftp://server‐ip/vmlinux

如上命令,是从网络  tftp  服务器中加载内核到内存中。

如:load /dev/mtd0b

如上命令,  是从  nandflash  的第一个分区开始处中加载一个elf文件到内存中,这里一般存放着内核,这也是加载内核的另一种方法。

注:这里的  vmlinux  是一个  elf  文件,如果指定加载的文件不是  elf  文件,将提示错误。

 

命令: initrd

格式: initrd <img file>

解释: 加载initrd image

 

命令: g

格式: g [‐s][‐b bpaddr][‐e addr][‐‐args]

解释: g  命令是  PMON  中一个很重要的命令,直接从指定内存地址处开始执行程序

如:g  –e addr

如上命令,直接从内存地址  addr  处开始执行程序,正常操作前提是在  addr  开始处的内存中已经存放了一个可执行的程序,addr  是这个程序的入口地址,如我们知道内存地址0x80010000  是  pmon  代码段存放开始地址,  执行  g  –e 0x80010000  将会从新执行pmon  代码,  相当于了重启  PMON (这时不会从  flash  中拷贝执行  pmon)

load tftp://server‐ip/vmlinux

g console=ttyS0,115200 rdinit=/sbin/init

如上命令和 load 命令配合使用,在 load 完成后,使用 g 命令自动从加载后的内核入口地址开始执行内核,这是 g 后面在参数  “console=ttyS0,115200 rdinit=/sbin/init”是内核启动的参数。

 

跟启动相关的环境变量

跟启动相关的环境变量有 al1, rd, append,分别对应内核,initrd 路径及启动参数,例如

可以设置为:

set al1 /dev/mtd0

set rd /dev/fs/yaffs2@mtd1/initrd.gz

set append console=tty console=ttyS0,115200

命令解释:

命令: set

格式: set [name] [value]

解释:  查看  pmon  中的环境变量,设置环境变量  name  为  value

如: set (查看显示  pmon 中所有的环境变量) ;

      set wk kkk (添加或者修改环境  wk  的值为  kkk)

 

pmon 烧写内核及文件系统到 nand 方法

烧写之前需要擦除,命令如下:

mtd_erase /dev/mtd0r  //0 代表分区,r 后缀代表擦除不跳过坏快

mtd_erase /dev/mtd1r

devcp tftp://server‐ip/vmlinux /dev/mtd0

devcp tftp://server‐ip/roofs‐yaffs2.img /dev/mtd1y

set al1 /dev/mtd0

set append console=ttyS0,115200 rdinit=/sbin/init root=/dev/mtdblock1 rw

rootfs=yaffs2

命令解释:

命令: devcp

格式: devcp <src‐device> <desc‐device>

解释: devcp  命令应该是  PMON  中比较重要的命令。

其实现是:打开  src‐device  和  desc‐device 两个设备,从  src‐device  读取一定数量的字节数据,写到 desc‐device  设备中去,完成后关闭这两个设备。

如:devcp tftp://server‐ip/vmlinux /dev/mtd0

如上命令,从  tftp  服务器中接收读取内核  vmlinux,写到  nandflash  的第一个分区中,这是常用的烧写内核到 flash 中一个常用命令

如:devcp tftp://server‐ip/roofs‐yaffs2.img /dev/mtd1y

如上命令,从  tftp  服务器中接收读取根文件系统的  yaffs2  镜像文件  rootfs‐yaffs2.img

烧写到  nandflash  的第二个分区中。这是常用的烧写 yaffs2 文件系统到 nandflash 中的一个常用命令。

 

命令: mtdparts

格式: mtdparts

解释: 显示 nandflash 的现在分区信息。

 

命令: mtd_erase

格式: mtd_erase <mtd‐device>

解释:  擦除  nandflash  的一个分区

(擦除  nandflash  的第一个分区,跳过已经是坏块的地方,不会尝试擦除已经是坏块的地方);

mtd_erase /dev/mtd0r

(擦除  nandflash  的第一个分区,这时会尝试擦除所有的块,即使是坏块也会尝试执行擦

除操作)。

 

pmon 下查看及修改 dtb

Pmon 命令行支持,查看、删除、重新烧写 dtb。

Pmon 下查看 dtb 命令:

Print_dtb /  打印出 dtb 所有内容

Print_dtb /soc/dc@0x400c0000  打印出 dc 的所有内容

 

Pmon  下删除 dtb

rm_dtb_node /    删除整个 dtb

rm_dtb_node /soc/hda@0x400d00000  删除 had 内容

 

pmon 下重新烧写 dtb

dtb 会把内存大小信息传递给内核,如果这部分内容传递错误会造成不可预知错误。如果重新烧写内部部分内容,需要通过 print_dtb 命令把内存部分内容读出,更新到新的 dts 文件中(3号处理器不传递内存信息)。

在 pmon 编译目录下执行  make dtb 会生成 Bonito3a3000_7a.dtb 文件。此文件可单独烧写。  

烧写命令和 烧写pmon一致

 

其他命令简介 

命令: d1

格式: d1 <addr> <num>

解释: display  简写

按无符号字符型(unsigned char)访问显示  num  个从地址  addr  开始的内容值。

如:d1 0x85000000 0x10

显示从内存地址  0x85000000  地址处的  0x10  个字节(8  位),0x85000000‐0x8500000f

 

命令: d2

格式: d2 <addr> <num>

解释: display  简写

按  (unsigned short)  访问显示  num  个从地址  addr  开始的内容值。   

如: d2 0x85000000 0x10

显示从内存地址  0x85000000  地址处的  0x10  个  unsigned short  类型(16  位)的数值,0x85000000‐0x8500001e

 

命令: d4

格式: d4 <addr> <num>

解释: display  简写

按(unsigned long)访问显示  num  个从地址  addr  开始的内容值。

如: d4 0x85000000 0x10

显示从内存地址  0x85000000  地址处的  0x10  个  unsigned long  类型(32  位)的数值,0x85000000‐0x8500003c

 

命令:d8

格式: d8 <addr> <num>

解释: display  简写

按  (unsigned long long)  访问显示  num  个从地址  addr  开始的内容值。

如: d8 0x85000000 0x10

显示从内存地址  0x85000000  地址处的  0x10  个  unsigned longlong(64  位)类型的数值, 0x85000000‐0x85000078

 

命令: m1

格式: m1 <addr> <value>

解释: modify  简写

按无符号字符型(unsigned char)访问修改地址  addr  的内容值。

如: m1 0x85000000 0x10

修改内存地址  0x85000000  地址处的一个  unsigned char  型值相当于:*(unsigned char*)addr = value;

 

命令: m2

格式: m2 <addr> <value>

解释: modify  简写

按无符号字符型(unsigned short)访问修改地址  addr  的内容值。   

如: m2 0x85000000 0x10

修改内存地址  0x85000000  地址处的一个  unsigned short  型值相当于:*(unsigned short*)addr = value;

 

命令: m4

格式: m4 <addr> <value>

解释: modify  简写

按无符号字符型(unsigned long)访问修改地址  addr  的内容值。

如: m4 0x85000000 0x10

修改内存地址  0x85000000  地址处的一个  unsigned long  型值相当于:*(unsigned long*)addr = value;

 

命令: m8

格式: m8 <addr> <value>

解释: modify  简写

按无符号字符型(unsigned long long)访问修改地址  addr  的内容值。

如: m8 0x85000000 0x10

修改内存地址  0x85000000  地址处的一个  unsigned long  型值相当于:*(unsigned long long*)addr = value;

 

命令: devls

格式: devls

解释:  查看  pmon  的部分设备,  这里显示出来的设备不是全部的设备。

一般会有网卡, USB,CF  卡,sd  卡,硬盘等等,主要用查看设备的名字,以供其他操作的使用。

 

命令: ifaddr

格式: ifaddr <interface> <ipaddr>

解释:  设置网卡的  IP  地址,如:ifaddr syn0 192.168.0.1 (syn0  是网卡的名字,可以使用  devls  命令查看获得,这里不用设置子网掩码,pmon  会自动设置子网掩码为255.255.255.0)

 

命令:ping

格式: ping <ipaddr>

解释: 简单检测,如:ifconfig syn0 (syn0  是网卡的名字,可以使用  devls  命令查看获得)

 

命令: unset

格式: unset <name>

解释: 去掉名字为  name  的环境变量。关于环境变量的讲解参看附录  PMON  环境变量

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值