在真正的開始分析dm9000 driver的probe之前,首先來看看dm9000 驅(qū)動中幾個十分重要的結(jié)構(gòu)
1、dm9000_driver
static struct platform_driver dm9000_driver = {
.driver = {
.name = "dm9000",
.owner = THIS_MODULE,
.pm = &dm9000_drv_pm_ops,
},
.probe = dm9000_probe,
.remove = __devexit_p(dm9000_drv_remove),
};
dm9000_driver是platform_driver結(jié)構(gòu)體變量,其中包含了重要的:驅(qū)動的名字(用來match)和幾個重要操作函數(shù)。
2、dm9000_netdev_ops
static const struct net_device_ops dm9000_netdev_ops = {
.ndo_open = dm9000_open,
.ndo_stop = dm9000_stop,
.ndo_start_xmit = dm9000_start_xmit,
.ndo_tx_timeout = dm9000_timeout,
.ndo_set_multicast_list = dm9000_hash_table,
.ndo_do_ioctl = dm9000_ioctl,
.ndo_change_mtu = eth_change_mtu,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_mac_address = eth_mac_addr,
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = dm9000_poll_controller,
#endif
};
dm9000_netdev_ops是net_device_ops結(jié)構(gòu)體變量, 其中定義了操作net_device的重要函數(shù),我們在驅(qū)動程序中根據(jù)需要的操作要填充這些函數(shù)。
3、dm9000_ethtool_ops
static const struct ethtool_ops dm9000_ethtool_ops = {
.get_drvinfo = dm9000_get_drvinfo,
.get_settings = dm9000_get_settings,
.set_settings = dm9000_set_settings,
.get_msglevel = dm9000_get_msglevel,
.set_msglevel = dm9000_set_msglevel,
.nway_reset = dm9000_nway_reset,
.get_link = dm9000_get_link,
.get_eeprom_len = dm9000_get_eeprom_len,
.get_eeprom = dm9000_get_eeprom,
.set_eeprom = dm9000_set_eeprom,
.get_rx_csum = dm9000_get_rx_csum,
.set_rx_csum = dm9000_set_rx_csum,
.get_tx_csum = ethtool_op_get_tx_csum,
.set_tx_csum = dm9000_set_tx_csum,
};
dm9000_ethtool_ops是ethtool_ops結(jié)構(gòu)體變量,為了支持ethtool,其中的函數(shù)主要是用于查詢和設(shè)置網(wǎng)卡參數(shù)(當(dāng)然也有的驅(qū)動程序可能不支持ethtool)。
4.board_info
/* Structure/enum declaration ------------------------------- */
typedef struct board_info {
void __iomem *io_addr; /* Register I/O base address */
void __iomem *io_data; /* Data I/O address */
u16 irq; /* IRQ */
u16 tx_pkt_cnt;
u16 queue_pkt_len;
u16 queue_start_addr;
u16 queue_ip_summed;
u16 dbug_cnt;
u8 io_mode; /* 0:word, 2:byte */
u8 phy_addr;
u8 imr_all;
unsigned int flags;
unsigned int in_suspend :1;
int debug_level;
enum dm9000_type type;
void (*inblk)(void __iomem *port, void *data, int length);
void (*outblk)(void __iomem *port, void *data, int length);
void (*dumpblk)(void __iomem *port, int length);
struct device *dev; /* parent device */
struct resource *addr_res; /* resources found */
struct resource *data_res;
struct resource *addr_req; /* resources requested */
struct resource *data_req;
struct resource *irq_res;
struct mutex addr_lock; /* phy and eeprom access lock */
struct delayed_work phy_poll;
struct net_device *ndev;
spinlock_t lock;
struct mii_if_info mii;
u32 msg_enable;
int rx_csum;
int can_csum;
int ip_summed;
} board_info_t;
board_info結(jié)構(gòu)體用來保存芯片相關(guān)的一些私有信息。具體在代碼中分析。
上一篇:Mini2440 DM9000 驅(qū)動分析(三)
下一篇:Mini2440 DM9000 驅(qū)動分析(一)
推薦閱讀
史海拾趣
Electroswitch Electronics Products(以下簡稱“Electroswitch”)成立于1986年,是Electro Switch Corp的一個子公司,后者早在1946年就已創(chuàng)立。在創(chuàng)立之初,Electroswitch就致力于設(shè)計(jì)和制造高品質(zhì)的開關(guān)產(chǎn)品,以滿足電子應(yīng)用領(lǐng)域的各種需求。通過不斷的技術(shù)創(chuàng)新和產(chǎn)品優(yōu)化,Electroswitch逐漸在電子行業(yè)中樹立了良好的聲譽(yù)。
隨著技術(shù)實(shí)力的不斷提升,C&H Technology開始積極拓展海外市場。公司首先在歐洲設(shè)立了辦事處,通過與當(dāng)?shù)仉娦胚\(yùn)營商和設(shè)備制造商的合作,成功將產(chǎn)品打入歐洲市場。隨后,公司又進(jìn)軍北美和亞洲其他地區(qū),逐步建立了全球化的銷售網(wǎng)絡(luò)。在市場拓展的過程中,C&H Technology始終堅(jiān)持以客戶為中心的服務(wù)理念,不斷優(yōu)化產(chǎn)品性能和服務(wù)質(zhì)量,贏得了客戶的信賴和好評。
為了進(jìn)一步擴(kuò)大市場份額,Hei Inc Optoelectronic Division積極實(shí)施國際化戰(zhàn)略。公司首先在歐洲和北美市場設(shè)立了分支機(jī)構(gòu),并建立了完善的銷售和服務(wù)網(wǎng)絡(luò)。通過參加國際展會、與當(dāng)?shù)仄髽I(yè)建立合作關(guān)系等方式,公司成功地將產(chǎn)品推向了國際市場。同時,公司還加大了對海外研發(fā)中心的投入,吸引了眾多國際頂尖的光電子專家加盟。這些舉措不僅提升了公司的國際競爭力,還為公司帶來了更多的國際訂單和合作伙伴。
在快速發(fā)展的同時,F(xiàn)enfa Electronics Ltd公司始終堅(jiān)守品質(zhì)管理的原則。公司建立了嚴(yán)格的質(zhì)量檢測體系,確保每一款產(chǎn)品都符合高標(biāo)準(zhǔn)的品質(zhì)要求。此外,F(xiàn)enfa還注重員工的培訓(xùn)和教育,提高員工的品質(zhì)意識和操作技能。通過這一系列的品質(zhì)管理措施,F(xiàn)enfa Electronics Ltd公司的產(chǎn)品質(zhì)量得到了廣泛認(rèn)可,也贏得了消費(fèi)者的信賴和口碑。
Fastron公司深知產(chǎn)品質(zhì)量對于企業(yè)的重要性。因此,公司建立了嚴(yán)格的質(zhì)量控制體系,從原材料采購到產(chǎn)品生產(chǎn)、檢測等各個環(huán)節(jié)都實(shí)行嚴(yán)格的質(zhì)量控制和管理。Fastron還引進(jìn)了先進(jìn)的檢測設(shè)備和技術(shù)手段,確保每一款產(chǎn)品都符合高標(biāo)準(zhǔn)的質(zhì)量要求。這種對品質(zhì)的執(zhí)著追求使得Fastron的產(chǎn)品在市場上具有極高的競爭力。
憑借優(yōu)質(zhì)的產(chǎn)品和服務(wù),B&F Fastener Supply公司逐漸贏得了大型電子廠商的青睞。多家知名電子企業(yè)選擇與B&F建立長期合作關(guān)系,將其作為緊固件和電子元器件的主要供應(yīng)商。這不僅為B&F帶來了穩(wěn)定的訂單和收入來源,還進(jìn)一步提升了公司在電子行業(yè)的地位和影響力。
談一談搞單片機(jī)軟硬件開發(fā)如何成為行業(yè)資深專家 一直擔(dān)心搞單片機(jī)軟硬件會隨著年齡的增長被淘汰掉,在網(wǎng)上看到電子工程師的發(fā)展方向中有一個是成為行業(yè)資深專家,特請各位網(wǎng)友談一談搞單片機(jī)軟硬件開發(fā)如何成為行業(yè)資深專家。 希望高手能現(xiàn)身說法,希望諸位網(wǎng)友能給扎起?!? 查看全部問答∨ |
|
想實(shí)現(xiàn)手機(jī)發(fā)送短信,板子上GSM模塊接收短信,給單片機(jī),單片機(jī)處理接收到的信息,然后做輸出控制(其它器件) 可行性和大概步驟 已得到論壇上的朋友幫助。。。 現(xiàn)在想具體實(shí)現(xiàn)步驟了,不過對那些器件幾乎都不懂 比如像GPRS或GSM模 ...… 查看全部問答∨ |
|
一、太陽能光伏產(chǎn)業(yè)發(fā)展?fàn)顩r (一)2009年全球太陽能光伏發(fā)電產(chǎn)業(yè)情況 根據(jù)歐洲光伏工業(yè)協(xié)會(EuropeanPhotovoltaicIndustryAssociation,簡稱EPIA)統(tǒng)計(jì),到2009年年底,全球光伏市場累計(jì)容量已超過20GW(注1),其中僅2009年全球新增設(shè)備發(fā)電 ...… 查看全部問答∨ |
altera給的usbblaster的引腳連接如下圖所示,順序從上到下引腳編號為1到10,其中VCC(TRGT)被解釋為Target power supply, 大家知道目標(biāo)板FPGA有多個電源供電,以cyclone III或者IV為例,最基本的有1.2V,2.5V,3.3V。那這個VCC(TRGT)到底是幾 ...… 查看全部問答∨ |
各位大大大神,小弟我是個zigbee菜鳥,目前學(xué)姐讓我做一個zigbee組網(wǎng)的東西,要點(diǎn)如下: 例如 協(xié)調(diào)器O連接有A,B,C三個路由,路由器A又有DEF三個路由現(xiàn)在發(fā)送,如果O要發(fā)送數(shù)據(jù)給D,應(yīng)該怎么做? CC2430里面的SAMPLE 組網(wǎng)之后發(fā)送數(shù)據(jù) 其 ...… 查看全部問答∨ |
|
在成產(chǎn)上,不可能給源代碼,只有HEX文件。 但是每個HEX文件中的代碼ID又不一樣,如果用源代碼一個一個的去生成,這個工作量太大了, 我只知道可以自己編寫一個exe的軟件,可以修改HEX中ID,利用研發(fā)部提供的一個標(biāo)準(zhǔn)的HEX,去生成一個新的HEX。將 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 電動車電池成本降一半,續(xù)航卻減一半?寧德時代新電池能突圍嗎?
- 從“不可修”到可拆可換:CTP電池的售后怎么辦?
- 區(qū)域控制器ZCU國產(chǎn)化:從物料齊全到系統(tǒng)話語權(quán)
- 總額超260億-盤點(diǎn)全球移動機(jī)器人領(lǐng)域融資TOP10企業(yè)
- 安森美CEO談?wù)撾妱悠嚺cAI服務(wù)器前景
- LILYGO T-LoRa Pager:復(fù)古造型與前沿技術(shù)結(jié)合的物聯(lián)網(wǎng)手持設(shè)備
- VS Code+PlatformIO搭建ESP32 Arduino開發(fā)環(huán)境
- Esp32環(huán)境離線搭建參考
- ESP32使用舵機(jī)庫時的錯誤
- ESP32 S3接ST7789屏幕線序
- TI教室全新導(dǎo)航讓查看更簡單!填問卷送好禮啦!
- 有獎評測+DIY:玩轉(zhuǎn)新版1.3元單片機(jī)CH554,贏以太網(wǎng)分析儀器/USB分析儀
- 免費(fèi)申請TI 樣片,曬單贏好禮!
- PI 有獎直播|電機(jī)開發(fā)很復(fù)雜?MotorXpert™助您事半功倍!
- 走近PI InnoSwitch-CP 答題贏好禮~
- 2020年全球工程師調(diào)查
- PI PowiGaN技術(shù)學(xué)習(xí)中心,全方位解讀PI 1700V GaN: InnoMux-2 EP技術(shù)精髓!有好禮!
- TI有獎直播|C2000™ F280013x實(shí)現(xiàn)更低成本且更高效的實(shí)時控制方案
- 是德科技——從容應(yīng)對醫(yī)療電子設(shè)備設(shè)計(jì)和測試的挑戰(zhàn)! 答題有好禮
- 一種基于MSP430單片機(jī)的時鐘系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 利用捕獲比較功能實(shí)現(xiàn)MSP430與微機(jī)串行通信的研究
- 首次商用達(dá)成,沃達(dá)豐向5G OpenRAN更近了一步
- MSP430單片機(jī)的加密熔斷器設(shè)計(jì)
- STM32F051C8T6引腳圖及功能定義
- iPhone再傳災(zāi)情 全球瘋傳「死亡短信」收到就GG
- 郭明錤:iPhone X年中將停產(chǎn),成蘋果最短命旗艦機(jī)種
- 搶得iPhone天線軟板轉(zhuǎn)單機(jī)遇,又一臺廠獲投新臺幣180億元
- 手機(jī)設(shè)計(jì)商龍旗科技IPO被否:高營收低凈利困局待解
- 三星中端新機(jī)曝光:Exynos 7870處理器+1300萬前置鏡頭