阅读:2498回复:44
驱动问题(有分送啊,也请wxl_50685330大大帮帮忙啊)
各位大大,
请问一个问题,我现在PB新建的自己的平台(设为SSS),在WORKPLACE里建了两个DLL工程,一个叫CCCISR(专用的ISR),一个叫CCCDRIVER(流驱动),在PLARTFORM.BIB中写: CCCDRIVER.dll $(_FLATRELEASEDIRCCCDRIVER.dll NK SH CCCISR.dll $(_FLATRELEASEDIR)CCCTIMER.dll NK SHK 在PLATFORM.REG中写: [HKEY_LOCAL_MACHINEDriversBuiltInPCITemplateCCCDRIVER] "Dll"="CCCDRIVER.dll" "Prefix"="CCC" "Index"=dword:1 "Order"=dword:14 "IsrDll"="CCCISR.dll" "IsrHandler"="ISRHandler" "PortIsIO"=dword:1 "PortOffset"=dword:1c "PortSize"=dword:1 BUILD所有,在BUILD窗口也发现了BUILD CCCDRIVER和CCCISR,在各自的子目录下发现了DLL文件,在SSSRelDir也发现了其DLL文件,但是似乎两个DLL(驱动),并没有在镜象中,因为根本不到CCCDRIVER_INIT我所设置的断点.应用程序也不能调用CCCDRIVER.DLL文件.请各位大大帮帮忙诊断一下.(我的平台是X86,CCCDRIVER是一块ISA的定时器板子) 非常感谢各位 [编辑 - 12/6/04 by dongbl2000] [编辑 - 12/6/04 by dongbl2000] |
|
论坛版主
|
沙发#
发布于:2004-12-06 14:06
用makeimg把dll连接进os image。记得你的驱动需要用.def输出流接口
注册表好像还缺少[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\PCI\\Instance\\CCCDRIVER]的内容,不要不知道行不行,你试试 |
|
板凳#
发布于:2004-12-06 14:32
首先,感谢WXL_50685330大大,但是大大,我搞不清楚INSTANCE怎么写,下面是个PB的例子
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Instance\WaveDev1] DWORD: SysIntr = 0x20 DWORD: Irq = 0x9 DWORD: IoLen = 0x40 DWORD: IoBase = 0xe000 DWORD: BusNumber = 0x0 DWORD: InterfaceType = 0x5 DWORD: SubSystemID = 0x1371 DWORD: SubVendorID = 0x1274 DWORD: RevisionID = 0x8 DWORD: DeviceID = 0x1371 DWORD: VendorID = 0x1274 DWORD: ProgIF = 0x0 DWORD: SubClass = 0x1 DWORD: Class = 0x4 SZ: IsrHandler = ISRHandler SZ: IsrDll = giisr.dll DWORD: Dma = 0x5 DWORD: Order = 0x0 DWORD: Index = 0x1 SZ: Dll = es1371.dll SZ: Prefix = WAV DWORD: InstanceIndex = 0x1 这中间有好多值,我不知道啊,例如:BusNumber,SubSystemID,ProgIF,SubVendorID,RevisionID,SubClass,CLASS等等,我这个板子是自己做的.我要不要填写呢? 大大,看以前的贴子,有人还写了CEC文件.我要写这个文件吗?看PB里CREATE NEW DRIVER没要写啊! 总之,谢谢大大帮忙.先有10分,请大大笑纳. |
|
地板#
发布于:2004-12-07 09:32
我来说两句吧
:P (1)如果你想把驱动加到工程里面,既可以通过cec文件的方式,也可以通过直接修改bib文件。我看前面你是通过修改PLARTFORM.BIB文件把你的驱动加入平台的,也就没有必要再创建cec文件了。 (2)既然你说,你的CCCDRIVER是针对一块ISA的板子,那么你的注册表为什么不采用ISA的形式而是采用PCI的形式?我怀疑你的驱动没有启动可能与此有关。 ;) |
|
|
地下室#
发布于:2004-12-07 11:41
谢谢大老指点.我试用了ISA的注册表写法.
我多写了下面的一段 [HKEY_LOCAL_MACHINE\Drivers\BUILDIN\ISA] "Dll"="RegEnum.dll" "Order"=dword:3 "Flags"=dword:1 但是编译总是出错. 能否在指教一二.总之谢谢你.分已送出了,请笑纳. |
|
5楼#
发布于:2004-12-07 11:51
怎么回事,怎么老是退出登陆,给不了分!!!
|
|
6楼#
发布于:2004-12-07 13:06
dongbl2000兄弟,你多写了下面的一段是何用意啊?
[HKEY_LOCAL_MACHINEDriversBUILDINISA] "Dll"="RegEnum.dll" "Order"=dword:3 "Flags"=dword:1 如果你的驱动程序是xyz.dll,那么注册表应该是下面的形式 [HKEY_LOCAL_MACHINE\Drivers\BUILTIN\xyz] "Dll"="xyz.dll" "Order"=dword:3 "Prefixr"="XXX" ;改成你自己的 "Index"=dword:1 ..... 等等,祝你好运!! [编辑 - 12/7/04 by wwei_wang] |
|
|
7楼#
发布于:2004-12-07 13:14
谢谢老兄的帮助,那么还有个小问题,请教老大,那么我自己写了一个ISR程序,是否也可以按照PCI的格式,加到该注册的后面.就象:
"isrdll"="CCCisr" "ISRHANDLE"="isRHANDLE". 谢谢. 另外,我怎么一进入给分网页,就自动的退出登陆呢?很郁闷. 再次感谢你的帮助. |
|
论坛版主
|
8楼#
发布于:2004-12-07 13:15
:)你先确定自己的设备在整个系统中的位置,如果是挂在了外围总线上则需要确定是什么总线,如果有总线级联情况又会复杂些,有了设备在系统中的层次后才能确定注册表应该怎么设置。
|
|
9楼#
发布于:2004-12-07 13:23
wxl_50685330 老大,
我现在用的是,工业用的半长板(X86),插在无源主板上,无源主板上有三个PCI插槽和两个EISA插槽.那块ISA的定时器板也插在上面.其他插槽没有设备. 所以我现在比较糊涂,究竟该怎么写这个设备的注册表结构. 谢谢老大 |
|
10楼#
发布于:2004-12-07 13:32
wxl_50685330大哥说的没错。
但是对于dongbl2000兄弟你说的这种情况,我觉得你对应的注册表项应该采用ISA的形式进行设置,不知wxl_50685330大哥是否同意我的看法? :P [编辑 - 12/7/04 by wwei_wang] |
|
|
论坛版主
|
11楼#
发布于:2004-12-07 13:46
同意同意:))
isa只是系统总线的简单扩展,memroy和端口读写都可以按照一般设备来访问,给基地址加偏移就行了,注册表可以就这样写: [HKEY_LOCAL_MACHINE\\Drivers\\BUILTIN\\isa] "Dll"="xyz.dll" "Order"=dword:3 "Prefixr"="XXX" ;改成你自己的 "Index"=dword:1 ..... |
|
论坛版主
|
12楼#
发布于:2004-12-07 14:08
刚又看了一下,帮助是这样写的:
[HKEY_LOCAL_MACHINE\\Drivers\\ISA] "Dll"="RegEnum.dll" "Order"=dword:3 "Flags"=dword:1 [HKEY_LOCAL_MACHINE\\Drivers\\ISA\xyz] "Dll"="xyz.Dll" "Order"=dword:0 "Irq"=dword:4 "IoBase"=dword:xxx "IoLen"=dword:xxx "SysIntr"=dword:xxx "Prefix"="xxx" "DeviceArrayIndex"=dword:xxx 你看看,需要的项保留,不要的条目就去掉 还是按帮助的来吧,按他的好对照 |
|
论坛版主
|
13楼#
发布于:2004-12-07 14:13
[HKEY_LOCAL_MACHINE\\Drivers\\ISA\\xyz]
|
|
14楼#
发布于:2004-12-07 14:20
wxl_50685330大哥,这里有一点我不太明白:
这个ISA驱动的注册表项为什么不放在\\Builtin子键下面?? :mad: |
|
|
15楼#
发布于:2004-12-07 14:20
wxl_50685330大哥,这里有一点我不太明白:
这个ISA驱动的注册表项为什么不放在\\Builtin子键下面?? :mad: 请你指教!! |
|
|
16楼#
发布于:2004-12-07 14:31
好象例子中的ROOTKEY设定的是DRIVERS,而自建平台中设定的是DRIVERS\BUILDIN.
我按例子的样子加了后,编译通过,但是DOWNLOAD后,靶机启动不了. 真晕 |
|
论坛版主
|
17楼#
发布于:2004-12-07 14:45
哈哈哈,兄弟说话搞笑哈,靶机,哇我发现拼音输入的联想功能居然真有这个词!!!厉害
启动不了了?你看看调试信息有些什么?你添了这个驱动出的问题?要不按第一种方式试试 我觉得这个其实无所谓,如果你用isa总线把设备做死了,也没什么改动了,就写到builtin里面也可以,只要注册表枚举器能枚举到到就行。不过即使是isa插槽也可以写到builtin下,大不了换设备重写注册表。 |
|
18楼#
发布于:2004-12-07 14:55
wxl_50685330大大,
您说的在理,我再重新试试.直接写在BUILDIN下面. |
|
19楼#
发布于:2004-12-07 15:03
dongbl2000兄弟,问题解决了吗?
|
|
|
上一页
下一页