Linux2.6.39下DM9K驱动源码分析(4)

struct dm9000_plat_data *pdata = pdev->dev.platform_data;
       struct board_info *db; /* Point a board information structure */
       struct net_device *ndev;

2、初始化一个网络设备,系统函数:alloc_etherdev()

3、获得dm9k所使用的平台资源并将其保存在board_info变量db中。关键系统函数:netdev_priv(),  platform_get_resource()

4、根据资源信息分配内存,申请中断等等, 并将申请后的资源信息也保存到db中,并且填充ndev中的参数。 关键系统函数:request_mem_region(),  ioremap()。

resource_size(),自定义函数:dm9000_set_io(db, iosize);

db和ndev中填充了那些东西:

struct board_info *db:

addr_res -- 地址资源

data_res -- 数据资源

irq_res    -- 中断资源

addr_req -- 分配的地址内存资源

io_addr   -- 寄存器I/O基地址

data_req -- 分配的数据内存资源

io_data   -- 数据I/O基地址

dumpblk  -- IO模式

outblk     -- IO模式

inblk        -- IO模式

lock         -- 自旋锁

addr_lock -- 互斥锁

struct net_device *ndev:

base_addr  -- 设备IO地址

irq              -- 设备IRQ号

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyxjyy.html