阅读:1091回复:0
高手指点下我这样的设计思路对吗?
modem设计思路:开发环境:xp ddk + VC++6.0 + driverstudio3.1
芯片:cx11252 41z 对该芯片里的寄存器不了解,所以使用通用的异步通信收发器(UART)--这里是否可能这样作? COM1-COM4,其基地址在BIOS数据区0000:0400-0000:0406中描述,对应地址分别为3F8/2F8/3E8/2E8 偏移地址 读/写 寄存器缩写 注释 0 Write 发送保持寄存器(DLAB=0) 0 Read 接收数据寄存器(DLAB=0) 0 Read/Write 波特率低八位(DLAB=1) 1 Read/Write IER 中断允许寄存器 1 Read/Write 波特率高八位(DLAB=1) 2 Read IIR 中断标识寄存器 2 Write FCR FIFO控制寄存器 3 Read/Write LCR 线路控制寄存器 4 Read/Write MCR MODEM控制寄存器 5 Read LSR 线路状态寄存器 6 Read MSR MODEM状态寄存器 7 Read/Write Scratch Register 通过ds 自动生成框架,在startdevice中 映射I/0(如:名为iorange)在后面的编程中是不是就可以用iorange.outb(基地址:0x3f8+0,0x0c)来读写以上的所有寄存器, 当然这里指com1 ---这时映射的是所有的寄存器吗?如果不是那会映射哪几个寄存器 内存映射----这里映射了哪些寄存器,如I/O访问寄存器的方法一样吗? 中断初始化---这里是映射了中断标识寄存器,还是中断允许寄存器? 在startdevice中我只初始化的映射,对于设置波特率在应用程序里作处理应该可以吧? 在驱动的write,中作数据传输处理,如应用程序发了一条AT命令过来,ATZ我是不是可能用iorange.outb(..) 直接写入发送保持寄存器,modem会自动识别是命令状态,还是传输状态对吧(这里少写了好多状态判断,略) 在驱动的read。中是不是只要实现对接收数据寄存器的循环读取就可以了?(这里对各个状态寄存器的判断,略) 应用程序用异步read调用驱动 这里有一个问题是如果判断modem的接收数据寄存器有数据,可以在驱动中断中通知应用程序, 也可以应用程序自己判断接怍数据寄存器是否有数据对吗?(我这里通过应用程序来判断) 问:内存映射,映射I/0到映射了哪些东西? |
|