娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月22日(星期六)

2021年02月22日 | cortex-a8 uboot系列:第十七章 uboot移植-網(wǎng)卡DM9000移植

發(fā)布者:Serendipity99 來源: eefocus關(guān)鍵字:cortex-a8  uboot移植 手機看文章 掃描二維碼
隨時隨地手機看文章

一、網(wǎng)卡基礎(chǔ)知識

1.網(wǎng)卡芯片與開發(fā)板的連接方式

總線式連接方式,使用SROM總線接口。

clip_image002

開發(fā)板核心板,使用SROM控制器的bank1。因此有效地址是0x8800_0000 – 0xffff_ffff。

clip_image004

開發(fā)板上DM9000的連接。使用16-bit數(shù)據(jù)連接方式

clip_image006

網(wǎng)卡芯片有CS引腳,(CS就是chip_select,選線信號,主機向CS發(fā)送有效信號則從機芯片工作,主機向CS發(fā)送無效信號則從機芯片不工作)。這個引腳要接soc的srom控制器的片選引腳。


主機s5pv210的srom控制器每一個bank都有一個片選信號CSn(n=0-5),這里接CSn1,說明DM9000接的是srom的bank1。


所以,可以得到DM9000的總線基地址是0x8800_0000。

 

DM9000的CMD引腳,并接到了210的ADDR2引腳上。為低,表示16位數(shù)據(jù)線上發(fā)送的是地址,為高,表示16位數(shù)據(jù)線上發(fā)送的數(shù)據(jù)。因此,地址和數(shù)據(jù)是復(fù)用的。


也就是如果要往 DM9000的 0x04地址寫入數(shù)據(jù)a。那么要執(zhí)行以下兩步


第一步:

ADDR2拉低,16位數(shù)據(jù)寫0x04。

也就是  clip_image008

網(wǎng)線有8根線,但是實際只有4根有效通信線,另外4根都是GND,用來抗干擾的。4根通信線中管發(fā)送的是有2根(TX-和TX+),管接收的2根(RX+和RX-),因為網(wǎng)上傳輸?shù)氖?a href="http://www.nncyjs.com/zhuanti/zrnb14" style="color:#4595e6;" target="_blank">差分信號。


210有SROM控制器,

clip_image010

2.Soc的SROM控制器

Bank和網(wǎng)卡芯片的CS引腳(SROM就是SRAM/ROM)。Soc的srom控制器其實就是soc提供的對外總線式連接sram/rom的接口。如果soc要外部外接一些sram/rom類的存儲芯片(或者偽裝成srom接口的芯片,如網(wǎng)卡芯片)就要通過srom控制器來連接。


SROM控制器有6個bank,地址和數(shù)據(jù)都是共有的,但是片選信號不是共用的。因此外部的SROM器件通過連接到自己的片選信號是否有效,從而決定地址和數(shù)據(jù)是否可用。


網(wǎng)卡接在srom中好處就是網(wǎng)卡芯片好像一個存儲芯片一樣,被擴展在soc的一個地址空間中,這樣soc就可以直接用一個地址來訪問網(wǎng)卡芯片的內(nèi)部寄存器。

clip_image012

1)網(wǎng)卡芯片內(nèi)部寄存器使用相對地址訪問

網(wǎng)卡芯片內(nèi)部很多寄存器有一個地址,這個地址是從0x00開始的,但是實際上soc不能用0地址去訪問這個網(wǎng)卡的芯片的內(nèi)部寄存器。


所以soc訪問網(wǎng)卡芯片0地址寄存器的地址應(yīng)該是:起始地址 + 0x00。其中起始地址就是網(wǎng)卡芯片對應(yīng)接在srom控制器的bankn對應(yīng)的基地址。


如使用的九鼎開發(fā)板,網(wǎng)卡芯片接在bank0,基地址就是0x8000_0000。那么soc使用0x8000_0000訪問網(wǎng)卡芯片的0地址寄存器,使用0x8000_0004訪問4地址的寄存器。


