阅读:1914回复:11
PXA255 串口驱动
我使用Xscale PXA255的开发板,目前正在对串口进行调试。
开发板上共有三个异步串口,一个用作调试串口,一个是蓝牙串口BTUART,一个是全功能串口FFUART。 调试串口没有问题,蓝牙串口也能驱动起来,起来后为COM1,而全功能串口FFUART无论如何也加载不成功,从串口驱动来看,BTUART和FFUART的驱动为同一个Dll,即xsc1bd_serial.Dll。其中BTUART的IoBase为a6400000,而FFUART的IoBase为a6300000 BTUART的注册表设置如下: [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial] "Dll"="xsc1bd_serial.Dll" "IoBase"=dword:a6400000 ;BTUART_BASE_U_VIRTUAL "IoLen"=dword:24 "Irq"=dword:0 ;21 - Dummy value. This subkey is not really used by the driver. "Tsp"="Unimodem.dll" "DeviceArrayIndex"=dword:2 "Prefix"="COM" "Order"=dword:0 ;"Index"=dword:4 ;"Priority256"=dword:67 ; Using default priority value "DeviceType"=dword:0 "FriendlyName"=LOC_DISPLAYNAME_SERIAL ; Eliminate flow control bit "DevConfig"=hex: 10,00,00,00,05,00,00,00,10,01,00,00,00,4B,00,00,00,00,08,00,00,00,00,00,00 根据BTUART的注册表设置,我添加FFUART的注册表设置如下: [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial] "Dll"="xsc1bd_serial.Dll" "IoBase"=dword:a6300000 ;FFUART_BASE_U_VIRTUAL "IoLen"=dword:24 "Irq"=dword:0 ;21 - Dummy value. This subkey is not really used by the driver. "Tsp"="Unimodem.dll" "DeviceArrayIndex"=dword:2 "Prefix"="COM" "Order"=dword:0 ;"Index"=dword:4 ;"Priority256"=dword:67 ; Using default priority value "DeviceType"=dword:0 "FriendlyName"=LOC_DISPLAYNAME_SERIAL ; Eliminate flow control bit "DevConfig"=hex: 10,00,00,00,05,00,00,00,10,01,00,00,00,4B,00,00,00,00,08,00,00,00,00,00,00 但FFUART的驱动总是加载不成功,请高手给分析一下原因! 谢谢 |
|
沙发#
发布于:2005-01-25 16:17
"DeviceArrayIndex"=dword:2
这玩意能一样吗?仔细看看串口驱动pdd文件的最后一个函数! |
|
论坛版主
|
板凳#
发布于:2005-01-25 16:53
你把两个设备的注册表都放到:[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\Serial]里面?分开三,一个叫SERIAL1另外一个SERIAL2三
|
|
地板#
发布于:2005-01-25 17:47
厉害
|
|
地下室#
发布于:2005-01-25 17:54
"DeviceArrayIndex"=dword:2
这玩意能一样吗?仔细看看串口驱动pdd文件的最后一个函数! 同意ZIYUN的意见.:) 我看也是这里的问题.你看看帮助中各值是什么意思,就明白这里该怎么设置了. |
|
5楼#
发布于:2005-01-25 18:12
这些值不是能在帮助中看就能得到的
|
|
6楼#
发布于:2005-01-25 19:02
"DeviceArrayIndex"=dword:2 (1)这两处的DeviceArrayIndex的值不应该相同的,你可以在 pb查看相应的主题,查DeviceArrayIndex即可,里面有的。 (2)wxl_50685330大哥说的对,你怎么能把把两个设备的注册表项放在一起啊?分开放才对。 |
|
|
7楼#
发布于:2005-01-25 19:39
谢谢各位。 FFAURT的注册表是从BTUART的注册表拷贝下来的,忘了改那两处,在实际测试过程中,我已经将这两处改为了: [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial1 "DeviceArrayIndex"=dword:3 但还是加载不成功!请高手再给分析一下! |
|
8楼#
发布于:2005-01-25 20:14
你的驱动中能设断点吗?跟进去看看?
|
|
|
9楼#
发布于:2005-01-26 11:58
PHWOBJ GetSerialObject(DWORD DeviceArrayIndex)
{ //FFUART's DeviceArrayIndex is zero in the registry. if (0 == DeviceArrayIndex) return(&SerObj1); //STUART's DeviceArrayIndex is four in the registry else if ( 4 == DeviceArrayIndex) return (&IRObj1); //External modem else if ( 1 == DeviceArrayIndex) return (&SerCardObj); //BTUART's DeviceArrayIndex is two in the registry. if (2 == DeviceArrayIndex) return(&SerObj2); else return(NULL); } 你看看=3返回什么?? |
|
10楼#
发布于:2005-01-26 18:10
问题解决了,谢谢!
|
|
11楼#
发布于:2005-01-27 08:45
厉害:))
|
|
|