4760|18

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CE 6.0 驱动 OAL [复制链接]

    有个问题想请教下:我有两个BSP,其中有个驱动,注册表的配置信息和驱动的源代码都是一样的,是网卡驱动。但编译的结果是:一个可以加载(开机加载,不是流驱动),而另外一个BSP的NK.BIN烧进去后不可以加载。这个问题一般是怎么造成的?
【☆☆是不是在OAL代码里面的硬件初始化、中断之类的操作出现了问题?】
---------------------
我是CE6.0,
-----------
驱动的加载都是需要一个进程来来实现,不管是Device.exe,还是其它的进程,他们都是先被系统加载,然后,再去根据注册表的信息来加载相应的驱动,
【问题:】一般的如Device.exe之类的进程是不是不用管它,只要晓得这个黑匣子的作用就可以了?
【问题:】//从板子上电--到-->某一个驱动被加载//
{BootLoader |OAL |注册表| 驱动DLL } 间大至是怎麽样的调用关系? 我看DNW上的打印信息,刚开是调用OAL里面的OEMinit(),之后就到了要开机加载的驱动的的打印信息了,这一步是怎么实现的?
-----------------------

最新回复

那些什么OAL,网上有很多说明,最好找些书看看。我就懒得打了。貌似我的博客有不少这些东西,以前我一边学习一边写博客的。看过代码什么都明白了,别人说的未必很深入。  详情 回复 发表于 2009-2-19 15:03
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
wince6.0和wince5.0的驱动差距不是很大。我看wince6.0的书,有一本。研华工程师吧,李大为出的。你找来看看。

至于什么OAL都很清楚,网上也很多,这些和wince5.0基本一致。
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
device是系统进程,只要你选择的不是tiny core的,基本上都会有这个进程,这个你不用管它,系统会处理好一切。

注册表里那些描述设备的项,在系统系统的时候,会被查询,然后系统自动启动设备驱动。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢楼上两位
--------------
可是同样的驱动,代码没有做如何更改,注册表也是一样的,都是CE6.0下的,
只是CPU变了。   
{为什么一个可以开机加载,而另外一个却不可以呢?所以我才想:是不是从宿主进程读注册表信息到驱动的加载之间还有其它环节,而且在这些环节可能出现了问题?}
有没有可能是中断的处理出现问题?
----------------
现在没了思路,高人指下方向,我好做个研究!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
加载不成功,很可能是驱动XXX_Init函数的问题,这个函数在驱动加载时候执行。你在里面放点打印信息,看看死在哪里了。

我的4.2的驱动放到5.0要改动很多的。申请中断等等都有很大差别的。
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

6
 
不同的CPU那差得东西就多了,先看看驱动被加载了没有,如果是加载的过程中出错了,那慢慢改那些跟CPU相关的东西吧
如果没有加载,那就应该还是别的问题了
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
驱动是以DLL形式存在的,DLL的入口一般先是DllEntry(),(应该是这样把)
-----
我在这个里面放了打印信息,结果没有任何东西如来,那就可以说这个驱动是没有被加载喽?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 YZZ2086 的回复:
驱动是以DLL形式存在的,DLL的入口一般先是DllEntry(),(应该是这样把)
-----
我在这个里面放了打印信息,结果没有任何东西如来,那就可以说这个驱动是没有被加载喽?


没有加载啊。哈哈。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
《WINDOWS CE 工程实践完全解析》确实不错 李大为出品
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
我会买的谢谢 gooogleman  和menfolk_odon
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 gooogleman 的回复:
引用 6 楼 YZZ2086 的回复:
驱动是以DLL形式存在的,DLL的入口一般先是DllEntry(),(应该是这样把)
-----
我在这个里面放了打印信息,结果没有任何东西如来,那就可以说这个驱动是没有被加载喽?


没有加载啊。哈哈。


======================
既然这样问题一般处哪里?
从宿主进程读取注册表信息---到---->驱动被加载,之间还有那些环节?
我现在在研究中断,有没有可能是这个出现问题了
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

12
 
你的编译方法是否正确?——》查看nk.bin所在目录的platform.reg/bib文件是否是正常的——》使用命令行viewbin -t NK.bin 看是否有你的DLL?——》使用同步软件查看注册表,看有没有正常,最老土的方法是在 XXX_Init上加打印信息,如果没有,那么你的问题就慢慢解决吧。基本是以上几个步骤。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 
1、编译方法应该是没有问题的!刚开始都是BULID 后面只改BSP的话就是build current bsp AND SUBPROJECTS|||
2、.REG/.BIB 都是和成功的那个bsp是一样的!应该是没的问题的!
3、我用viewbin -t NK.bin 看了有我的DLL,
4、用远程注册表编辑器看我的驱动没有被加载!
5、打印信息我在DLLENTRY里面加了都没的!
--------------------------------------------------------
   这个问题还的找啊!
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

14
 
编译的时候点上 clean before build

你仔细点,机器一般不会错,只有人疏忽的。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
我的问题暂时得到解决了!
=会 在来告之~
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

16
 
我把我的驱动放在
HIVE BOOT SECTION~; END HIVE BOOT SECTION 之间
--------
驱动就可以正常加载了,我是HIVE类型的注册表
===============================

【继续发问:】
      从宿主进程读注册表信息到驱动的加载之间还有什么环节,OAL 在加载驱动、系统和设备间通信间等方面是什么作用?
       {是不是在完成最初的初始化后,在与设备间通信时就主要为?中断的操作? 比如网口:是不是当我每次重新设置过IP等配置后,系统都会根据IRQ返回一个SYSINTR,并根据该SYSINTR,设置一个事件,然后驱动扑捉到该事件,进行后续的处理?如果一切顺利我的设备就可以按目的工作了?}
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

17
 
你的问题,太多。

我从简了。这个ARM 跑wince上和裸奔很大不同就是多线程,多任务了。但是他的中断怎么处理还是和单片机,以及ARM裸奔是一样的。所以是一个道理。初始化好中断后,就等着硬件中断产生,产生后就用线程来处理。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

18
 
哈哈!
只不过是想把问题描述的清除的!
--------
要的不是答案,只是点一点,谢谢了! 有点思路也好搞些
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

19
 
那些什么OAL,网上有很多说明,最好找些书看看。我就懒得打了。貌似我的博客有不少这些东西,以前我一边学习一边写博客的。看过代码什么都明白了,别人说的未必很深入。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表