harney
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1316回复:8

在BSP包中加入了一个新驱动,启动kernel却不调用新的DLL??

楼主#
更多 发布于:2007-09-13 17:20
原来的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

请帮我分析一下哪里出了问题,多谢~~~
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-13 21:36
除非BSP_HDD没有定义,
看不出有什么问题
zizzfish
驱动牛犊
驱动牛犊
  • 注册日期2005-11-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望24点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-13 22:01
会不会是HDD_Init返回了FLASE?
buaadallas
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2007-10-18
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望47点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-14 10:01
用注册表编辑器或者查看器看看驱动的active项里面有没有你的驱动,没有的话再看看built-in里面有没有你的驱动项。
harney
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-14 10:06
楼上说的是在系统启动之后,用CE版本的注册表编辑器?

我在HDD_Init里面加入了打印信息,如果进入了这个函数会在串口输出东西。

BSP_HDD也设置了,在.bat里面set BSP_HDD = 1
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-14 11:45
要有device manager的支持,不然不会调用
harney
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-09-14 11:59
device manager是指在配置系统的时候添加的选项吧?
这个肯定已经加了,而且系统里还有其他的流设备驱动,都可以正常被系统调用。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-09-15 18:12
编译出来的文件名是叫HD.DLL吗?

如果别的东西都是正常的,你看一下是不是index=2是不是该项去掉?
还有,你用的是什么版本?
看一下reginit.ini和CE.BIB中是不是都包含了相关的内容..
学海无涯
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-09-19 15:57
BSP_HDD 如果这个变量没有定义的话,也不会被加载
你可以试试这个BSP_HDD !
游客

返回顶部