论文部分内容阅读
嵌入式系统具有悠久历史,从上世纪60年代发展至今已取得长足的进展。特别是随着近些年移动互联网和物联网的兴起,嵌入式系统更是发展的如火如荼。aCoral正是由电子科技大学嵌入式实时计算实验室研发的一款支持实时和多核cpu的嵌入式操作系统。目前,aCoral系统已取得良好进展,已经支持多种cpu和外设以及丰富的基础软件如文件系统、tcp/ip协议等。嵌入式系统需要支持繁杂多变的外部设备,因而驱动程序作为支持设备正常工作的的必要程序也变得繁杂多样。这使得驱动变得难于管理和开发。同时由于驱动和系统内核紧密连接,驱动的不稳定增加了内核崩溃的风险。在aCoral发展到多平台扩展时也遇到这样的问题。驱动模型正是为了解决上述问题而提出的,通过内核和驱动间的解耦,降低内核崩溃危险,同时驱动模型定义了各种接口和管理模块,使得驱动变得易于开发和管理。aCoral系统正是在这样的背景下提出了自己的设备驱动模型。本文首先深入分析了主流操作系统RT_thread以及嵌入式操作系统RT_thread的驱动模型的设计理念和实现代码,找出了不同驱动模型的共同特性,分析了其中的优缺点。分析得出大部分驱动模型都是借鉴了软件工程领域的解耦特性,采用分层分类的思想,通过抽取出驱动共有的特性来作为系统中单独的一层,用来管理设备驱动以及作为系统和驱动之间的消息桥梁。这样各种驱动就不会冗杂在一起,使得设备驱动易于管理,同时增加了系统的稳定性。在具体实现中,各种不同系统还借鉴了面向对象的思想,通过父子继承的特性来管理各种总线以及设备之间的关系。本文借鉴了上述思想,针对于aCoral操作系统,选择性的吸收了其中的优点,并且根据aCoral系统自己的特点,实现了适合于其自身的驱动模型。为了验证驱动模型的有效性,同时也为aCoral操作系统添加usb功能支持,实现了usb ohci协议栈。首先阅读了usb协议栈,然后分析了RT_thread内核里usb协议的实现,理解了usb协议栈如何实现,然后实现了usb ohci协议。借助于aCoral里fat文件系统,成功实现了对u盘的支持。最后,将u盘插入系统对OHCI协议进行测试,系统能够正确识别u盘设备,能够正常完成u盘文件的读写。验证了OHCI协议以及驱动模型的正确性。