在windriver下,不必插入pcmcia板卡,就能生成代码,而且生成的代码是关于pci
寄存器的读写以及pci端口读写等的函数,这是怎么回事?
寄存器的读写以及pci端口读写等的函数,这是怎么回事?
pcmcia板卡包括两类:pcmcia类(相当于isa),cardbus类(相当于pci)
如果你不插入卡,用windriver生成的是位于笔记本中的cardbus bridge的相关内容,其实这一部分是不需要你来做的,windows内已带有他的驱动程序。因此,你必须把你要用的卡插入socket内,再通过windriver来产生
如果你不插入卡,用windriver生成的是位于笔记本中的cardbus bridge的相关内容,其实这一部分是不需要你来做的,windows内已带有他的驱动程序。因此,你必须把你要用的卡插入socket内,再通过windriver来产生
可是把卡插进去了,在windriver中还是只有关于cardbuscontroller的选项,和没插卡之前的选项一样。不知怎样产生一个新的driver文件?
你有没有听到丁冬的声音?如没有,那么你的笔记本还没有检测到卡,也就不可能看到这个卡的寄存器了.
WinDriver 怎么访问两张pcmica卡,我看两张卡的
typedef struct
{
BYTE uBus; // bus number (first bus is 0)
BYTE uSocket; // socket number (first socket is 0)
BYTE uFunction; // function number (first function is 0)
BYTE uPadding; // 1 byte padding so structure will be 4 bytes aligned
} WD_PCMCIA_SLOT;
两张卡的信息中,结构体中,几个参数都为0,是什么原因?
typedef struct
{
BYTE uBus; // bus number (first bus is 0)
BYTE uSocket; // socket number (first socket is 0)
BYTE uFunction; // function number (first function is 0)
BYTE uPadding; // 1 byte padding so structure will be 4 bytes aligned
} WD_PCMCIA_SLOT;
两张卡的信息中,结构体中,几个参数都为0,是什么原因?
最近在做PCMCIA的驱动,有很多疑问
首先,我的要做的驱动是不是关于socket的驱动,也就是那个插槽的驱动,那么对于PC卡,是不是还要另外安装驱动?
其次,我看了BSP下面关于PCMCIA的代码,都是关于PDD层的,涉及GPIO的设置。而我看Public下面的关于PCMCIA的驱动时,发现其中PDD,MDD等都包括在内了,不知道我要不要往BSP里面添加关于MDD层的代码?
最后,能不能帮我讲解一下关于PCMCIA驱动的整体架构,或者给点提示.
首先,我的要做的驱动是不是关于socket的驱动,也就是那个插槽的驱动,那么对于PC卡,是不是还要另外安装驱动?
其次,我看了BSP下面关于PCMCIA的代码,都是关于PDD层的,涉及GPIO的设置。而我看Public下面的关于PCMCIA的驱动时,发现其中PDD,MDD等都包括在内了,不知道我要不要往BSP里面添加关于MDD层的代码?
最后,能不能帮我讲解一下关于PCMCIA驱动的整体架构,或者给点提示.
pcmcia网卡的COR寄存器如何读写?
读这个寄存器的方法有点怪,怪在这个寄存器的址并不是固定的,当然通用的网卡我想地址应该是固定的,否则就通用不起来的。
但如果做自己的网卡,地址在CTPL_XXX(1a?),自己定义的,哪个来着,记不清了,你自己看一下协议吧!!上面写着呢!
如果,你知道更好的方法也跟我说说!
但如果做自己的网卡,地址在CTPL_XXX(1a?),自己定义的,哪个来着,记不清了,你自己看一下协议吧!!上面写着呢!
如果,你知道更好的方法也跟我说说!
我们开发的是小端口的网卡驱动,已经从卡的CIS中查到COR的基地址是
0x000003E0h,应该用什么函数来修改这个寄存器的值?
如果,地址是别的,我觉得应该用
write_port_uChar,write_register_uchar,(名称记不清楚了,你自己查DDK文挡)
至于地址是0X3E0,0X3E1我也糊涂了,这本来是对应于CARD SERIVCE里面的地址,数据端口,怎么又拿出来了呢?糊涂!!!
我奇怪的是,0x3e0 你是怎么得来的,是分析CIS数据的结果吗?
在我的印象中(但不一定是对的,供你参考):
0X3E0,0X3E1是提供给CARD SERVICE用的地址端口,如果你自己编写BIOS里的CARD SERVICE 你就可以用,如果不是就,我觉得最好不要去用,至于用了错不错,我不知道。
我说过,COR地址在什么地方,你是要看协议的,你必须想办法把所有的CIS数据读出来,然后按照协议去分析,自然就可以得到这个地址,然后用函数读(read_port_uchar)写(write_port_uchar)端口就可以了。
谢谢大虾,但我确实是把cis全部读了出来,然后分析了tpl_code之后的得到这个地址,没错确实是0x000003e0,愁死了,能再指点一下吗?因为将cis的bit0置1可以对我们的卡进行重启,bit7置1可以将卡置于i/o状态!!
那就用我说的函数试一试!!
我已经往里写了东西
可是不管读和写
该端口的值都是0xff
也就是说无法修改
我 就不明白到底怎么回事了
请各位大虾指点
0x000003E0h,应该用什么函数来修改这个寄存器的值?
如果,地址是别的,我觉得应该用
write_port_uChar,write_register_uchar,(名称记不清楚了,你自己查DDK文挡)
至于地址是0X3E0,0X3E1我也糊涂了,这本来是对应于CARD SERIVCE里面的地址,数据端口,怎么又拿出来了呢?糊涂!!!
非常感谢jeosph! :) 我们能查到的地址就是这个0x3E0,它说是base address,这个地址不对吗?到底怎样才能对COR寄存器进行正确的寻址和访问,还望多多指点,急! :( | ||||||
| ||||||
[4 楼] | Posted: 2001-07-03 19:54 |
jeosph 级别: 驱动中牛 精华: 0 发帖: 535 威望: 10 点 积分: 96 分 贡献值: 0 点 好评度: 9 点 原创分: 0 分 注册时间:2001-04-19 最后登录:2006-10-08 |
|
我奇怪的是,0x3e0 你是怎么得来的,是分析CIS数据的结果吗?
在我的印象中(但不一定是对的,供你参考):
0X3E0,0X3E1是提供给CARD SERVICE用的地址端口,如果你自己编写BIOS里的CARD SERVICE 你就可以用,如果不是就,我觉得最好不要去用,至于用了错不错,我不知道。
我说过,COR地址在什么地方,你是要看协议的,你必须想办法把所有的CIS数据读出来,然后按照协议去分析,自然就可以得到这个地址,然后用函数读(read_port_uchar)写(write_port_uchar)端口就可以了。
| ||||||
[5 楼] | Posted: 2001-07-04 11:31 |
yz228 级别: 驱动牛犊 精华: 0 发帖: 12 威望: 0 点 积分: 0 分 贡献值: 0 点 好评度: 0 点 原创分: 0 分 注册时间:2001-06-12 最后登录:2002-10-09 |
|
谢谢大虾,但我确实是把cis全部读了出来,然后分析了tpl_code之后的得到这个地址,没错确实是0x000003e0,愁死了,能再指点一下吗?因为将cis的bit0置1可以对我们的卡进行重启,bit7置1可以将卡置于i/o状态!!
| ||||||
[6 楼] | Posted: 2001-07-05 17:30 |
jeosph 级别: 驱动中牛 精华: 0 发帖: 535 威望: 10 点 积分: 96 分 贡献值: 0 点 好评度: 9 点 原创分: 0 分 注册时间:2001-04-19 最后登录:2006-10-08 |
|
那就用我说的函数试一试!!
| ||||||
[7 楼] | Posted: 2001-07-05 18:33 |
mrnoon 级别: 驱动牛犊 精华: 0 发帖: 5 威望: 0 点 积分: 0 分 贡献值: 0 点 好评度: 0 点 原创分: 0 分 注册时间:2001-05-08 最后登录:2006-07-31 |
|
我已经往里写了东西
可是不管读和写
该端口的值都是0xff
也就是说无法修改
我 就不明白到底怎么回事了
请各位大虾指点