2)主機soc上網(wǎng)

其實就是操控網(wǎng)卡芯片內(nèi)部的寄存器、緩沖區(qū)等資源來上網(wǎng)的。也就是soc是通過網(wǎng)卡芯片來間接上網(wǎng)的。

3)總結(jié)

實際上也是一種總線式連接方式。優(yōu)勢是soc內(nèi)部不需要內(nèi)置網(wǎng)卡控制器,所有的SFR全都在外部網(wǎng)卡芯片中,而且還可以通過地址直接訪問(IO與內(nèi)存統(tǒng)一編址),不用像NAND/SD接口一樣使用時序來訪問。

從邏輯上看,網(wǎng)卡更像是soc內(nèi)部串口等模塊。

二、Uboot中驅(qū)動文件

在drivers/net目錄下,有很多網(wǎng)卡驅(qū)動芯片,對于開發(fā)板使用的是DM9000,所以要查看dm9000.h和dm9000.c。這些驅(qū)動代碼來自于linux kernel源代碼。


這個驅(qū)動代碼是linux內(nèi)核中設(shè)計好的,因此不用修改,在uboot中可以直接使用的。而且因為linux驅(qū)動設(shè)計的很合理(數(shù)據(jù)和代碼是分開的,這樣驅(qū)動主要是代碼,數(shù)據(jù)是由硬件開發(fā)板中的接法決定,數(shù)據(jù)由一定的數(shù)據(jù)結(jié)構(gòu)提供),所以驅(qū)動本身具有可移植性。

 

網(wǎng)卡移植的關(guān)鍵:初始化

Uboot在第二階段init_sequences中進(jìn)行了一系列的初始化,其中就有網(wǎng)卡芯片的初始化。這個初始化是關(guān)鍵,在這里的初始化中只要將網(wǎng)卡芯片正確的初始化了,則網(wǎng)卡芯片就能正常工作。


在board/Samsung/smdkc110/smdkc110.c中的board_init函數(shù),就對dm9000進(jìn)行了初始化。

clip_image014

clip_image016

被注釋掉的是三星提供的uboot中的代碼,后面新增的是修改的代碼。在三星原版中,使用的是SROM的bank5,但是開發(fā)板使用的是bank1,因此要對SROM控制器的bank1進(jìn)行初始化。


SROM_BW設(shè)置SROM控制器的總配置。每4個位控制一個bank,對于使用的bank1,操作7-4位。因此要對這幾位進(jìn)行操作。

clip_image018

網(wǎng)卡工作在16-bit模式,所以  DataWidth1為1 。


原理圖連接時,srom控制器的數(shù)據(jù)data15-0接到網(wǎng)卡的data15-0,所以是以字節(jié)對齊的,所以AddrMode1 為1。


至于第7位和第6位,和時序相關(guān)。這里都設(shè)置為1。


SROM_BCx, 設(shè)置各個bank的時序信息。

clip_image020

MP0_1CON寄存器,配置SROM控制器的GPIO的片選功能。將7-4位設(shè)置為0x20,表示MP01_1管腳為srom的bank1的片選引腳。

clip_image022

照理來說,還需要設(shè)定SROM控制器的地址和數(shù)據(jù)的GPIO的功能,但是對應(yīng)的GPIO功能默認(rèn)為就是SROM的地址和數(shù)據(jù)功能,因此可以不用設(shè)置。

clip_image024

基地址的配置

在smdkv210single.h中,關(guān)于DM9000有如下的宏定義。

clip_image026

表示基地址是0XA800_0000(因為使用的是bank5),CMD線接在了ADDR1。

根據(jù)所用開發(fā)板,修改為如下

clip_image028

基地址為0x8800_0000(bank1),CMD線接在了ADDR2,所以數(shù)據(jù)的地址是基地址+4。

 

但是上面這樣,是不工作的。


需要將CONFIG_DM9000_BASE 定義為 0x88000300。

clip_image030

修改為88000300的原因,應(yīng)該是和DM9000的芯片有關(guān)系,內(nèi)部寄存器的偏移不是以0地址作為偏移,而是以0x300地址為偏移的。

 

Uboot中使用ping命令,測試網(wǎng)卡移植是否成功。

clip_image032

 

如果移植出現(xiàn)以下信息,說明SROM控制器的寄存器配置不正確。檢查dm9000_pre_init函數(shù)(board/Samsung/smdkc110/smdkc110.c),寄存器設(shè)置是否正確。

clip_image034

 

三、Linux網(wǎng)卡驅(qū)動的典型工作方式

linux系統(tǒng)中,網(wǎng)卡是一個設(shè)備,這個設(shè)備驅(qū)動工作后會生成一個設(shè)備名叫ethn(n是0、1、2……),無線網(wǎng)卡名字一般叫wlan0、wlan1……。

然后linux系統(tǒng)用一些專用命令來操作網(wǎng)卡,如ifconfig命令。


Linux下的應(yīng)用程序如何使用網(wǎng)卡驅(qū)動來進(jìn)行網(wǎng)絡(luò)通信?最通用的方法就是socket借口。Linux系統(tǒng)中有一系列的API和庫函數(shù),提供了一個socket編程接口,linux下的應(yīng)用程序都是通過socket來實現(xiàn)上網(wǎng)的,socket內(nèi)部就是間接調(diào)用網(wǎng)卡驅(qū)動實現(xiàn)網(wǎng)絡(luò)通信的。

Linux設(shè)計是非常完備的,應(yīng)用層和驅(qū)動層是嚴(yán)格分離的。也就是說寫網(wǎng)絡(luò)編程應(yīng)用層的人根本不用管驅(qū)動,只要會用socket接口即可;寫底層驅(qū)動的人根本不用管應(yīng)用層,只要面向linux的網(wǎng)絡(luò)驅(qū)動框架模型即可。


Ping這樣的命令實現(xiàn)的代碼就是網(wǎng)絡(luò)應(yīng)用的應(yīng)用程序,像dm9000.h和dm9000.c這樣的代碼屬于驅(qū)動程序。在uboot中應(yīng)用是直接調(diào)用驅(qū)動實現(xiàn)的,也就是說ping命令內(nèi)部是直接調(diào)用了dm9000的網(wǎng)卡驅(qū)動中的函數(shù)來實現(xiàn)。


1.    Uboot的ping命令實現(xiàn)

實現(xiàn)函數(shù)是do_ping,在common/cmd_net.c中。

clip_image036

使用string_to_ip函數(shù)將輸入的ip地址轉(zhuǎn)化為IPaddr_t類型值。

clip_image038

然后調(diào)用NetLoop函數(shù)(netnet.c中)

函數(shù)前面的部分,都是在構(gòu)建ping的包。

構(gòu)建好后,使用PingStart函數(shù)(netnet.c),準(zhǔn)備發(fā)送ping包。

clip_image040

 

最后調(diào)用PingSend函數(shù)(netnet.c),將包發(fā)出去。

clip_image042

前面在構(gòu)建數(shù)據(jù),最后使用ArpRequest函數(shù)(netnet.c),將ARP包發(fā)送。因為ping使用的是ARP包。

clip_image044

函數(shù)在之前也在做數(shù)據(jù)的處理,最后調(diào)用eth_send函數(shù)(drivers/net/dm9000x.c中),將數(shù)據(jù)包發(fā)送出去。可以看出,這個函數(shù)是和具體的網(wǎng)卡芯片有關(guān)的。

clip_image046

這個函數(shù),將指定的包,發(fā)送給DM9000網(wǎng)卡,網(wǎng)卡在將該包發(fā)送到網(wǎng)絡(luò)中。

