阅读:2785回复:30
驱动加载的问题,很急,请wxl_50685330老大帮忙
wxl_50685330老大,我现在的将完成的驱动以一个模块的方式加到一个platform中,但是系统起来后,我的驱动没有被加载,我在platfrom.reg中添加了一个[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\Pci9054]的条目,按照微软的说法,在系统起来后应该在注册表中有一个[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Instance
\Pci9054]的条目记录pci的配置信息,但是现在我在系统起来以后在注册表的instance中没有看见pci9054,但是在template下缺有pci9054的条目,不知道是为什么,请老大说说 |
|
沙发#
发布于:2004-11-12 14:29
解决了嘛?能生成dll嘛,没有生成dll可能是你根本就跳过这个驱动没有编译生成dll啊!
|
|
板凳#
发布于:2004-11-03 17:49
前面提到的 viewbin 是个什么工具啊?看来对分析nk.bin很有帮助。
Platform Builder里集成了吗?如果没有,哪里可以找到? 谢谢! |
|
地板#
发布于:2004-10-25 13:12
现在又有了新的问题老大,我又修改了platform.reg,现在再ce启动的过程中,在我的驱动的dll中那个dllmain函数设置断点系统可以停在那里,但是单步执行完这个函数后,我的驱动dll文件没有被加载,后来看调试信息,有这两个错误:
DecommitPages: Cannot decommit block at 03540000, lock count 20 Unloading module traindemo.dll at address 0x03540000-0x0354A000 (RW data at 0x01F6B000-0x01F6DAD0)这样我的dll还是没有被加载到ce系统中 |
|
地下室#
发布于:2004-10-25 08:34
收到我的mail了吗老大
|
|
论坛版主
![]() |
5楼#
发布于:2004-10-22 17:09
WXL_50685330@163.COM
|
|
6楼#
发布于:2004-10-22 16:40
那老大你留个mail吧,我给你发过去
|
|
论坛版主
![]() |
7楼#
发布于:2004-10-22 16:38
哇,现在上班上qq不方便,我也没有下,什么状况,发mail给我,说详细一些,问题不大,慢慢来,可以搞定的!只要让驱动被加载并执行,以后的都好办了,你把注册表和bib设置的都写给我吧。
|
|
8楼#
发布于:2004-10-22 16:23
老大,你上qq吧,情况比较复杂,qq说好说
|
|
论坛版主
![]() |
9楼#
发布于:2004-10-22 16:12
对嘛,这样一步一步走就对了,先保证每一步正确才作下一步三:))
这个原因很多了,但我估计注册表设置不对可能性最大,你看我前面给你写的没有?检查你的注册表设置,仔细点儿,特别是什么manufacture id和device id等等关系到驱动是否被加载的设置,还有instance那个条目你加上没有? 另外,你看到pci总线驱动被正常加载执行了吗? |
|
10楼#
发布于:2004-10-22 16:07
老大,我现在通过调试发现,我的dll在ce系统中还是没有加载,但是在nk.bin中有我的dll文件呀,我想是ce没有发现我的设备或者注册表有问题才这样的,首先我的设备在别的系统下是正常的,那老大现在还有什么需要注意的呢
|
|
论坛版主
![]() |
11楼#
发布于:2004-10-22 15:45
最简单的你在dllmain里面输出东西,确定dll被加载,但注意是不是被卸载了,你用的是debug编译的吗?多输出些信息看看
|
|
论坛版主
![]() |
12楼#
发布于:2004-10-22 15:42
喔,对,你的好像是x86啊:)),不好意思,前面好像看到的,忘了:)
刚才给你说错了,应该是可以,arm好像都可以,我回忆了一下,当初我的代码设了断点,但没有消掉就烧到flash里面,结果就跑不动了,当初我怀疑是这个问题的。x86就更应该可以了。 那你看看你的驱动被加载没有,应该是没有执行到这儿。 |
|
13楼#
发布于:2004-10-22 14:43
wxl_50685330老大,我的系统是x86不是arm,但是象pb代的象pci ide/apapi等的驱动就可以先设定断点,在ce启动的过程中自己在断点停止呀,我现在是想在ce启动的过程中就可以设定断点调试这个驱动,不知道应该怎么做了
|
|
论坛版主
![]() |
14楼#
发布于:2004-10-22 14:30
哈哈,这一招恐怕不行吧,仿真器用的不是软断点吧,arm不是x86,有可以加int 3断住。
你要想断在那儿写个while(1);完事,你还可以输出你感兴趣的东西到调试串口。 对了,你说想起动后一步一步调也可以,加了while(1)运行,运行到这儿后打开仿真器,强行打断它,然后进去把pc强制置为b xxxx的下一条指令就可以了,但是是汇编级的。 |
|
15楼#
发布于:2004-10-22 14:09
各位老大,我现在的情况又有了变化,我又修改了cec文件,同时修改了。bib文件,重新编译后用viewbin 看我的nk.bin,在nk。bin中已经包含了我的那个dll文件,但是很头疼的是我在我的驱动的源文件中打了断点,想在系统启动发现了我的设备加载驱动时候在断点可以停止,一步步调试,但是现在系统启动时没有在断点停止,请问我改如何做才可以让系统在断点停止呢,同时感谢上面的两位老大的帮助
|
|
16楼#
发布于:2004-10-22 13:30
另外,要把DLL加到NK.BIN中,和修改CEC文件没有关系
需要修改的BIB文件 |
|
|
论坛版主
![]() |
17楼#
发布于:2004-10-22 13:15
咦,我记得好像是设winceoem=1也有关系啊:))帮助里面有,兄弟自己查查
|
|
18楼#
发布于:2004-10-22 10:48
BUILD出来的DLL放在哪里,是根据SOURCES文件的RELEASETYPE的值指定的,和你的DRIVER源文件放在什么目录下无关.
没有设定的话,默认的路径是放在 %_PUBLICROOT%\Oak 下. 一般设成RELEASETYPE=PLATFORM, 生成的文件就在你的BSP的TARGET目录下了. |
|
|
论坛版主
![]() |
19楼#
发布于:2004-10-20 16:51
嗯,了解情况了,我先说一点哈,你干吗要把你的驱动放到$(_WINCEROOT)\\PUBLIC\\COMMON\\OAK\\DRIVERS里面啊,你放到你自己的bsp目录里面不好吗?当然,我不是说非要这样做哈,有时候试试各种情况也有些新的发现
如果你放到这个目录里面的话,编译出来的东西确实不知道会放到哪儿:)跟sources里面的设定有关,你搜索整个硬盘都没找到?你要确定你是找的整个$(_winceroot)喔,如果真的没有,那你就放到你自己的bsp里面编译嘛,就是$(_winceroot)\\platform\\YourBSP 你先确定dll被生成再说其他的 对了sources里面设winceoem=1哈 做好刚才那步再说,good luck 对了,你娃咋个晓得我的qq?凶喔:))我不常上 |
|
上一页
下一页