1. 程式人生 > >JZ2440學習筆記,第四部分,移植uboot2015支援JZ2440的DM9000

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新增:

[email protected]:~/uboot/u-boot-2015.04-rc4$ vim include/configs/smdk2410.h 

圖 2

在板級初始化函式中新增dm9000的初始化函式:
[email protected]:~/uboot/u-boot-2015.04-rc4$ vim board/samsung/smdk2410/smdk2410.c 

圖3

儲存,編譯燒寫,啟動,列印如下

圖 4

根據列印提示,我們知道Dm9000a驅動成功,但是MAC地址未進行設定,下面去smdk2410.h中繼續新增配置修改配置檔案
[email protected]:~/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

相關推薦

JZ2440學習筆記部分移植uboot2015支援JZ2440的DM9000

JZ2440學習筆記Chili2015.5第四部分,移植uboot2015支援JZ2440的DM90007,修改uboot支援DM9000Uboot 核心已經支援DM9000網口,先開啟DM9000的驅動看看,因為我們看電路圖知道DM9000通過記憶體介面連到了JZ2440

Linux Unix shell 編程指南學習筆記部分

fcm 驗證 () only arguments line div 反饋 sed 第十六章 shell腳本介紹 此章節內容較為簡單,跳過。 第十七章 條件測試 test命令 expr命令 test 格式 test condition 或者 [

Linux Unix shell 程式設計指南學習筆記部分

第十六章  shell指令碼介紹 此章節內容較為簡單,跳過。 第十七章   條件測試 test命令 expr命令 test  格式  test  condition     或者  [ condition ]  (注意: condition兩側有空格) 檔案狀態測試:

《Oracle PL/SQL開發指南》學習筆記31——原始碼除錯——函式和過程(部分物件表函式result_cache子句)

  建立一個物件表函式有三個步驟: 1. 定義記錄結構為物件型別 2. 定義集合 3. 定義一個函式來展示如何從PL/SQL上下文向SQL上下文返回集合   1. 建立基本的SQL使用者自定義型別(UDT) 注意:發現竟然不能使用distinct關

《Oracle PL/SQL開發指南》學習筆記30——原始碼除錯——錯誤管理(部分utl_call_stack包中的函式)

utl_call_stack包中的函式整理如下: Package Function Description backtrace_depth Returns the number of backtrace items in

【MySQL】《高性能MySQL》學習筆記Schema與數據類型優化

MySQL優化 MySQL表設計 MySQL開發規範 MySQL數據類型 【MySQL】《高性能MySQL》學習筆記,第四章,Schema與數據類型優化 良好的邏輯設計和物理設計是高性能的基石,應該根據系統將要執行的查詢語句來設計schema。 反範式的設計可以加快某些類型的查詢,單同時可能使

Python學習筆記三天文件操作、函數)

input 釋放空間 打開方式 只需要 不能 解決 信息 無法查看 一個 一、文件處理   1、文件打開模式    打開文本的模式,默認添加t,需根據寫入或讀取編碼情況添加encoding參數。    r 只讀模式,默認模式,文件必須存在,不能存在則報異常。    w

編寫你的一個Django應用程序部分

次數 用戶 進行 訪問 觀點 ken span .py return 本教程從隨筆三停止的地方開始。這裏將重點放簡單的表單處理和削減我們的代碼。 寫一個簡單的表單 更新模版文件polls/detail.html,以便包含一個html<form>元素:

.Net基礎篇_學習筆記_天_關系運算符和邏輯運算符

不能 main 運算 ram true con 是否 names 關系 1.關系運算符 包含:> < <= >= == != 以及bool類型中的true和false。 2.邏輯運算符 與 &

python 3.5學習筆記章)

ping 函數返回值 使用 family __next__ 什麽 san 直接 all 本章內容:   一、、裝飾器   二、生成器   三、叠代器   四、python中的內置方法   五、json & pickle 的數據序列化及反序列化   六、程序目錄結構規

java-web學習筆記章)

解決方案 重寫 區別 學習 java 占用 表單 服務 安全 第四章:會話跟蹤 1,什麽是會話跟蹤技術 會話跟蹤技術是一種在客戶端和服務器端保持HTTP狀態的解決方案,是使上一次請求所傳遞的數據能夠維持狀態到下一次請求,並且辨認出是否是相同的客戶端所發送出來的。主要

Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 章:Direct 3D初始化

學習目標 對Direct 3D程式設計在3D硬體中扮演的角色有基本瞭解; 理解COM在Direct 3D中扮演的角色; 學習基本的圖形學概念,比如儲存2D影象、頁面切換,深度緩衝、多重紋理對映和CPU與GPU如何互動; 學習如何使用效能計數函式讀取高精度時間;

php學習筆記節--php中的運算子和流程控制

PHP的運算子、流程控制和其他語言的運算子一樣,沒什麼特別的,這裡不再累贅。     特別的運算子: .=             $a.=$b

Deep Learning.ai學習筆記_門課_卷積神經網路

目錄 第一週 卷積神經網路基礎 第二週 深度卷積網路:例項探究 第三週 目標檢測 第四周 特殊應用:人臉識別和神經風格轉換   第一週 卷積神經網路基礎 垂直邊緣檢測器,通過卷積計算,可以把多維矩陣進行降維。如下圖:   卷積運算提供了一個方便的方法來發

Tensorflow學習筆記天)—遞迴神經網路

一、首先下載來源於 Tomas Mikolov 網站上的 PTB 資料集 http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz 二、需要的程式碼: 這裡只簡單的放了一些程式碼

javascript高階程式設計學習筆記章)

-基本型別和引用型別的值 ECMAScript變數可能包含兩種資料型別的值:基本型別值指簡單的資料段,引用型別值指可能由多個值構成的物件。對於5種基本型別值,可以直接操作儲存在變數中的值;而javascript不允許直接訪問物件的記憶體空間,只能通過操作物件的

Redis從入門到熟練使用之測試哨兵及主從高可用(詳解共五篇)

測試驗證 首先檢視哨兵監控情況 然後嘗試關閉主機 再檢視剩餘2個從機,這裡會自動選舉產生新的主機 然後,我們再次將剛才停止的主機啟動起來,發現啟動後其自動成為從機 停掉master_redis主資料庫後重啟後變成從資料庫。隨機推選。 至此,

【C#學習筆記章總結

《C#入門經典第七期》第四章流程控制書後總結 布林邏輯 布林邏輯使用布林值(true和false)計算條件。布林運算子用於比較數值,返回布林結果。一些布林運算子也用於對數值的底層位結果執行按位操作,還有一些專門的按位運算子。 分支 可使用布林邏輯控制程式流。可以使用i

模式識別 學習筆記章 線性分類器 (持續更新中。。。)

1 引言 基於樣本直接設計分類器需要三個基本要素: 1. 分類器即判別函式的型別,也就是從什麼樣的判別函式類中去求解; 2. 分類器設計的目標或準則,確定函式類中的某些待定引數; 3. 如何設計演算法利用樣本資料搜尋到最優的函式引數。 判別函式

python學習筆記章 python物件 & 五章 數字)

第四章 python物件 python的任何型別的值都是一個物件,擁有三個特性:身份(唯一標識,id()可以得到,是該物件的記憶體地址),型別,值(資料項) type()可以得到物件的型別,type的型別是type。isinstance()的用途與type()相似,用法舉