clip_image048

 

這樣,就完成了ping的ARP包的發(fā)送。

剩下,就是要接收從網(wǎng)絡(luò)回發(fā)的ARP包。

在net_loop函數(shù)的后面,調(diào)用eth_rx函數(shù)(drivers/net/dm9000x.c中)對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行接收。可以看出這個接收函數(shù)和具體網(wǎng)卡有關(guān)的。

clip_image050

四、啟動內(nèi)核

使用tftp命令,將鏡像下載到內(nèi)存中,然后使用bootm命令運行內(nèi)核。

但是要將串口改為串口2。

而且啟動參數(shù)設(shè)置要如下:clip_image051


關(guān)鍵字:cortex-a8  uboot移植 引用地址:cortex-a8 uboot系列:第十七章 uboot移植-網(wǎng)卡DM9000移植

上一篇:基于S3C6410的ARM11學(xué)習(xí)(六) 核心初始化之關(guān)閉所有中斷
下一篇:cortex-a8 uboot系列:第十六章 uboot移植-從三星官方移植

推薦閱讀

  2月8日,華米科技在美國紐約證券交易所成功上市,成為小米生態(tài)鏈?zhǔn)准以诿郎鲜衅髽I(yè)。下面就隨嵌入式小編一起來了解一下相關(guān)內(nèi)容吧。  在現(xiàn)場的華米創(chuàng)始人黃汪露著一貫應(yīng)付媒體的微笑,但是看著要比平常發(fā)自內(nèi)心的開心許多。畢竟用他自己的話說:華米終于小學(xué)畢業(yè)了,可以上初中甚至高中了。  但是在這光輝成績的背后,誰又能想到還有一段攜高管賣房...
對自動駕駛汽車持懷疑態(tài)度的人可能擔(dān)心自動化的軟件無法處理意外的、不尋常的情況,例如,如果主要交叉路口的交通信號燈突然失靈,自動駕駛汽車需要聽從交警的信號時,自動駕駛汽車應(yīng)該怎么辦呢?據(jù)外媒報道,當(dāng)?shù)貢r間2月21日,Waymo公布了一個視頻,展示了這種極端情況對于自動駕駛汽車來說根本不是問題。在該視頻中,Waymo的一輛自動駕駛汽車探測到了十...
簡介:基于AVR的新型防汽車追尾安全裝置的設(shè)計1 引言隨著我國汽車保有量逐年增加,高速公路的發(fā)展使得汽車的行駛速度越來越快。車流量也越來越大,導(dǎo)致高速公路交通事故頻頻發(fā)生,其發(fā)生率甚至達(dá)到普通公路的4 倍,且有上升趨勢。在高速公路所發(fā)生的交通事故中尤以汽車追尾居多,約占30%~40%,而在這些事故中,80%以上的事故是由于司機反應(yīng)不及時或...
近日,中國科學(xué)院《互聯(lián)網(wǎng)周刊》、eNet研究院、德本咨詢聯(lián)合發(fā)布了“2020年度中國信創(chuàng)TOP500”。圖片來源:eNet信創(chuàng)產(chǎn)業(yè)主要包括了新一代信息技術(shù)下的云計算、軟件(操作系統(tǒng)、中間件、數(shù)據(jù)庫、各類應(yīng)用軟件)、硬件(芯片、GPU/CPU、主機、各類終端)、安全(網(wǎng)絡(luò)安全)等領(lǐng)域的安全可控和自主創(chuàng)新,作為將持續(xù)釋放的萬億級潛力的市場。目前,形成了中國...

史海拾趣

問答坊 | AI 解惑

YX7603C

本人求購 YX7603C 有意者請留言!!!! 關(guān)于此芯片的信息 大家 交流 謝謝 ~——~ 初來乍到請多關(guān)照!!…

查看全部問答∨

FPGA中DSP slice

