龍芯-PMON


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM