2012/10/21

nextvod - u-boot 開機啟動程式

[2012/12/30修訂]
使用 console 線連到網樂通,一開機兩秒內立刻按任意鍵,可以進入 PDK7105 u-boot命令模式. 網樂通使用修改過的u-boot,(STLinux u-boot)
使用其 help 或是 ? 指令可以看到指令說明
簡單分類如下
  • 顯示類:?,askenv, base,bdinfo,coninfo,echo,logo,help,md,version
  • 設定類:askenv,base,changeMacAddr,changeflag,changepn
  • 燒錄類:auto_update_uboot_to_spi,eeprom,eraseSPIData,saveenv,set_pushupdate_flag,update_spi_uboot
  • 執行類:autoscr,boot,bootd,bootm,bootp,go,itest,nboot,nfs,rarpboot,reboot,reset,tftpboot,usbboot
  • 工具類:cmp,cp,crc32,usb
  • 網路類:dhcp,ping
  • script:exit,ext2load,ext2ls,fatinfo,fatload,fatls,fsinfo,fsload,loadb,loads,loady,loop,run,setenv,sleep,test
  • 記憶體相關:mm,mtest,mw,nm
  • 其他: mii,nand,pmb,sspi,
重要指令範例:
  • printenv bootcmd  # 查看從USB讀取核心載入記憶體 的指令
  • printenv booargs # 執行核心時帶入的參數
  • 使用第一個分區開機(0:1, 8:1 代表第一個分區, 00:00:00 需參考本來的 bootargs)
    • setenv bootcmd "ext2load usb 0:1 80000000 vmlinux.ub; bootm 80000000"
    • setenv bootargs "console=ttyAS0,115200 root=8:1  rootfstype=ext3 rw rootflags=data=journal nwhwconf=device:eth0,hwaddr:10:08:E2:00:00:00 phyaddr:0,watchdog:5000 mem=120M bigphysarea=2048"
    • boot
  • 使用第二個分區開機
    • setenv bootcmd "ext2load usb 0:2 80000000 vmlinux.ub; bootm 80000000"
    • setenv bootargs "console=ttyAS0,115200 root=8:2  rootfstype=ext3 rw rootflags=data=journal nwhwconf=device:eth0,hwaddr:10:08:E2:00:00:00 phyaddr:0,watchdog:5000 mem=120M bigphysarea=2048"
    • boot
  • saveenv # 將參數永久存到 flash 裡
發現的指令問題:
  • do_displayFPN 沒作用
  • fsinfo,ls 顯示出 scanning bus 後當機
  • ping 之後無法停止
  • saveenv 沒效? 原因不明

編譯 U-boot

取得程式碼(兩個來源選一個):

編譯 u-boot 裏面的 mkimage 工具
  1. unzip U-boot_sourcecode.zip ; unzip ../U-boot_sourcecode.zip mk_uboot
  2. tar xf u-boot-sh4-1.3.1_stm23_0045.tar.gz 
  3. cd u-boot-sh4-1.3.1_stm23_0045
  4. make pdk7105se_config
  5. make -j5
  6. ln tools/mkimage ../..
  7. cd ../..
編譯其他部份(一般來說用不到),參考來源2裏面的README

參考資料:

沒有留言: