董純, 蔣方亮, 季啟政, 楊林鵬
(北京東方計量測試研究所,北京 100086)
在多串口應用中,使用多片ST16C2552為BF518擴展串口設備。在uClinux系統中,基于字符設備驅動模型[1]開發ST16C2552串口驅動程序存在以下不足:第一,字符設備驅動模型只提供最基本的和操作系統的接口,不實現任何通用邏輯,因此所有串口功能都需要編程實現,比如數據緩沖邏輯、阻塞邏輯和配置命令等,開發和測試成本高;第二,為每個串口設備單獨開發驅動,由于同型號芯片操作方式相同,會產生大量重復代碼,代碼復用性差且不支持擴展。采用uClinux平臺設備驅動技術和TTY終端設備驅動模型進行串口驅動程序開發,TTY終端設備驅動中已經實現了串口通用邏輯,因此只需對標準接口進行實現[2],就可以開發出功能完備的串口驅動程序,縮短了開發和測試周期。當硬件連接更多擴展芯片時,在系統中創建對應的平臺設備,就可以實現驅動程序的復用和擴展。
圖1描述了使用ST16C2552擴展串口設備的硬件連接方式。為了提高BF518異步總線[3]的擴展能力,使用CPLD對BF518異步總線的高位地址線(A16-A19)進行譯碼,產生多個片選信號。BF518通過CPLD連接了4片ST16C2552芯片,一片ST16C2552提供2個獨立串口,因此總共擴展出8個串口。為每個串口分配一個用來連接中斷信號線的GPIO。

圖1 BF518與ST16C2552硬件連接圖
平臺設備驅動架構包含總線、設備和驅動,總線自動完成設備和驅動的匹配工作[4]。使用平臺設備驅動技術可以隔離板級信息和驅動程序,在平臺設備信息中定義設備使用的資源、設備的具體配置信息,而在驅動中,使用標準API去獲取資源和信息,做到了板相關代碼和驅動代碼的分離,使驅動具有擴展性。……