[發明專利]ARM平臺LINUX系統下模擬多路全雙工串口的方法有效
| 申請號: | 201210395689.3 | 申請日: | 2012-10-17 |
| 公開(公告)號: | CN103268248A | 公開(公告)日: | 2013-08-28 |
| 發明(設計)人: | 任賦;彭勇;鄭福第;黃達福 | 申請(專利權)人: | 廈門雅迅網絡股份有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 深圳市博銳專利事務所 44275 | 代理人: | 張明 |
| 地址: | 361000 福建省廈*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | arm 平臺 linux 系統 模擬 多路全 雙工 串口 方法 | ||
技術領域
本發明涉及ARM平臺下LINUX系統的應用領域,尤其是指一種ARM平臺LINUX系統下模擬多路全雙工串口的方法。
背景技術
目前,由于ARM的低功耗、高性能,易擴展,LINUX的開源和免費,ARM+LINUX平臺已經成為嵌入式領域最炙手可熱的配套平臺,雖然ARM平臺本身外設已經很豐富,但是在某些情況下,需要更多的串口來和各種外設進行通訊時,串口還是多不夠用。在此情況下通常有兩種方法來解決,
一、通過擴展芯片的方式來增加串口,但無疑擴展芯片會增加產品的成本;二、通過直接使用普通中斷(IRQ)來模擬串口,該方法簡易,直接,易于實現,但是缺點也是顯而易見的,由于LINUX的整個系統調度和互斥使用的都是IRQ中斷方式,在系統運行過程中關IRQ來達到互斥的地方隨處可見,這直接導致該方法實現的模擬串口效率低、誤碼率高、波特率上不去,更不要說模擬多路串口了。
發明內容
本發明的目的在于克服了上述缺陷,提供一種ARM平臺LINUX系統下模擬多路全雙工串口的方法。
本發明的目的是這樣實現的:
相比于常見的模擬串口方法,本發明的有益效果在于采用FIQ中斷作為串口模擬的中斷,使用FIQ中斷來收發數據,對于LINUX系統具有不可屏蔽性,具有非常高的實時性,在同等平臺軟件硬件條件下,杜絕了誤碼問題。提高了通訊波特率,增加了通訊穩定性。且整個方案是根據LINUX下UART驅動的框架建立的,從而可以保障在LINUX系統下的接口統一性,在使用中和普通串口的接口一樣,起始位、停止位、數據位、奇偶檢驗位,收發波特率可分別設置,收發全雙工,很是便利;在硬件資源上僅使用一個硬件定時器,增加多路串口只需增加兩個普通GPIO口,無需額外的硬件資源,可擴展性強。
附圖說明
下面結合附圖詳述本發明的具體結構
圖1為本發明的系統框架示意圖;
圖2為本發明的模擬串口數據發送流程圖;
圖3為本發明的模擬串口數據接收流程圖。
具體實施方式
為詳細說明本發明的技術內容、構造特征、所實現目的及效果,以下結合實施方式并配合附圖詳予說明。
本實施方式一種ARM平臺LINUX系統下模擬多路全雙工串口的方法,它包括:
快速中斷(FIQ)環境建立,包括步驟:
A)、使用靜態數組形式定義FIQ中斷棧空間;此處棧的大小根據中斷服務程序的實現本身而定,最佳的,中斷環境建立中的FIQ中斷棧空間的大小不小于1K,以免堆棧溢出。
B)、修改CPSR寄存器的值,切換系統模式進入FIQ模式;
C)、將FIQ中斷棧空間的首地址賦值給FIQ的棧寄存器SP;
D)、系統退出FIQ模式;
E)、拷貝FIQ的中斷服務程序的跳轉指令至FIQ中斷向量的物理地址處;
需要說明的是,中斷棧的設置時需要切換ARM處理器的模式為FIQ模式,在在設置好堆棧指針后,在切換回原來的系統模式。此外,由于ARM平臺中中斷向量只能容納一條指令,所以這里不能直接把完整的中斷處理程序拷貝至此處,只能拷貝一條跳轉指令,以跳轉到具體的FIQ中斷服務程序處。
再者,由于在LINUX系統中中斷環境的建立先于具體中斷處理程序的組織,此處必須先組織一級中斷處理模型,在中斷處理程序中先進行中斷現場的保護,然后跳轉到具體的中斷處理程序(如定時器中斷處理程序)執行、具體的中斷處理完畢后再進行中斷現場的恢復。
因此,此處最佳的中斷處理程序為三級,第一級為一條跳轉指令,對于高端向量拷貝到0xffff001c,對于低端向量拷貝到0x0000001c處;第二級為FIQ中斷處理程序,進行中斷現場的保護,執行具體的中斷服務程序,并最后恢復中斷現場;第三級為和FIQ掛鉤的具體的中斷處理程序——定時器中斷處理程序。其中第三級中斷處理程序是通過回調函數的方式注冊安裝的,可以動態注冊和去注冊。
F)、刷新系統快速緩沖貯存區(cache);
G)、開啟FIQ中斷;
上述中斷環境的建立要點在于:
1)、鑒于linux系統本身的特性,FIQ不使用系統虛擬內存。
2)、FIQ有自己的棧指針寄存器,使用前需要配置好對應的棧指針;對于滿遞減堆棧,棧指針初始化為占空間的末端,即A步驟定義的數組首地址加上數組的大小。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廈門雅迅網絡股份有限公司,未經廈門雅迅網絡股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210395689.3/2.html,轉載請聲明來源鉆瓜專利網。





