2440 5.0BSP增加三串口(作者:wogoyixikexie@gliet)
来源:互联网 发布:网络cos 参数 编辑:程序博客网 时间:2024/06/05 11:43
2440 5.0BSP增加三串口(作者:wogoyixikexie@gliet)
———————————————————————————————————————————————————————
以前很多老兄写的增加三串口的方法都是4.2BSP的,现在搞个5.0的BSP,发现好多东西不一样了,现在咱也来弄弄吧。
首先看BSP下的serial文件夹下的sources文件
- !if "$(BSP_NOSERIAL)" == "1"//其实根本没有定义BSP_NOSERIAL
- SKIPBUILD=1
- !endif
- WINCEOEM=1 //据说这个是说明要用到微软下的头文件
- TARGETNAME=serial_smdk2440
- TARGETTYPE=DYNLINK
- RELEASETYPE=PLATFORM //BSP下的驱动都这样个类型
- TARGETLIBS=$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /
- $(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib
- //MDD所在地方(微软实现,不能改动),从名字看出使用了哪个代码了
- //C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/SERIAL
- SOURCELIBS=$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/serpddcm.lib /
- $(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/com_mdd2.lib
- DEFFILE=serial.def
- DLLENTRY=DllEntry
- INCLUDES=$(_TARGETPLATROOT)/src/inc;//BSP下的头文件
- SOURCES= ser_smdk2440.cpp /
- pdds3c2440_ser.cpp
- //下面两个用来干什么的?
- #xref VIGUID {549CAC8D_8AF0_4789_9ACF_2BB92599470D}
- #xref VSGUID {0601CE65_BF4D_453A_966B_E20250AD2E8E}
——————————————————————————————————————————
下面来看看这个串口0(com1)的注册表
- ;=============== UART0 (physical COM1 connector P1) (Serial) ===============
- [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial]
- "DeviceArrayIndex"=dword:0
- "Irq"=dword:1c //#define IRQ_UART0 28(0x1c)
- "MemBase"=dword:50000000 //物理地址
- "MemLen"=dword:2C
- "InterruptBitsShift"=dword:0 ; UART 0 Interrupt Sub Register shift bit.
- "ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.
- "Prefix"="COM" //接口函数前缀
- "Index"=dword:1 //加载顺序
- "Dll"="serial_smdk2440.dll"
- "Order"=dword:0
- "Priority"=dword:0
- "Port"="COM1:"
- "DeviceType"=dword:0 //?
- "FriendlyName"=LOC_DISPLAYNAME_COM1
- "Tsp"="unimodem.dll"
- "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
- "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
现在来看看4.2BSP的uart0_com1注册表
——————————————————————————————————————————————————————
和上面对比,其实只有irq这个东西不同而已,从我前面的文章可以得出,这个是由于5.0BSP和4.2BSP中断架构不同的原因。
所以见怪不怪了。
现在来看4.2下是如何把红外占用的串口的注册表修改成我们所要的串口的。
.修改“/FILES/platform.bib”
用分号注释掉:
irsir.dll $(_FLATRELEASEDIR)/irsir.dll NK SH
————————————————————————————————————————————————————
中断等东西和uart0_com1的设置类似,加载顺序有变化(这个在驱动中有对应)
现在再来看看5.0BSP的红外串口注册表
- [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/IRDA2440]
- "DeviceArrayIndex"=dword:1
- "Irq"=dword:f //#define IRQ_UART2 15
- "MemBase"=dword:50008000
- "MemLen"=dword:2C
- "InterruptBitsShift"=dword:6 ; UART 2 Interrupt Sub Register shift bit.
- ;"ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.
- "Prefix"="COM"
- "Index"=dword:4
- "Dll"="serial_smdk2440.Dll"
- "Order"=dword:0
- "Priority"=dword:0
- "Port"="COM4:"
- "DeviceType"=dword:0 ; IRDA modem, 0 -> null modem
- "FriendlyName"=LOC_DISPLAYNAME_RAWIR
- "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
- "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
在注册表中,唯独没有出现UART1(#define IRQ_UART1 23),这是因为它被调试串口占用了,即使在驱动实现,会被调试信息干扰,必须任选一个功能才行。其实和4.2注册表也没有多大区别,只是IRQ值不一样而已。好吧,come on。
————由于5.0和4.2下有很多不同,我暂时停止修改,先把串口流程走一遍,再继续了........
- 2440 5.0BSP增加三串口(作者:wogoyixikexie@gliet)
- 2440 5.0BSP触摸屏驱动学习(作者:wogoyixikexie@gliet)
- SMDK2440A 5.0BSP之eboot流程(作者:wogoyixikexie@gliet)
- wince 5.0 .2440 5.0BSP的中断过程(作者:wogoyixikexie@gliet)
- 转:wince 5.0 .2440 5.0BSP的中断过程(作者:wogoyixikexie@gliet)
- wince 2440串口驱动PDD分析(作者:wogoyixikexie@gliet)
- 2440 外部串口驱动调试(作者:wogoyixikexie@gliet)
- wince串口之MDD分析(作者:wogoyixikexie@gliet)
- 开发板买来后如何练习写驱动、开发BSP?(作者:wogoyixikexie@gliet)
- MMU代码分析(作者:wogoyixikexie@gliet)
- 0UL是什么意思?(作者:wogoyixikexie@gliet)
- eboot中断学习(作者:wogoyixikexie@gliet)
- wince串口线程、中断等相关学习(作者:wogoyixikexie@gliet)
- wince串口线程、中断等相关学习(作者:wogoyixikexie@gliet)
- wince串口打印函数是如何实现的?(作者wogoyixikexie@gliet)
- 转---------------wince串口线程、中断等相关学习(作者:wogoyixikexie@gliet)
- 如何实现2440软件重启/software reset(作者:wogoyixikexie@gliet)
- 2008年年终总结(作者:wogoyixikexie@gliet)
- Java字符串总结
- Lesson 59 Is that all?就这些吗?
- 透析ICMP协议(五): 应用篇路由追踪
- 格州电子科技有限公司
- 抽象类和接口
- 2440 5.0BSP增加三串口(作者:wogoyixikexie@gliet)
- 截取一张图片中的部分区域存成新文件
- 计算机与编程
- 使用Ant编译出flex的swc文件
- 编写一个MPlayer的外壳
- c++中void应用
- Eclipse中常用快捷键
- 在Winform(C#)中使用Flash控件
- 一个内存池C++类的实现--转自裂帛一剑博客