二、下面說一下 mini2440_dm9k_resource 中的幾個地址是怎么計算得來的。地址的計算在驅動移植中也是一個重要的部分。地址的計算在網上的博客中很少有介紹的,自己看了很久才琢磨明白。
DM9000 MINI2440 功能描述
SD0 DATA0 數據信號
| |
SD15 DATA15 數據信號
CMD ADDR2 識別為地址還是數據
INT EINT7 中斷
IOR# nOE 讀命令使能
IOW# nWE 寫命令使能
AEN nGCS4 片選使能
1. dm9000的使能管教AEN與nGCS4相連,nGCS4從2440的數據手冊中可以看到,它對應的地址就是從0x20000000開始的。 0x300 是從dm9000的數據手冊中得來的,手冊中講到dm9000的IO有8個起始地址偏移0x300、0x310、0x320...0x370,不知為何這里用的是0x300.
2. 上面的resource array中,第0項是代表io_addr,addr2為0的話,正好對應到addr2addr1addr0 是 3-0這個范圍,也就是第0項.end 是 +3 的原因。同理,可以得到為什么io_data是4 ~7
3. 讀寫dm9000的寄存器時,都是分兩步進行操作。先寫地址,即向io_addr寫入希望操作的dm9000的寄存器的地址,然后下一步在進行讀取或者寫入的操作。第一步是在io_addr操作,第二步是在io_data操作。這兩個連續的步驟,乍一看好像是明白的,但是仔細想又想不明白這樣操作的理由
三、 接下來看dm9000_open(struct net_device *dev) 函數。
/*
* Open the interface.
* The interface is opened whenever "ifconfig" actives it.
*/
static int
dm9000_open(struct net_device *dev)
{
board_info_t *db = netdev_priv(dev);
unsigned long irqflags = db->irq_res->flags & IRQF_TRIGGER_MASK;
if (netif_msg_ifup(db))
dev_dbg(db->dev, "enabling %sn", dev->name);
/* If there is no IRQ type specified, default to something that
* may work, and tell the user that this is a problem */
if (irqflags == IRQF_TRIGGER_NONE)
dev_warn(db->dev, "WARNING: no IRQ resource flags set.n");
irqflags |= IRQF_SHARED;
if (request_irq(dev->irq, &dm9000_interrupt, irqflags, dev->name, dev))
return -EAGAIN;
/* Initialize DM9000 board */
dm9000_reset(db);
dm9000_init_dm9000(dev);
/* Init driver variable */
db->dbug_cnt = 0;
mii_check_media(&db->mii, netif_msg_link(db), 1);
netif_start_queue(dev);
dm9000_schedule_poll(db);
return 0;
}
在這個函數中,申請中斷資源,dm9000只有一個中斷號,產生兩種中斷:收到包、發送完畢。netif_start_queue表示允許上層進行發包,dm9000_schedule_poll表示 開始周期性額調用dm9000_poll_work.前面在probe函數中, 只是初始化了phy_poll函數,在open函數中,才開始調用,這也才更符合情理。這里我們看到了mii_check_media函數,如果我們將這里的這個函數注銷掉,會發生什么情況?經檢測,這里將mii_check_media注銷后,對驅動并沒有明顯的影響。在m9000_poll_work函數中注銷了mii_check_media,驅動也不受影響。
問題:1. struct device, net_device 分別的應用場合是什么,好像net_device是與sysfs打交道更多。 ?
2. 每次insmod 驅動時,都會顯示下面的log,為什么會多次調用dm9000_hash_table這個函數呢?是網絡的哪部分函數調用的?
3. dm9000 dm9000: entering dm9000_init_dm9000 dm9000 dm9000: entering dm9000_hash_table dm9000 dm9000: entering dm9000_hash_table 加載模塊時,會顯示多次進入dm9000_hahs_table這個函數,這是在哪里調用的?
上一篇:mini2440 I2C驅動的分析與學習(一)
下一篇:mini2440上dm9000驅動分析(一)
推薦閱讀
史海拾趣
為了保持技術領先地位,Empro Technology Corp不斷加大研發投入,在多個技術領域取得了重大突破。公司申請了一系列專利,涵蓋了芯片設計、制造工藝、應用技術等多個方面。這些專利的積累不僅保護了公司的技術成果,也為公司的長期發展奠定了堅實的基礎。
隨著公司規模的擴大,Electronic-Bauteile Goerlitz GmbH公司意識到供應鏈管理的重要性。公司通過優化供應鏈管理,實現了原材料采購、生產、物流等各個環節的協同作業。這不僅提高了生產效率,降低了成本,還確保了產品質量的穩定性和交貨期的準確性。這些努力使得公司在競爭激烈的市場中保持了良好的競爭力。
“Future Memory Labs”公司自成立之初,就將持續創新視為企業發展的核心動力。在HMC技術的研發和應用過程中,Future Memory Labs不斷投入資源,進行技術迭代和產品升級。同時,該公司還積極構建HMC技術生態,與上下游企業建立緊密的合作關系,共同推動HMC技術的普及和應用。通過持續的技術創新和生態構建,Future Memory Labs在HMC領域樹立了領先地位,并為企業未來的可持續發展奠定了堅實基礎。
請注意,以上故事均為虛構,旨在展示電子行業中類似HMC技術公司可能的發展路徑和策略。
近年來,隨著環保意識的日益增強,ABC Taiwan Electronics Corp積極響應綠色生產的號召。公司引入了環保材料和節能技術,降低了生產過程中的能耗和排放。同時,公司還加強了廢棄物的處理和回收利用,實現了資源的循環利用。此外,ABC還積極參與社會公益活動,支持教育事業和環保事業,履行了企業的社會責任。
這五個故事展示了ABC Taiwan Electronics Corp從創業初期的艱難起步到逐步成長為國際知名電子零件供應商的發展歷程。通過技術突破、國際化戰略、產業升級和綠色生產等方面的努力,ABC不斷應對市場的變化和挑戰,實現了穩健的發展。
在電子行業的快速發展中,EICHHOFF公司始終保持著對技術創新的追求。XX年代,公司成功研發出了一款具有革命性意義的連接器產品,該產品憑借其獨特的設計和卓越的性能,迅速在市場上獲得了廣泛認可。這一創新不僅為EICHHOFF帶來了豐厚的利潤,也進一步鞏固了其在行業中的領先地位。
此后,EICHHOFF公司繼續加大研發投入,不斷推出具有競爭力的新產品。這些產品不僅在性能上有所提升,還在設計和功能上進行了創新,滿足了客戶日益增長的需求。
一、測速設備綜述: 交警執法用的測速設備包括流動式的雷達測速儀和固定安裝在道路上的機動車超速自動監測系統。本文所稱測速設備,主要指固定安裝于道路上的機動車超速自動監測系統。 (一)流動式雷達測速儀: &n ...… 查看全部問答∨ |
|
大家好,我想請教一個問題。我用430f449的2.0和2.1口來模擬串口,2.0做輸出,2.1做輸入。把2.1的SEL打開,然后用TIMERB0來做接收起始位下降沿的捕獲,用外接的32.768K晶振的ACLK做TIMERB0的時鐘源。TBCCTL0的控制字是TBCCTL0 = OUTMOD_0 + CCIE + C ...… 查看全部問答∨ |
|
#include "MSP430F5438A.H"#define uchar unsigned char #define uint unsigned int#define at2464_PIN P9OUT#define at2464_RED P9IN#define at2464_DIR P9DIR#define at2464_SCL_H at2464_PIN|=BIT1#define at2464_SCL_L at2464_PIN ...… 查看全部問答∨ |
學校需要做一個小項目,目的就是給我一個正弦波,需要用msp430f149測量它的峰峰值,有效值和頻率。我剛上手幾天,手冊看得一知半解,過于測量有效值的程序,思考了半天未果。疑問如下:1.ADC先做采樣保持再做轉換,時間沒有重疊的嗎?2.MEMORY里面 ...… 查看全部問答∨ |
PCB覆銅的方式基本上可以分為兩種, A, flood over淹沒式覆銅:即焊盤跟GND連成一片完整的銅皮 B, 十字覆銅:即焊盤跟大片的銅皮通過細銅皮連接 請問大家用哪種多,看到此帖的,并且畫過PCB板的都回復一下: 您設計的單層板/雙層板/多層板,分 ...… 查看全部問答∨ |