阅读:1316回复:8
在BSP包中加入了一个新驱动,启动kernel却不调用新的DLL??
原来的BSP包缺少硬盘的驱动,我最近刚写了一个加到里面,编译通过生成了DLL库。但是用生成的kernel启动系统,却没有进入新加的驱动里面,也就是没有调用新驱动的DLLEntry,也没调用HDD_Init()。不知道是哪里设置的有问题,基本是按照帮助做的,下面是部分注册表,bib文件和source信息。
在platform.h中添加如下: ;-------------------------------------------------- ; Entry for HDD driver ;-------------------------------------------------- IF BSP_HDD ; Entry for Hard Disk built-in driver [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HDDrv] "Dll"="hd_drv.dll" "Prefix"="HDD" "Index"=dword:2 "Order"=dword:1 "Format"=dword:1 "Profile"="HardDisk" "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}" ; Entries for file system over Hard Disk driver "DefaultFileSystem"="FATFS" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HardDisk] "FileSystem"="fatfsd.dll" "PartitionDriver"="mspart.dll" ; MountFlags 0x10 == shadow in \windows ; MountFlags 0x01 == hidden file system ; We are not using the above two "MountFlags"=dword:0 "AutoMount"=dword:1 "Folder"="Hard Disk" "AutoPart"=dword:1 "AutoFormat"=dword:1 "Name"="Hard Disk" [HKEY_LOCAL_MACHINE\System\StorageManager\FATFS] "EnableCache"=dword:1 ENDIF ; BSP_HDD 在platform.bib中添加: IF BSP_HDD hd_drv.dll $(_FLATRELEASEDIR)\hd.dll NK SH ENDIF BSP_HDD def file如下 EXPORTS DllEntry HDD_Close HDD_Deinit HDD_Init HDD_IOControl HDD_Open HDD_PowerDown HDD_PowerUp HDD_Read HDD_Seek HDD_Write 请帮我分析一下哪里出了问题,多谢~~~ |
|
沙发#
发布于:2007-09-13 21:36
除非BSP_HDD没有定义,
看不出有什么问题 |
|
板凳#
发布于:2007-09-13 22:01
会不会是HDD_Init返回了FLASE?
|
|
地板#
发布于:2007-09-14 10:01
用注册表编辑器或者查看器看看驱动的active项里面有没有你的驱动,没有的话再看看built-in里面有没有你的驱动项。
|
|
地下室#
发布于:2007-09-14 10:06
楼上说的是在系统启动之后,用CE版本的注册表编辑器?
我在HDD_Init里面加入了打印信息,如果进入了这个函数会在串口输出东西。 BSP_HDD也设置了,在.bat里面set BSP_HDD = 1 |
|
5楼#
发布于:2007-09-14 11:45
要有device manager的支持,不然不会调用
|
|
6楼#
发布于:2007-09-14 11:59
device manager是指在配置系统的时候添加的选项吧?
这个肯定已经加了,而且系统里还有其他的流设备驱动,都可以正常被系统调用。 |
|
7楼#
发布于:2007-09-15 18:12
编译出来的文件名是叫HD.DLL吗?
如果别的东西都是正常的,你看一下是不是index=2是不是该项去掉? 还有,你用的是什么版本? 看一下reginit.ini和CE.BIB中是不是都包含了相关的内容.. |
|
|
8楼#
发布于:2007-09-19 15:57
BSP_HDD 如果这个变量没有定义的话,也不会被加载
你可以试试这个BSP_HDD ! |
|