degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:2701回复:30

驱动加载的问题,很急,请wxl_50685330老大帮忙

楼主#
更多 发布于:2004-10-19 15:17
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的条目,不知道是为什么,请老大说说
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-19 16:13
我试试啊,但是说的不一定对喔,兄弟:)

[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\PCI\\Template\\Pci9054]这个条目是配置模版信息的,也就是什么dll名字,启动顺序,制造商id和设备id等,pci总线驱动使用这些通用信息匹配总线上的设备并为其加载对应的驱动(dll),那么对于总线上的多个类似设备实例,则将其设备相关信息放到[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\PCI\\Instance\\Pci9054]
下面,这包括设备使用的内存范围,io端口范围,总线驱动利用模版信息找到设备后,会将模版信息考到实例信息条目下。

所一个那个Instance的条目是需要你设置的,然后系统启动后会添加模版信息到里面。

对了,兄弟还需要使用串口看看启动的调试信息,看你的驱动时不是真的被加载了,最基本的是dllmain里面可以输出一个东西,确定驱动被加载,在说其他的,good luck!
根据地的兄弟们,团结就是力量
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-20 08:53
老大,我发现了,在我的nk.bin就没有我的那个dll,但是我的cec文件已经加到catalog并且我的驱动模块也通过catalog加到我生成的platform了呀,但是就是没有,你可以帮我看看吗
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-20 13:12
:)我还没有用Ide加过驱动,兄弟啊:))

你的cec编辑的对不对?你再仔细检查一下,如果驱动加进去了你再检查一下sources里面的一些设置,特别是生成的dll在什么地方,把winceoem=1加进去。最后还是没办法的话就手动加吧,这个我能帮忙:)))

找到你的$(_flatreleasedir),然后打开
1. platform.reg,把你的注册表项加好,reg条目格式见其他reg文件
2. 打开platform.bib,把你的dll加进去,格式是:
MODULES
driver.dll     $(_flatreleasedir)\\driver.dll   NK  SH
你就把你的driver名字换上就行了
3. 在你的pb里面选make image
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-20 13:17
对了,你说你通过cec把驱动加到platform里面了,那你build platform以后你的那个dll生成没有?是不是在bsp的target目录里面?是不是被考到了(_flatreleasedir)里面,然后检查是不是在ce.bib里面有你的dll的那句话,一步一步找就可以看到哪儿有问题,总之都是次要问题了,你的dll才是问题的关键,努力努力:)
根据地的兄弟们,团结就是力量
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-20 13:34
老大,我想我找到毛病了,我的cec文件有点错误,但是现在又有一个问题,我修改了我的cec文件,在映像编译的时候又有了问题,出现了错误如下:
Platform header files are up-to-date...
Performing Additional Build Actions...
BUILD: Checking for E:\WINCE420\sdk\bin\i386\srccheck.exe.
BUILD: SrcCheck exit code: 0 (dec)
srcgen E:\WINCE420\PUBLIC\COMMON winceos E:\WINCE420\public\common
BUILD: Compile and Link for x86.
BUILD: Loading E:\WINCE420\PUBLIC\COMMON\Build.dat...
BUILD: Computing Include file dependencies:
BUILD: Examining e:\wince420\public\common\oak\drivers\traindemo directory for files to compile.
    e:\wince420\public\common\oak\drivers\traindemo
BUILD: Compiling e:\wince420\public\common\oak\drivers\traindemo directory
NMAKE :  U1073: don't know how to make 'traindemo.def'
BUILD: NMAKE.EXE  -i -c BUILDMSG=Stop. NTTEST= UMTEST= NOLINK=1 NOPASS0=1 failed - rc = 2
BUILD: Compile errors: not linking e:\wince420\public\common\oak\drivers\traindemo directory
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-20 14:00
已经解决了,但是还要那个问题老大,在我的nk。bin中没有发现我的dll文件,不知道怎么在cec文件中修改才可以把我编译的dll放到nk.bin中
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-20 15:11
哈哈,不要激动啊,你一会儿好了,一会儿又不对了,我都昏了:))

你开始说的找到毛病是什么?cec的?解决了什么了?又遇到的编译不对那个又对了?怎么最后又在说nk.bin还是没有dll?:)))真的被你弄昏了

