首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

vxworks dm9000驱动 中断的有关问题

2012-03-16 
vxworks dm9000驱动 中断的问题我在2410下面加DM9000驱动,以下是初始化信息bank3;外部中断14,希望前辈看下

vxworks dm9000驱动 中断的问题
我在2410下面加DM9000驱动,以下是初始化信息
bank   3     ;   外部中断14   ,

希望前辈看下   ,   现在ID能够读出,但是不能ping通...

ilevel   =   14   这是外部中断号
ivec   =   5     这代表ENIT_5_23

以上这2个设置的正确么???


0x33fffe68   (tRootTask):   DM9000   loading   Now...
0x33fffe68   (tRootTask):   sysEtherEndLoad:   DM9000   Device   Name   String   is   0...
0x33fffe68   (tRootTask):   DM9000   loading   Now...
0x33fffe68   (tRootTask):   dm9000Parse:   unit   =   0
0x33fffe68   (tRootTask):   dm9000Parse:   IOBase   =   20000000
0x33fffe68   (tRootTask):   dm9000Parse:   ilevel   =   14
0x33fffe68   (tRootTask):   dm9000Parse:   ivec   =   5
0x33fffe68   (tRootTask):   0
0x33fffe68   (tRootTask):   13
0x33fffe68   (tRootTask):   f6
0x33fffe68   (tRootTask):   6c
0x33fffe68   (tRootTask):   87
0x33fffe68   (tRootTask):   90
0x33fffe68   (tRootTask):   dm9000Chack:   DM9000PID:   0x90000a46
0x33fffe68   (tRootTask):   dm9000MemInit:   Memory   setup   complete!
GX   find   dev-> op_mode   is   5
set_PHY_mode:   set   DM9000_100MFD.
0x33fffe68   (tRootTask):   set_PHY_mode()
set_PHY_mode__________end!0x33fffe68   (


Press   any   key   to   stop   auto-boot...
7
6
5
4
3
2
1
0

auto-booting...


boot   device                     :   dmf
unit   number                     :   0
processor   number           :   0
host   name                         :   host
file   name                         :   vxWorks
inet   on   ethernet   (e)   :   192.168.1.8:ffffff00
host   inet   (h)                 :   192.168.1.83
gateway   inet   (g)           :   192.168.1.1
user   (u)                           :   gx
ftp   password   (pw)         :   gx
flags   (f)                         :   0x0
target   name   (tn)           :   vxWorks
other   (o)                         :   dmf

Attached   TCP/IP   interface   to   dmf0.
0x33fa1dcc   (tBoot):   dm9000Config()   Setting   promiscuous   mode   off!
Attaching   network   interface   lo0...   done.
Loading...


我的dm9000中断连接在   GPG6/EINT14

我在dm9000Start   调用的函数   s3cExtIntPinEnable   中写入如下代码,初始化中断:
LOCAL   void   s3cExtIntPinEnable   (void)
{
           
                      r_BWSCON=r_BWSCON|(2 < <12)|(1 < <14)|(1 < <15);   /*rework   by   kw.gx   bank3*/



                /*rework   by   kw.gx   now   the   intruput   is   EINT[14]   GPG6   ,.^_^*/
                rpGPGCON   =   (   rpGPFCON   |   (2 < <12)   );                 /*GPG6   init   14*/
                      rpGPGUP   |=   1 < <6;                  
                 
                    r_EXTINT1=r_EXTINT1|0x1000000;   /*rising   edge   to   high   level*/
                    r_EXTINT1=r_EXTINT1&0xf9ffffff;
                 
                    rpINTPND   |=   1 < <5;   /*clear   status   for   EINT_8_23*/
                    rpEINTPEND   |=   1 < <14   ;/*clear   status   for   Int14*/
                    rpSRCPND   |=   1 < <5;
     
                    rpEINTMASK   &=   (~(1 < <14));   /*enble   Int14*/
                 
}

接下来dm9000Start     会
intConnect(INUM_TO_IVEC(pDrvCtrl-> ivec),   dm9000Int,   (int)pDrvCtrl)连接中断,ivec我给的是INT_VEC_EINT_8_23
intEnable(pDrvCtrl-> ilevel)   打开中断,ilevel   我现在给的是5,代表的是8—23,我不知道这个是不是该给个5,还是14呢,总之我给5,给14都不行。

在中断函数dm9000Int中一进来:
intDisable   (pDrvCtrl-> ilevel);/*   禁止中断8_23*/    
rpINTPND   |=   1 < <5;   /*clear   status   for   EINT_8_23*/
rpEINTPEND   |=   1 < <14   ;/*clear   status   for   Int14*/
rpSRCPND   |=   1 < <5;/**/
            .
            .
            .
        做处理
            .
            .
            .
最后           intEnable   (pDrvCtrl-> ilevel);   /*enble   Int8_23*/    
                        rpEINTMASK   &=   (~(1 < <14));       /*enble   Int14*/


可是现在我无法进入中断函数,我把处理过程都去了,在中断中只打印,一次都没有进来过,哪位前辈指点下啊...

[解决办法]
帮你顶一下
这里搞Vxwork的人太少了。很多事初学者,总是问一些使用工具的问题。你是得不到答案的。你应该找个火一点的论坛,驱动开发网你可以去看,我记得里面好象有这个板块。那里高手众多

热点排行