阅读:1436回复:0
在一个嵌入式系统中开发无线网卡驱动,请教一段程序!
我最近在一个嵌入式系统中进行无线上网卡的驱动程序开发,该系统的DSP为Philips 的TM1300,网卡的MAC芯片型号为RTL8185,射频芯片为RTL8225,驱动程序是在Linux下用C语言开发的,下面是无线网卡驱动程序中的射频初始化部分的程序片断:
…… write_rtl8225(dev, 0xd, 0x6db); //向偏移地址为0xd的射频芯片寄存器写数据 mdelay(1); //让CPU空转1毫秒 write_rtl8225(dev, 0xe, 0x29); //向偏移地址为0xe的射频芯片寄存器写数据 mdelay(1); //让CPU空转1毫秒 write_rtl8225(dev, 0xf, 0x914); //向偏移地址为0xf的射频芯片寄存器写数据 if(priv->card_type == USB) //若网卡使用的是USB插口 { force_pci_posting(dev);//***这个函数里面只有一个读寄存器的操作 mdelay(100); //让CPU空转100毫秒 } …… 现在我想请教的是: (1) 为什么每一个写寄存器操作之后都要有一个停顿,即使用mdelay()函数让CPU空转,这些停顿的依据是什么? (2) 从上面的程序片断中可以看出每次停顿的时间也不尽相同,有时候停1毫秒(mdelay(1)),有时候停100毫秒(mdelay(100)),我想请问停顿的具体时间怎么确定?它跟那些因素有关?跟DSP芯片的频率有关吗? 请各位高手赐教,不胜感激! |
|