阅读:2370回复:15
关于光驱的问题(初次发问,解答有分送)
兄弟现在承担一个任务,开发平台是三星的SMDK2410,要求能在wince下实现对ide接口光驱的数据操作,现有的bsp包中不包含storage device的驱动,我通过BSP Customization 加了一个标准的ATAPI pci/ide block driver到bsp中,然后成功编译生成镜像,但是烧到硬件上,系统启动后没有找到光盘驱动器(我用的是电脑上的标准光驱,数据接口接在硬件板的ide接口上,电源用的外接),我想请问大家是否我的操作过程有什么不正确的地方。
|
|
论坛版主
|
沙发#
发布于:2004-08-20 13:36
看看有没有ide总线驱动,不知道ide是挂在什么总线上的?
|
|
板凳#
发布于:2004-08-20 15:47
是挂在从cpu连出来的16位的扩展总线,寄存器基地址是20000020
因为我用的是arm9的cpu是统一寻址空间的 |
|
论坛版主
|
地板#
发布于:2004-08-20 18:05
是cpu自己的总线?ide总线是怎么和cpu挂接的?好像缺了总线驱动
|
|
地下室#
发布于:2004-08-20 19:39
ide接口是通过一个cpld逻辑电路和cpu连在一起的,不过ide的控制寄存器的基地址被做到了20000020上
|
|
论坛版主
|
5楼#
发布于:2004-08-23 13:12
嗯,那么控制寄存器的访问os是没办法做的了,因为是你们自己定义的,os如何访问你的硬件呢?ce的只能提供平台无关的驱动,如果要用必须实现其底层接口。
我觉得这里的关键是需要有个东西告知os这个ide总线的存在,并在系统初始化的时候扫描总线以确定设备的存在,但是你的Ide总线的物理实现方式是cpld的扩展,那么这部分内容需要自己实现吧。 |
|
6楼#
发布于:2004-08-23 16:44
楼上的说得不错,我现在也意识到这个问题了,不过还是很困扰,不知道怎么样才能实现。搞不清应该是在系统初始化时通知,还是在驱动加载的时候通知。
|
|
论坛版主
|
7楼#
发布于:2004-08-24 12:57
在系统初始化的时候做可以有很大的自由度,在oeninit里面对你自定义寄存器的访问可以初始化硬件,但对于如何实现上层驱动的下层接口需要按ce的驱动模型来做了。对于和驱动框架相关的部分我觉得在os加载完其他驱动后来通告,也就是放到驱动初始化中。
|
|
论坛版主
|
8楼#
发布于:2004-08-26 13:31
我又想了一下,这个问题好像弄复杂了,也许配置一下注册表项,给出你自己定义的寄存器地址就行了,兄弟试试
|
|
9楼#
发布于:2004-08-26 17:00
呵呵,我试了一下,这是ce提供的atapi block driver的注册表项
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Atapi00] "Dll"="ATAPI.DLL" "Prefix"="XXX" "Ioctl"=dword:4 "DeviceId"=dword:2 "IOBaseAddress"=dword:1F0 "Interrupt"=dword:0E "FSD"="fatfs.dll" 然后我把IoBaseeaddress和Interrrupt都改成了我们自己硬件上设定的数值,不过状况依旧,而且发现系统创建开始加载驱动时,在加载atapi.dll之前先加载了pcibus.dll,可是我们的bsp里并没有做pci 的总线驱动,回头又看了看ce提供的atapi驱动,名称是 atapi pci/ide block driver,难道这个驱动是专门针对pci bus做的,如果用别的总线方式来接的话,这个驱动就不支持? |
|
论坛版主
|
10楼#
发布于:2004-08-27 14:26
嗯,有可能喔,可能它的ide总线是在pci总线上,你加atapi驱动他自己检查依赖关系加上了pci驱动,这样的话这个驱动就不能用了,兄弟研究一下:)
|
|
11楼#
发布于:2004-08-27 16:24
如果这样就太不幸了。。。。
可能要自己去做总线的驱动?兄弟知道那里有这方面的样例可以参考的吗? |
|
论坛版主
|
12楼#
发布于:2004-08-27 16:47
你看看pb带不带一些例子,总线驱动的例子倒是有pcibus.dll可以参考,但我觉得这个可能比较麻烦。对了你们做得板子ide控制器就是用cpld实现的?我看atapi pci/ide的名字好像又暗示可以实现ide controller的驱动后把atapi再加上去,我对atapi规范也不是很了解,你再找找吧,good luck
|
|
论坛版主
|
13楼#
发布于:2004-08-27 17:01
我对比了一下2k里面ide控制器的驱动,名字是atapi.sys,看样子ide控制器的驱动也在里面(ce下的atapi.dll),我老觉得是不是注册表设置改改就能用阿:)
|
|
14楼#
发布于:2004-08-27 17:40
是了啊。。。看来还有很长的路要走。。不管怎样,多谢你了,给分:)
|
|
15楼#
发布于:2004-10-31 14:56
这个问题就没有结论了吗?大家继续讨论嘛!
我觉得应该是在注册表里面设置。 |
|