dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2498回复:44

驱动问题(有分送啊,也请wxl_50685330大大帮帮忙啊)

楼主#
更多 发布于:2004-12-06 13:08
各位大大,
请问一个问题,我现在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]
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-06 14:06
用makeimg把dll连接进os image。记得你的驱动需要用.def输出流接口

注册表好像还缺少[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\PCI\\Instance\\CCCDRIVER]的内容,不要不知道行不行,你试试
根据地的兄弟们,团结就是力量
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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分,请大大笑纳.
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-07 09:32
我来说两句吧
 :P
(1)如果你想把驱动加到工程里面,既可以通过cec文件的方式,也可以通过直接修改bib文件。我看前面你是通过修改PLARTFORM.BIB文件把你的驱动加入平台的,也就没有必要再创建cec文件了。
(2)既然你说,你的CCCDRIVER是针对一块ISA的板子,那么你的注册表为什么不采用ISA的形式而是采用PCI的形式?我怀疑你的驱动没有启动可能与此有关。
 ;)
Come on, let us drive the world.
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-07 11:41
谢谢大老指点.我试用了ISA的注册表写法.
我多写了下面的一段
[HKEY_LOCAL_MACHINE\Drivers\BUILDIN\ISA]
    "Dll"="RegEnum.dll"
    "Order"=dword:3
    "Flags"=dword:1
但是编译总是出错.

能否在指教一二.总之谢谢你.分已送出了,请笑纳.
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-07 11:51
怎么回事,怎么老是退出登陆,给不了分!!!
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
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]
Come on, let us drive the world.
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-07 13:14
谢谢老兄的帮助,那么还有个小问题,请教老大,那么我自己写了一个ISR程序,是否也可以按照PCI的格式,加到该注册的后面.就象:
"isrdll"="CCCisr"
"ISRHANDLE"="isRHANDLE".
谢谢.

另外,我怎么一进入给分网页,就自动的退出登陆呢?很郁闷.

再次感谢你的帮助.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-07 13:15
:)你先确定自己的设备在整个系统中的位置,如果是挂在了外围总线上则需要确定是什么总线,如果有总线级联情况又会复杂些,有了设备在系统中的层次后才能确定注册表应该怎么设置。
根据地的兄弟们,团结就是力量
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-07 13:23
wxl_50685330 老大,
我现在用的是,工业用的半长板(X86),插在无源主板上,无源主板上有三个PCI插槽和两个EISA插槽.那块ISA的定时器板也插在上面.其他插槽没有设备.
所以我现在比较糊涂,究竟该怎么写这个设备的注册表结构.
谢谢老大

wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-07 13:32
wxl_50685330大哥说的没错。
但是对于dongbl2000兄弟你说的这种情况,我觉得你对应的注册表项应该采用ISA的形式进行设置,不知wxl_50685330大哥是否同意我的看法? :P

[编辑 -  12/7/04 by  wwei_wang]
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
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
.....
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
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

你看看,需要的项保留,不要的条目就去掉

还是按帮助的来吧,按他的好对照
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-07 14:13
[HKEY_LOCAL_MACHINE\\Drivers\\ISA\\xyz]


根据地的兄弟们,团结就是力量
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-07 14:20
wxl_50685330大哥,这里有一点我不太明白:
这个ISA驱动的注册表项为什么不放在\\Builtin子键下面??
 :mad:
Come on, let us drive the world.
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-12-07 14:20
wxl_50685330大哥,这里有一点我不太明白:
这个ISA驱动的注册表项为什么不放在\\Builtin子键下面??
 :mad:
请你指教!!
Come on, let us drive the world.
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-07 14:31
好象例子中的ROOTKEY设定的是DRIVERS,而自建平台中设定的是DRIVERS\BUILDIN.
我按例子的样子加了后,编译通过,但是DOWNLOAD后,靶机启动不了.
真晕
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-07 14:45
哈哈哈,兄弟说话搞笑哈,靶机,哇我发现拼音输入的联想功能居然真有这个词!!!厉害

启动不了了?你看看调试信息有些什么?你添了这个驱动出的问题?要不按第一种方式试试


我觉得这个其实无所谓,如果你用isa总线把设备做死了,也没什么改动了,就写到builtin里面也可以,只要注册表枚举器能枚举到到就行。不过即使是isa插槽也可以写到builtin下,大不了换设备重写注册表。

根据地的兄弟们,团结就是力量
dongbl2000
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-07 14:55
wxl_50685330大大,
您说的在理,我再重新试试.直接写在BUILDIN下面.
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-07 15:03
dongbl2000兄弟,问题解决了吗?
Come on, let us drive the world.
上一页
游客

返回顶部