关闭

3.3 基于OHCI的USB主机 —— OHCI(HCCA)

219人阅读 评论(0) 收藏 举报
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/238666
 
主机控制器通信区(HCCA)是一个256字节对齐的内存数据结构,被系统软件用于与HC进行通信,收发相关控制和状态信息。系统软件通过HcHCCA寄存器设置HCCA的地址到HC。该结构允许软件给HC的函数指明方向,而不需要从HC读取,除非不寻常的状况发生(例如发生错误)。通常与HC的交互可以通过读取HCCA结构的值或者写入HC操作寄存器来完成。
 
HC周期性的将HcDoneHead寄存器的值写入到内存HccaDoneHead,以便主机软件可以处理已完成的TD。通常HcDoneHead在每一帧的开始,并且中断延时计数器为0时完成数据更新。在HcDoneHead被写入到HccaDoneHead之后,HC设置HcDoneHead寄存器的值为0,并且设置HcInterruptStatus寄存器的WD位为1。在写完HccaDoneHead之后,HC可以开始建立新的已完成队列,但是新的队列只有在HCD清除了WDH位以后才可以进行。
 
在HC产生的中断上,HCD检查HccaDoneHead值。如果该值为0,则该中断不是HccaDoneHead更新所产生,而是需要访问HcInterruptStatus寄存器以确定正确的中断原因。如果HccaDoneHead非0,表明该中断是由于已完成队列产生,如果最低位的值非0,则表明同时还产生了中断,需要访问HcInterruptStatus寄存器,确定中断原因。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:299687次
    • 积分:4072
    • 等级:
    • 排名:第7858名
    • 原创:3篇
    • 转载:533篇
    • 译文:0篇
    • 评论:0条