當前位置:編程學習大全網 - 源碼下載 - uboot怎麽查找ddr的配置文件

uboot怎麽查找ddr的配置文件

如果因為uboot或者內核有錯誤而導致啟動失敗,出現卡死狀態等,那麽需要判斷問題是出在uboot階段還是linux階段,這可以通過觀察啟動過程中的debug信息來判斷,

如果uboot出現問題是比較麻煩的,因為這需要有壹個裝有正確的uboot/bootloader的flash芯片作為引導,

將系統重新引導至uboot界面中,之後再重新燒寫uboot到系統本身的flash中,進而燒寫內核(如有必要)。

壹,重新燒寫uboot

首先需要壹個特定的PCLL(flash芯片),這個PCLL上固化了壹個正確的bootloader, 通過這個bootloader可以成功進入bootloader界面, 在此條件下重新燒寫uboot/bootloader。

使用此PLCC的步驟是:

在系統下電情況下, 使用跳線/撥碼開關等將此系統的啟動方式變從外部flash(即PLCC)引導,

之後將系統上電, 這時會從PLCC 啟動。

啟動成功後,進入uboot界面, 即命令行顯示Dream 5220# #(類似命令行提示符)

此時將版卡的啟動方式變為 從 nor flash 啟動。 之後重新燒寫uboot到此nor flash 上。

再用 kermit 來操作。

Kermit是壹個串口服務工具,類似與minicom ,功能比minicom 多。

//kermit/usb0.cfg 是kermit 的配置文件, 在其中可以配置 /dev/ttyUSB0 等路徑

kermit -y kermit/usb0.cfg

-y kermit/usb0.cfg 指定配置文件。

該文件內容如下:

/*

set line /dev/ttyUSB0

set speed 115200

set carrier-watch off

set hardshake none

set flow-control none

robust

set file type bin

set file name lit

set rec pack 1000

set send pack 1000

set window 5

*/

將此文件保存在主目錄下, 命名為:kermit/usb0.cfg(可自定義)

執行後進入kermit 界面, 按 c

進入 串口界面(就是設備的界面)

切換回kermit 界面快捷鍵:Ctrl + \ , 之後再按 c 。

執行:

Dream 5220# # detect

顯示:

Checking for NOR flash...

Flash detect 33554432Mb

這說明flash狀態良好。

//讓串口進入接受狀態。

Dream 5220# # loadb

進入kermit 界面: ctrl + \ 按 c

執行:

send uboot.bin

就是將當前目錄下的uboot.bin 文件發送給串口。

完成後,進入串口界面。

執行:

Dream 5220# # upgrade 0x20000000 0x1dc00000 +0xe0000

0x20000000 是 kermit 執行 send 後 將文件send 到的默認地址。

再將文件寫到nor flash 的首地址:0x1dc00000 +0xe0000為寫的長度。

執行:reset。讓系統重啟。

/*

至此,新的uboot燒寫完成,reset後, 如果還是不成功的話,那麽問題肯定出在linux的的啟動階段或者新的uboot還是有問題,這可以通過啟動過程中的debug信息看出來

壹,如果內核有問題,導致linux沒有進入shell界面,要重新進入Uboot環境,就是在reset 之後,壹直按 ctrl + c ,這樣在uboot啟動完成後, 不會進入kernel的啟動階段,而是停留在uboot的命令行中,

在這個uboot 環境下,燒寫新內核, 配置ipaddr,serverip等,同最開始的例子中操作是壹樣的。

//本機uboot 的ip地址

setenv ipaddr 10.10.167.10

//服務器ip地址

setenv serverip 10.10.167.249

//下載linux內核vmlinux52

// 在服務器的tftpboot目錄下存在相應文件,搭建到tftp服務環境

tftpboot 0 vmlinux52

// 燒寫到flash 上。

// 0x20000000 是vmlinux52的存貯位置。

// 0x1dd00000 是系統內核的起始位置(每個設備位置不同),

// +0x600000是文件長度

upgrade 0x20000000 0x1dd00000 +0x600000

在reset 之前,壹般還要設置壹下環境變量。

比如

setenv linux_args mtdparts=octeon_nor0:1m(BOOT),7m(LINUX),21m(CONFIG),3m(MD)

setenv bootcmd 'bootoctlinux 0x1dd00000 coremask=0x3 mem=700'

//保存

saveenv

bootoctliux

二 ,如果新燒寫的uboot本身有問題,那麽修改uboot代碼,編譯通過後, 使用PLCC重復上述燒寫過程。

  • 上一篇:關於仿生學的信息
  • 下一篇:debug和release的區別
  • copyright 2024編程學習大全網