阅读:2990回复:9
请教:无线网卡驱动调试时一直发生异常中断现象
我最近参与了一个嵌入式系统开发的项目,该系统所用的DSP为Philips的TM1300. 我的主要工作是在WLAN下开发无线网卡驱动,我所用的无线网卡型号为KN-W510P,网卡的MAC芯片为RTL8185,射频芯片为RTL8225,我移植开源代码进行修改之后调试,碰到如下现象:
网卡初始化(包括射频初始化)完成之后,系统立即进入中断服务程序,所显示的异常中断 为:“接收描述符不存在”和“接收FIFO溢出”,每次重启之后系统依然不停的发生这两个异常中断,根本不能进入数据发送线程。 小弟刚刚着手硬件驱动开发工作,不知道为什么会不停的发生异常中断,敬请各位高手针对上面的问题多多指教! |
|
沙发#
发布于:2008-05-22 14:31
判断可能网卡初始化不完全,检查该网卡的初始化过程代码.
|
|
板凳#
发布于:2008-05-23 08:52
引用第1楼zhaoyanghong于2008-05-22 14:31发表的 : 恩,同感. 我就遇到过同样的事情,初始化完全后没有收到包,结果就是没有发送启动命令.(window平台上的) 哎.. 检查 download firmware 后,是否发送启动命令. |
|
地板#
发布于:2008-05-24 10:35
急问GoodOnline:
谢谢你的回复,你说:“检查 download firmware 后,是否发送启动命令.” 请问 download firmware 是怎么一回事,启动发送命令有该怎样设置? 我的驱动程序是基于pSOS嵌入式操作系统的,现在这种操作系统已经不常用了。在我的驱动程序中,数据发送线程与中断线程相互分开的,它们之间有一定的逻辑联系,接收数据是通过中断服务程序进行的。 我的程序中,发送数据流程是:首先申请发送描述符,将待发送的数据写入发送描述符指定的发送缓存中,然后设置发送轮询寄存器的相应比特位,通知网卡有待发送数据,这样就启动了发送流程。 接收数据流程:当检测到工作频率范围内的信号能量达到有效信号能量阈值时,网卡启动接收,将收到的数据剥去物理帧头,剩下帧体放入接收FIFO中,当接收FIFO中的数据量达到DMA阈值时,将FIFO中的MAC帧通过DMA送入主存的接收缓存中去,然后修改接收描述符,DMA完成后,发起中断,通知主机处理接收到的数据。主机系统响应中断,调用相应的中断服务程序完成数据的解析和处理。(这里所说的主机是我们所用的DSP的CPU)。 以上就是我的无线网卡驱动驱动程序收发数据的大致流程,但是由于我的程序在网卡初始化(包括射频初始化)完成之后,系统立即进入中断服务程序,所显示的异常中断为:“接收描述符不存在”和“接收FIFO溢出”,每次重启之后系统依然不停的发生这两个异常中断,基本很少能够进入数据发送线程,针对这些问题,敬请各位有经要的高手指教 |
|
地下室#
发布于:2008-05-26 11:00
有的网卡要upload firemware去设置片上系统,这就是把一块数据(其实就是代码)发送到芯片的ram上,之后还要发送一个命令,让这些代码开始运行,从而完成对片子的设置.
需要什么样的fireware,以及发送什么样命令,完全是由芯片决定. 我的建议是找到你对应芯片的linux下代码,然后比较你的代码和linux代码,这样检查是否有遗漏的地方,特别是初始化部分. 更细致的地方我也不知道了.因为没有你的环境和硬件. |
|
5楼#
发布于:2008-05-26 13:27
清中断了吗
|
|
6楼#
发布于:2008-05-26 16:49
谢谢GoodOnline和dstboxu得回复
请问dstboxu,你所说的清中断是什么意思? |
|
7楼#
发布于:2008-05-27 08:41
清中断,就是进入中断后,芯片的寄存器需要设置以下,或是读或是写寄存器。然后这个中断就不进入了。不然中断函数退出后还进,没完没了,像死锁一样。如果中断优先级高,除了关掉电源什么也做不了。
|
|
8楼#
发布于:2008-05-27 09:29
最好查一下你所使用的网卡的芯片及网卡的数据手册,上面应有详细的使用方法.
|
|
9楼#
发布于:2008-07-13 21:50
也建议从初始化代码开始查,对照linux代码!如果硬件没有问题的话!
|
|