bawfgicfh
驱动牛犊
驱动牛犊
  • 注册日期2008-05-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望10点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1091回复:0

高手指点下我这样的设计思路对吗?

楼主#
更多 发布于:2008-08-16 16:10
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到映射了哪些东西?
游客

返回顶部