对了,你先按我上面写的检查一下那些东西,有和我说的不一样的给我说,我看可能哪儿不对,我刚又仔细看了一下cec文件,是不是在:
\\device driver\\drivers\\  下面的那个框中的advance里面需要设变量(好像是指这个驱动受什么变量控制),然后再在pb里面设这个变量为1,你试试
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-20 15:13
你先看看你的dll编译出来没,在什么地方
根据地的兄弟们,团结就是力量
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-20 16:13
老大,我把情况和你详细的介绍一下,对了你还上你的那个qq嘛,我已经加了你了。我现在修改了cec文件,其中最后的有用的那个东西是这样的Action ( '#BUILD(SOURCES, "$(_WINCEROOT)\PUBLIC\COMMON\OAK\DRIVERS\traindemo")' ),我把我的驱动的源文件都考到PUBLIC\COMMON\OAK\DRIVERS\traindemo下,然后把这个驱动做为一个组件添到我的platform中,在编译映像的过程中看编译信息已经build我的那个驱动文件了。但是我搜索我的整个硬盘也没有我驱动的dll文件,我用viewbin这个看nk.bin里面也没有我的驱动的dll,我现在就不清楚怎么可以在cec文件中修改,才可以将我的驱动的dll加到nk。bin中
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-20 16:19
同时我也很奇怪,为什么我的文件都编译了确没有我的dll产生,我在驱动目录的sourece文件中已经写了TARGETNAME=traindemo
TARGETTYPE=DYNLINK等信息
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-10-20 16:50
嗯,了解情况了,我先说一点哈,你干吗要把你的驱动放到$(_WINCEROOT)\\PUBLIC\\COMMON\\OAK\\DRIVERS里面啊,你放到你自己的bsp目录里面不好吗?当然,我不是说非要这样做哈,有时候试试各种情况也有些新的发现

如果你放到这个目录里面的话,编译出来的东西确实不知道会放到哪儿:)跟sources里面的设定有关,你搜索整个硬盘都没找到?你要确定你是找的整个$(_winceroot)喔,如果真的没有,那你就放到你自己的bsp里面编译嘛,就是$(_winceroot)\\platform\\YourBSP

你先确定dll被生成再说其他的

对了sources里面设winceoem=1哈

做好刚才那步再说,good luck
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-10-20 16:51
嗯,了解情况了,我先说一点哈,你干吗要把你的驱动放到$(_WINCEROOT)\\PUBLIC\\COMMON\\OAK\\DRIVERS里面啊,你放到你自己的bsp目录里面不好吗?当然,我不是说非要这样做哈,有时候试试各种情况也有些新的发现

如果你放到这个目录里面的话,编译出来的东西确实不知道会放到哪儿:)跟sources里面的设定有关,你搜索整个硬盘都没找到?你要确定你是找的整个$(_winceroot)喔,如果真的没有,那你就放到你自己的bsp里面编译嘛,就是$(_winceroot)\\platform\\YourBSP

你先确定dll被生成再说其他的

对了sources里面设winceoem=1哈

做好刚才那步再说,good luck


对了,你娃咋个晓得我的qq?凶喔:))我不常上
根据地的兄弟们,团结就是力量
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-10-22 10:48
BUILD出来的DLL放在哪里,是根据SOURCES文件的RELEASETYPE的值指定的,和你的DRIVER源文件放在什么目录下无关.
没有设定的话,默认的路径是放在 %_PUBLICROOT%\Oak 下.
一般设成RELEASETYPE=PLATFORM, 生成的文件就在你的BSP的TARGET目录下了.
www.cnemb.com
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-10-22 13:15
咦,我记得好像是设winceoem=1也有关系啊:))帮助里面有,兄弟自己查查
根据地的兄弟们,团结就是力量
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-10-22 13:30
另外,要把DLL加到NK.BIN中,和修改CEC文件没有关系
需要修改的BIB文件
www.cnemb.com
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-10-22 14:09
各位老大,我现在的情况又有了变化,我又修改了cec文件,同时修改了。bib文件,重新编译后用viewbin 看我的nk.bin,在nk。bin中已经包含了我的那个dll文件,但是很头疼的是我在我的驱动的源文件中打了断点,想在系统启动发现了我的设备加载驱动时候在断点可以停止,一步步调试,但是现在系统启动时没有在断点停止,请问我改如何做才可以让系统在断点停止呢,同时感谢上面的两位老大的帮助
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-10-22 14:30
哈哈,这一招恐怕不行吧,仿真器用的不是软断点吧,arm不是x86,有可以加int 3断住。


你要想断在那儿写个while(1);完事,你还可以输出你感兴趣的东西到调试串口。

对了,你说想起动后一步一步调也可以,加了while(1)运行,运行到这儿后打开仿真器,强行打断它,然后进去把pc强制置为b xxxx的下一条指令就可以了,但是是汇编级的。
根据地的兄弟们,团结就是力量
degyhy123
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2014-02-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望71点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-10-22 14:43
wxl_50685330老大,我的系统是x86不是arm,但是象pb代的象pci ide/apapi等的驱动就可以先设定断点,在ce启动的过程中自己在断点停止呀,我现在是想在ce启动的过程中就可以设定断点调试这个驱动,不知道应该怎么做了
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-10-22 15:42
喔,对,你的好像是x86啊:)),不好意思,前面好像看到的,忘了:)

刚才给你说错了,应该是可以,arm好像都可以,我回忆了一下,当初我的代码设了断点,但没有消掉就烧到flash里面,结果就跑不动了,当初我怀疑是这个问题的。x86就更应该可以了。

那你看看你的驱动被加载没有,应该是没有执行到这儿。
根据地的兄弟们,团结就是力量
上一页
游客

返回顶部