當前位置:編程學習大全網 - 源碼下載 - 如何在magicarm2410上移植文件系統

如何在magicarm2410上移植文件系統

原先沒有做過U-boot的移植,現在感覺這壹步還是通壹下比較好,就決定移植壹個試試。

我手頭的板子是學校的周立功MagicARM2410,原先上面有周立功的bootloader(應該也是U-boot),但是只有壹個bin文件,不提供源碼(很不厚道的說)。

開發環境就是我的虛擬機Vmware Workstation ACE版+Fedora12+esroot。

相關閱讀:U-Boot源代碼下載地址 /Linux/2011-07/38897.htm

強烈推薦Vmware Workstation ACE版,性能真強大,我原先的壹個fedora8的虛擬機映像用別的版本的Vmware Workstation都打不開,要不就是進不了圖形界面。在ACE版本下壹下子就打開了。

Fedora12經過這些天的使用,感覺還是很不錯的,應該說是最好用的fedora版本。交叉編譯等操作都沒出現過什麽問題,網絡功能也很好用,

設置虛擬機的時候選擇使用網橋,fedora12能方便的訪問window下的文件夾(該文件夾需設置為***享),也能方便的上網。做嵌入式linux的人

應該知道,上面這兩點是多麽的重要。

esroot就是我的秘密武器啦!是利用chroot構建的嵌入式linux的開發環境,或者叫山寨版的IDE。可以大幅提高開發效率,有效的管理開發相關的文件。有時間的時候在把這個東西寫上來。

U-boot移植到2410的方法網上資料已經很多了(參考/Linux/2011-02/32772.htm),

基本上是基於smdk2410(U-boot支持)再針對自己的板子做壹些修改。我們可以思考壹下在bootloader階段會用到板子的那些設備。如果

妳的U-boot只用於下載kernel(還有ramdisk等)和引導系統,那麽cpu,sdram,nor flash, nand

flash,串口,網卡也就基本夠了。 而通常所需要做的修改主要集中在2個部分:網卡和nand

flash。smdk2410選用的網卡是cs8900,而MagicARM2410是DM9000。smdk2410沒有對nand

flash的初始化,這部分也需要修改。

下面說說我遇到的問題,就是卡住我5個工作日的問題:DM9000不工作。

先說說我壹開始做的:

使用DM9000,需要修改my2410.h(復制於smdk2410.h),去掉原先cs8900的內容,改為DM9000的內容。如下:

#define CONFIG_DRIVER_DM9000 1

#define CONFIG_DM9000_BASE 0x18000300

#define DM9000_IO 0x18000300

#define DM9000_DATA 0x18000304

#define CONFIG_NET_MULTI

#define CONFIG_DM9000_USE_16BIT 1

#define CONFIG_DM9000_NO_SROM 1

//#define CONFIG_DM9000_DEBUG 0x01

DM9000的基地址0x18000300是由MagicARM2410的硬件結構決定的。它采用nGCS3片選DM9000,所以基地址為

0x18000300。CONFIG_DM9000_NO_SROM定義不從DM9000片內EEPROM讀取MAC地址,這個要設定,因為

MagicARM2410上的DM9000片內EEPROM管腳根本就都沒有接,全懸空著怎麽讀取MAC地址?!

CONFIG_DM9000_DEBUG選擇如果設為真的話,會使能dm9000x.c(DM9000驅動)串口會輸出更多的調試信息。

然後我改了壹點兒dm9000x.c,在最後的dm9000_initialize(bd_t

*bis)函數裏面加了壹條dm9000_init(dev,bis)。這樣U-boot啟動後會初始化壹次DM9000,否則在用到網卡時才進行初始化

(如使用PING,tftp命令等)。

這樣看來就沒什麽問題了。編譯通過,下載到板子上ok。上電後串口出現:

U-Boot 2009.11 (Dec 30 2009 - 00:04:33)

DRAM: 64 MB

Flash: 2 MB

*** Warning - bad CRC, using default environment

In: serial

Out: serial

Err: serial

Net: dm9000

SMDK2410 #

dm9000_init

resetting DM9000

resetting the DM9000, 1st reset

resetting the DM9000, 2nd reset

ERROR: resetting DM9000 -> not responding

dm9000 not found at 0x18000300 id: 0x00000000

網卡燈不亮,PC顯示本地連接斷開。

問題出現了。然後就是

do{

google,baidu...

修改

編譯

下載

上電

試驗

}while(網卡工作)

但是5天都沒跳出這個循環,逐漸變的食之無味,睡之不香...

不過,在調試中,我也變得越來越了解U-boot。通過查看dm9000x.c,發現初始化的第壹步dm9000_reset就沒過去,在這壹步,

程序會檢測DM9000的ID是不是0x90000a46,如果不是,就打印“resetting DM9000 -> not

responding”

開始懷疑是AEN腳的使能信號(DM9000的AEN連接cpu的nGCS3)沒傳過來,應該是傳送壹個低電平並持續10us。上示波

器!DM9000的管腳太密測起來也挺困難。結果發現這個信號是沒問題的,確實送來了壹個低電平。這也說明了0x18000300這個網卡基地址是沒錯

的。繼續郁悶...

直到今天,在下決心仔細再看壹編DM9000的芯片資料後,終於靈光壹顯,發現了壹個RST管腳。這是個硬件復位管腳,高電平復位。上示波器!原來...,它竟然壹直是高電平!總在復位,片子怎麽工作呢?!

直接把它接地,重啟,網卡燈亮啦!!!

串口輸出:

SMDK2410 #

dm9000_init

resetting DM9000

resetting the DM9000, 1st reset

resetting the DM9000, 2nd reset

dm9000 i/o: 0x18000300, id: 0x90000a46

DM9000: running in 16 bit mode

MAC: 00:14:97:0f:00:00

然後ping,tftp下載都ok啦。調通心情好:)

  • 上一篇:通達信公式指標放在哪個文件夾
  • 下一篇:MXNet很強大嗎?
  • copyright 2024編程學習大全網