JZ2440學習筆記,第四部分,移植uboot2015支持JZ2440的DM9000

JZ2440學習筆記

Chili

2015.5

第四部分,移植uboot2015支持JZ2440的DM9000
7,修改uboot支持DM9000
Uboot 內核已經支持DM9000網口,先打開DM9000的驅動看看,因爲我們看電路圖知道DM9000通過內存接口連到了JZ2440上,在Dm9000x.c (u-boot-2015.04-rc4\u-boot-2015.04-rc4-my2440\drivers\net)中也有對內存進行操作,從而控制DM9000,但是DM9000.c中並沒有任何關於DM9000_IO以及DM9000_DATA的定義。

圖 1

由於內存接口的定義跟硬件息息相關,所以驅動並沒有定義,用戶實際用到該驅動時,需要自己根據實際連接情況自己定義。
這種屬於配置定義,所以我們就去smdk2410.h添加:
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ vim include/configs/smdk2410.h 

圖 2

在板級初始化函數中添加dm9000的初始化函數:
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ vim board/samsung/smdk2410/smdk2410.c 

圖3

保存,編譯燒寫,啓動,打印如下

圖 4

根據打印提示,我們知道Dm9000a驅動成功,但是MAC地址未進行設置,下面去smdk2410.h中繼續添加配置修改配置文件
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ vim include/configs/smdk2410.h
添加
#define CONFIG_ETHADDR     00:02:03:04:05:06

圖5

保存,燒寫啓動,打印如下表示我們網卡工作正常:

圖 6


或者直接在uboot命令行中設置ethaddr環境變量,並保存
SMDK2410 # set ethaddr 00:02:03:04:05:06
SMDK2410 # set ipaddr  192.168.1.111
SMDK2410 # set serverip 192.168.1.1
SMDK2410 # saveenv
8,總結
本文通過實際log提示以及現象得出分析,一步步的修改uboot,直到完成整個移植工作,移植不是目的,希望大家在一步步的修改過程中能夠學習到:
1,uboot的執行流程,知道什麼東西去哪裏更改(當然這需要有一定的代碼閱讀能力,並且對uboot源碼有過仔細認真的閱讀分析,代碼還是要看的,這可不能偷懶哦)
2,遇到問題,分析問題和解決問題的思路方法。

其實越新的uboot做的東西就越多,我們需要更改的就越少,但是本質都一樣,只要大家能夠了解uboot的執行流程,知道什麼東西去哪裏改就很簡單了。之前大家可能都寫過單片機,arm程序,知道如何寫寄存器設置不同的外設,那麼uboot移植其實類似的,畢竟uboot只是一個裸機程序,操作方式跟普通單片機,arm一樣,只是代碼量大了許多,還有就是代碼封裝的比較深,但只要大家耐心多看幾遍代碼,理清uboot的控制思路,也就也沒什麼困難了。真的有困難也不要緊,現在是互聯網時代,把你的問題放到網上求助,或者你有心得也放到網上供大家學習,這樣大家通過知識的共享,就都獲得了進步,世界因共享而變得美好,也讓我們共同獻出自己的一份綿薄之力,有問題有心得多分享!



轉載:http://bbs.csdn.net/topics/391037139

發佈了17 篇原創文章 · 獲贊 17 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章