如果想出发,就不要等到明天!
全部博文(317)
分类:
2009-03-23 02:11:08
最近给我的笔记本买了一笔记本PCMCIA二代扩展接口转串并口一体卡,如下图所示:
在使用Jtag + sjf2410.exe烧写程序对arm 9 2410开发板的Nand flash进行程序烧写时出现了以下错误:
“ERROR:Unable to find a parallel port”系统提示找不到并口!!!如下图:
但并口明明是驱动成功的,怎么会找不到并口呢?
系统并口显示如下图:
经过多番思考,觉得是sjf2410这个程序中对于并口的基地址定义有错误,于是上网找到了sjf的源代码,并使用VC6.0进行打开,找到并口地址的定义,如下图:
ppt.h这里定义了三个并口LPT1、LPT2、LPT3三个并口,且系统认出了并口LPT3,但为什么程序说找不到并口呢?
原来程序定义的并口地址是CPU里面给出的并口地址,是硬件决定的默认并口接线地址,但笔记本里面没有从这个接口中引出并口,所以这三个并口地址是无效的,当然也就认不出并口了。而扩展并口是通过总线形式扩展的,地址由操作系统加载驱动程序后分配得到的。所以sjf2410.exe这个程序在编写时无法知道系统分配了什么地址给这个扩展的并口,所以就没有在源代码里面定义出来了!!!
现在只能够是找到系统分配给扩展并口的地址,然后对sjf的源代码进行重新编译出sjf2410.exe程序了。那么怎样找到并口的地址呢?如下图所示:
这里面有4个地址,到底是哪个呢?其实系统对硬件的地址分配只是分配基地址,剩下的都是基于基地址的偏移,是由硬件决定的,所以我们只有第一个地址0x2CF8就行了。(注意:这个地址并不是固定不变的,在你下次插入并口卡的时候可能分配到的就不是这个地址了。)如下图所示本次分到的是0x3000:
改好地址后,把程序重新编译一遍就可以使用啦!!!
呵呵!!!
garfield_trump2009-06-20 15:01:32
这个地址是动态分配的,每次插入卡都可能不一样,回去属性哪里看下就知道了,不一定是0x3000或者0x2f8的,还可能是别的地址。