請問 怎樣使用Xilinx virtex系列器件內(nèi)嵌的dsp slice? 高手指教,謝謝!…

查看全部問答∨

求 PCB LAYOUT 兼職

我在深圳一家公司做PCB設(shè)計工程師,已有近6年P(guān)CB設(shè)計經(jīng)驗,大學(xué)本科。包括通信設(shè)備(1萬到2萬PIN的PCB)、     終端設(shè)備(無線路由器、貓等)。通信設(shè)備一般是8到16層PCB,終端設(shè)備一般在2到6層的PCB。        & ...…

查看全部問答∨

電腦會閑出病嗎?

    一位同事出差半個月回到家,電腦卻打不開了,他把電腦搬到我的維修間來檢查,我先把機箱拆開,把板卡和內(nèi)存條拔出來重新插進(jìn)去,然后接上電源開機試驗,看到電腦風(fēng)扇呼呼地轉(zhuǎn)動起來,顯示屏上出現(xiàn)了正常的自檢畫面,不一會兒,藍(lán)天白 ...…

查看全部問答∨

大家?guī)兔纯催@段關(guān)于偶校驗的代碼有什么問題,謝謝!

#include <at89x52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define ERR 0; #define RIGHT 1; uchar idata sbuf; void send(unsigned idata receive); main(){ IE=0;  &nbs ...…

查看全部問答∨

問一下有關(guān)千兆以太網(wǎng) auto-negotiation的問題

系統(tǒng)是X86的,目標(biāo)機是標(biāo)準(zhǔn)PC板,上面加載的是兩個82546網(wǎng)卡,以前在82541下能夠驅(qū)動網(wǎng)卡正常工作,但是現(xiàn)在換成82546卻出現(xiàn)miiPhy方面的問題 目前跟代碼發(fā)現(xiàn)是在運行miiAutoNegotiation時出現(xiàn)的問題,想請問各位達(dá)人。 關(guān)于如何在GMII下配置自動 ...…

查看全部問答∨

請問怎么樣把UCGUI加載到編譯器中呢?請高手指點一下。

我看了一篇《ucos II+ucGUI+s3c2410+LCD+觸摸屏整合》后知道移植UCGUI需要修改的地方,但我不知道怎么樣把UCGUI加載到編譯器中呢?請高手指點一下。 …

查看全部問答∨

最近用PB編譯的時候總是出現(xiàn)nmake.exe出錯

重裝了N次PB,然后又重裝了N次系統(tǒng),問題依舊。我頂他個肺,快崩潰了。 nmake.exe遇到問題需要關(guān)閉  哪位有解決辦法?…

查看全部問答∨

有網(wǎng)友問模擬時鐘程序

呵呵 不好意思 今天在看到上個月有網(wǎng)友在我的貼里問我的點陣模擬時鐘程序是不是lpc1114,其實呢這個是lpc2148 的 是我畢業(yè)論文的一部分,其實的我的論文老師也要我發(fā)這個程序,等我整理好了發(fā)給我老師的時候如果網(wǎng)友還 有感興趣的,我再順便上傳一 ...…

查看全部問答∨

ST可以提供c++的庫嗎

                                 &nbsp;&nbsp;改了好久了,始終沒有做成,不知道st可不可以提供c++的庫給大家用。…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 西乌| 福安市| 库尔勒市| 峨山| 泰顺县| 芜湖县| 平阳县| 桦甸市| 丹阳市| 武城县| 抚州市| 六安市| 苏尼特左旗| 海安县| 五常市| 读书| 大新县| 永修县| 涡阳县| 金昌市| 兰考县| 介休市| 汉阴县| 鱼台县| 友谊县| 康保县| 石渠县| 特克斯县| 阳城县| 苍山县| 克拉玛依市| 龙井市| 玉龙| 兴城市| 黄冈市| 山丹县| 大安市| 汝阳县| 株洲市| 泸西县| 密云县|