移植u-boot-2015.07-rc3之修改程式碼支援DM9000網絡卡(七)
目前的u-boot啟動後有如下資訊:
Net: CS8900-0
Error: CS8900-0address not set.
板子上的是DM9000不是CS8900,網絡卡模組肯定是錯誤的嘛。看到這裡,你應該有了熟悉的思路,grep "Net:" * -nR查詢網絡卡的初始化函式,經過篩選可以斷定”Net:”實在這裡列印的:
common/board_r.c:581: puts("Net: ");
連續跟蹤可以發現如下結構:
|
最終發現了cs8900網絡卡的初始化函式cs8900_initialize,問題是找到了,但是不知道怎麼修改啊!不要擔心,別的開發板肯定有使用DM9000的,我們模仿其他開發板的使用方法。
搜尋發現u-boot中有對DM9000支援的.c檔案dm9000x.c,所以開啟對應的Makefile看看dm9000x.c有沒有被編譯進u-boot:
|
所以要在smdk2440.h中取消CONFIG_CS8900巨集增加CONFIG_DRIVER_DM9000巨集:
|
make編譯,出現大量錯誤:
|
可以看到這些錯誤都是沒有定義DM9000_DATA、DM9000_IO巨集造成的,也不知道這兩個巨集是幹啥的,grep檢視一下:
|
DM9000_DATA出現在很多標頭檔案中,任意開啟兩個標頭檔案可以看到:
|
可以猜測的是我們使用DM9000至少也要定義CONFIG_DM9000_BASE、DM9000_IO和DM9000_DATA,所以在smdk2440中新增這三個巨集測試編譯能不能通過。
|
make編譯通過。但是現在DM9000還不能使用,要移植DM9000,先來補充一下DM9000的知識:
DM9000屬於記憶體類介面,既然是記憶體類介面,就需要知道訪問地址是多少,位寬是多少。
所以在初始化DM9000的時候,分兩步完成:
1、 設定記憶體控制器——時序、位寬
2、 確定訪問地址
首先找到mini2440的電路圖,可以看到:
可以看到nLAN_CS接的是nGCS4.在檢視2440晶片手冊:
所以基地址:CONFIG_DM9000_BASE為0x2000,0000
雖然 MA9000 內部有很多暫存器,但是它提供給使用者作為程式設計介面的就兩個介面。一個是Index 埠,傳輸偏移地址用於確定 DM9000 內部的具體暫存器;另一個是資料埠,用於傳輸資料。而且兩個埠使用的都是 DM9000 上的 SD[15:0]引腳,而區分何時是 Index 資料何時是傳輸資料呢?主要是靠 DM9000 上的 CMD 引腳來決定,當 CMD 為 0 的時候傳的資料當 Index 使用,為1時當傳輸資料使用。
CMD 是接到 LADDR2 上的,所以地址為 0x20000300 時寫入的是 Index 資料,為 0x20000304時寫入的是傳輸資料。當然只要 LADDR2 為 1 就是傳輸資料,所以 LADDR2 為 1 的地址還可以是 0x20000305~0x20000307
所以#define DM9000_DATA (CONFIG_DM9000_BASE + 4)
#define DM9000_IO CONFIG_DM9000_BASE
DM9000_IO也就是寫到SD[15:0]的資料當Index用的偏移
DM9000_DATA就是寫到SD[15:0]的資料當資料用的偏移
以上確定訪問地址就搞定了。下面需要設定記憶體控制器。
在lowlevel_init.S中有對整個記憶體控制器的初始化,因為SDRAM在沒有修改的情況下都能使用,現在先不修改記憶體控制器的初始化值看看能不能使用,不能再回過頭來修改:
所以現在先對smdk2440.h做如下修改:
|
make編譯通過。
之前在board_eth_init函式中有對cs8900進行初始化的函式cs8900_initialize,現在取消CONFIG_CS9000的巨集後連cs8900_initialize都不執行了。這個時候很容易想到這裡應該替換成DM9000的初始化函式。而這個初始化函式當然是在dm9000x.c中,開啟dm9000x.c可以看到有dm9000_initialize函式。使用grep檢視dm9000_initialize的用法:
|
所以模仿上面的用法可以修改board/samsung/smdk2440/smdk2440.c中的board_eth_init函式為:
|
make編譯下載到NorFlash並啟動。可以看到:
Net: dm9000
這就代表DM9000可能移植成功了,具體是不是真的移植成功需要使用命令驗證,最簡單的方法就是ping。
|
到此,DM9000網絡卡移植完成。
下一節mtdparts命令支援
相關推薦
移植u-boot-2015.07-rc3之修改程式碼支援DM9000網絡卡(七)
目前的u-boot啟動後有如下資訊: Net: CS8900-0 Error: CS8900-0address not set. 板子上的是DM9000不是CS8900,網絡卡模組肯定是錯誤的嘛。看到這裡,你應該有了熟悉的思路,grep "Net:" * -nR查詢網絡
移植u-boot-2015.07-rc3之uboot裁剪及啟動引數修改(九)
可以看到,現在make編譯出來的u-boot.bin有512kb大小,造成u-boot這麼巨大的原因是新版本的u-boot預設情況下支援非常多的命令,以至於很多不必要的.o檔案都被連結進u-boot.bin檔案中了。今天就來把u-boot中我用不到的命令都裁剪掉並設定預設的
u-boot-2015.07移植(SPL)①
本文參考https://blog.csdn.net/doccode/article/details/47212363,在此謝過! SPL方式移植U-BOOT-2015.07 在JZ2440板子上移植u-boot-2015.07,移植思路,利用smdk2410板子作為基線進行移植.下載u-boot-2015
u-boot-2015.07 autoconf.mk生成過程分析
1、u-boot2015.7版本編譯沒有在頂層目錄中生成.config檔案,而生成了include/autoconf.mk和include/autoconf.mk.dep兩個檔案,並在每個模組編譯的時候包含著兩個檔案,作用相當於高版本u-boot中的.config檔案。 2、autoconf
05-S3C2440學習之核心(移植)linux3.4.2移植(3)之支援DM9000C網絡卡及修改支援串列埠2
接下來我們在此基礎上,在linux3.4.2中移植DM9000c網絡卡驅動,使核心可以支援網絡卡晶片,這樣方便使用NFS網路檔案系統。 一、移植思路 (1)我們現在移植好的核心中,支援smdk24
U-Boot移植DM9000網絡卡(附:程式、原始碼、測試程式)
U-Boot移植DM9000網絡卡 ——西伯利亞的風 根據書《嵌入式Linux應用開發完全手冊》移植網絡卡驅動,對於Jz2440開發板好像並不適用,Jz2440開發板使用的是DM9000網絡卡,已經不是書上講的CS8900網絡卡了。DM9000網絡卡與CS890
U-Boot1.1.6移植DM9000網絡卡
巨集定義CONFIG_DRIVER_DM9000為1表示配置使用DM9000網絡卡,u-boot編譯時會將DM9000相關的驅動編譯進去。其中0x20000000是DM9000的基址(BANK4),由於DM9000只有一條地址線CMD(LADDR2,見圖3.1)用於區別是資料還是地址(CMD為低時資料
計算機網絡之網絡層(協議)
邊界 聯網 不同的 支持 報告 nac 5.0 ipv6地址 發的 IPv4協議的路由與轉發 查找路由表 1、多次間接交付後,IP數據報最終一定可以找到目地主機所在的目的網絡上的路由 2、到達最後一個路由器時,才會試圖向目的主機直接交付 分組轉發算法 1
springCloud Spring Boot mybatis分布式微服務雲架構-docker-feign-hystrix-ribbon(七)
vid 目的 rul exec err eureka lis 負載均衡 分布式 簡介 在上一節中,我們討論了feign+hystrix在項目開發中,除了考慮正常的調用之外,負載均衡和故障轉移也是關註的重點,這也是feign + ribbon+hystrix的優勢所在,本節我
演算法工程師修仙之路:吳恩達機器學習(七)
吳恩達機器學習筆記及作業程式碼實現中文版 第六章 神經網路學習 非線性假設 無論是線性迴歸還是邏輯迴歸都有這樣一個缺點:當特徵太多時,計算的負荷會非常大。 使用非線性的多項式項,能夠幫助我們建立更好的分類模型。假設我們有非常多的特徵,例如大於 100 個
關於移植MT7601Uusb無線網絡卡(小度wifi,360隨身WIFI 2代)的後續
請先看最後的我與連結文章作者做法上的區別 第一步可以看下這裡:http://blog.csdn.net/ofaith12345/article/details/24963457 其中有一個問題是串列埠不停有資訊返回,停不下來,後續解決~,只要修改os/linux/conf
linux 修改IP重啟網絡卡方法
修改網絡卡命令: ifconfig eth0 192.168.0.3 netmask 255.255.255.0 ⚠️臨時修改IP生效,如果想重啟之後依然生效,可以修改網絡卡配置檔案。 重啟網絡卡命令: centos: sudo service ne
Flask專案之手機端租房網站的實戰開發(七)
說明:該篇部落格是博主一字一碼編寫的,實屬不易,請尊重原創,謝謝大家! 接著上一篇部落格繼續往下寫 :https://blog.csdn.net/qq_41782425/article/details/85934776 目錄 一丶登入後端介面編寫 二丶登入介面測試 三丶登入前
基於S3C2440的Linux-3.6.6移植——DM9000網絡卡驅動移植
Linux-3.6.6很好的支援了DM9000,因此對於S3C2440晶片來說無需進行任何修改,甚至連menuconfig都已經預設配置了網絡卡驅動。但我們還需要設定網絡卡的MAC和IP等資訊。有許多方法可以實現網絡卡的設定,在這裡我們選擇一種比較簡單的方法——修改根檔案系
u-boot2012.04到jz2440 支援dm9000c 網絡卡
u-boot已經支援 dm9000c網絡卡 1.首先看Makefile /driver/net 目錄 38 COBJS-$(CONFIG_DRIVER_DM9000) += dm9000x.o 取消對CS8900
【IoT】物聯網之 WIFI 一鍵配網 smartConfig 淺析(ESP32)
一、背景 物聯網時代技術開始規模化服務於民眾,方便快捷顯得尤為重要,WIFI 直連便是一個典型案例。 目前主流的 WIFI 配置模式有以下 2 種: 1、智慧硬體處於 AP 模式(類似路由器,組成區域網),手機用於 STA 模式 手機連線到處於 AP 模式的智慧硬體後
『高級篇』docker之服務發現、部署更新和擴容(七)
所有 gem 測試 域名解析 cbc 代碼更新 mage ftp dock >原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文鏈接地址:『高級篇』docker之服務發現、部署更新和擴容(七) 服務發現 所有的表現形式都是ip+端口的形式。
Android之解決ubuntu沒有無線網絡卡和手機wifi實現adb wifi除錯
1、問題 ubuntu沒有無線網絡卡,但是在在wifi1是同一個網段,然後手機需要wifi adb除錯 2、解決辦法 1、連線上wifi1 2、手機下載“終端模擬器apk”安裝在手機上 3、手機連線電腦,然後adb tcpip 5555 4、然後adb push dro
2015年OpenWRT路由器掛載RT3070 USB無線網絡卡
RT3070 USB無線網絡卡掛載需要自己手動新增的元件和驅動如下: 新增的元件: kmod-usb-ohci kmod-usb-storage kmod-usb-wdm kmod-usb2 無線驅動: kmod-rt2800-pci kmod-rt2800-soc kmo
移植U-BOOT之裁剪和修改預設引數(易用性)啟動核心,以及對uboot進行分割槽
今天我們來裁剪U-BOOT,使其更加易用,修改預設引數,以及製作最終修改好得補丁檔案方便以後的快速移植。 那麼如果想看之前的關於網絡卡以及flash等的移植,請點選連結檢視:點選連結檢視 在裁剪修改之前呢,我們先來了解一下U-BOOT的環境引數(環境變數):