[發(fā)明專利]ARM平臺(tái)LINUX系統(tǒng)下模擬多路全雙工串口的方法有效
| 申請(qǐng)?zhí)枺?/td> | 201210395689.3 | 申請(qǐng)日: | 2012-10-17 |
| 公開(公告)號(hào): | CN103268248A | 公開(公告)日: | 2013-08-28 |
| 發(fā)明(設(shè)計(jì))人: | 任賦;彭勇;鄭福第;黃達(dá)福 | 申請(qǐng)(專利權(quán))人: | 廈門雅迅網(wǎng)絡(luò)股份有限公司 |
| 主分類號(hào): | G06F9/455 | 分類號(hào): | G06F9/455 |
| 代理公司: | 深圳市博銳專利事務(wù)所 44275 | 代理人: | 張明 |
| 地址: | 361000 福建省廈*** | 國(guó)省代碼: | 福建;35 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | arm 平臺(tái) linux 系統(tǒng) 模擬 多路全 雙工 串口 方法 | ||
1.一種ARM平臺(tái)LINUX系統(tǒng)下模擬多路全雙工串口的方法,其特征在于:它包括,
快速中斷環(huán)境建立,包括步驟,
A)、使用靜態(tài)數(shù)組形式定義FIQ中斷棧空間;
B)、修改CPSR寄存器的值,切換系統(tǒng)模式進(jìn)入FIQ模式;
C)、將FIQ中斷棧空間的首地址賦值給FIQ的棧寄存器SP;
D)、系統(tǒng)退出FIQ模式;
E)、拷貝FIQ的中斷服務(wù)程序的跳轉(zhuǎn)指令至FIQ中斷向量的物理地址處;
F)、刷新系統(tǒng)快速緩沖貯存區(qū);
G)、開啟FIQ中斷;
模擬串口接口初始化,包括步驟,
A)、在系統(tǒng)的串口框架中注冊(cè)至少一個(gè)模擬串口接口,系統(tǒng)對(duì)應(yīng)每個(gè)模擬串口接口分配內(nèi)存空間作為發(fā)送環(huán)形緩沖區(qū);
B)、申請(qǐng)系統(tǒng)內(nèi)存空間作為接收環(huán)形緩沖區(qū),將接收環(huán)形緩沖區(qū)的首、尾指針指向系統(tǒng)分配內(nèi)存的頭部地址;
C)、申請(qǐng)系統(tǒng)內(nèi)存空間作為發(fā)送中斷次數(shù)寄存器、發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器和接收中斷次數(shù)寄存器、接收定時(shí)器中斷次數(shù)計(jì)數(shù)器;
D)、初始化作為串口收發(fā)的GPIO引腳,發(fā)送引腳TXD設(shè)置為GPIO輸出模式并置為高電平,接收引腳RXD設(shè)置為GPIO輸入模式;
E)、安裝系統(tǒng)的軟件定時(shí)器并根據(jù)模擬端口使用與否啟動(dòng)/關(guān)閉軟件定時(shí)器中斷;
F)、注冊(cè)硬件定時(shí)器的中斷服務(wù)程序的入口到FIQ中斷服務(wù)程序的地址,并根據(jù)模擬端口使用與否啟動(dòng)/關(guān)閉啟硬件定時(shí)器中斷。
2.如權(quán)利要求1所述的ARM平臺(tái)LINUX系統(tǒng)下模擬多路全雙工串口的方法,其特征在于:所述中斷環(huán)境建立中步驟A定義的FIQ中斷棧空間的大小不小于1K。
3.如權(quán)利要求1所述的ARM平臺(tái)LINUX系統(tǒng)下模擬多路全雙工串口的方法,其特征在于:所述串口接口初始化中的B的硬件定時(shí)器的中斷頻率為串口最高波特率的2-4倍。
4.如權(quán)利要求1所述的ARM平臺(tái)LINUX系統(tǒng)下模擬多路全雙工串口的方法,其特征在于:它還包括,模擬串口數(shù)據(jù)發(fā)送,包括步驟,
A)、當(dāng)無(wú)數(shù)據(jù)要發(fā)送時(shí),當(dāng)前串口的發(fā)送狀態(tài)為空閑;
B)、當(dāng)環(huán)形緩沖區(qū)中有待發(fā)送的數(shù)據(jù)時(shí),從環(huán)形緩沖區(qū)取出一個(gè)數(shù)據(jù),設(shè)置發(fā)送狀態(tài)為發(fā)送起始位,設(shè)置發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值為發(fā)送定時(shí)器中斷次數(shù)寄存器的值;
C)、在發(fā)送狀態(tài)為發(fā)送起始位下,發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值減0時(shí),拉低發(fā)送引腳的電平,啟動(dòng)發(fā)送起始位,并設(shè)置發(fā)送狀態(tài)為發(fā)送數(shù)據(jù)位,重置發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值為發(fā)送定時(shí)器中斷次數(shù)寄存器的值;
D)、在發(fā)送狀態(tài)為發(fā)送數(shù)據(jù)位下,發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值減0時(shí),取待發(fā)送數(shù)據(jù)的最低位,若為1則拉高發(fā)送引腳電平,若為0則拉低發(fā)送引腳的電平,如果整個(gè)字節(jié)的數(shù)據(jù)未發(fā)送完成,則把待發(fā)送的數(shù)據(jù)位右移一位;若整個(gè)字節(jié)的數(shù)據(jù)發(fā)送完成,則根據(jù)是否要發(fā)送奇偶校驗(yàn)位,設(shè)置發(fā)送狀態(tài)為發(fā)送奇偶校驗(yàn)位或則發(fā)送停止位,重置發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值為發(fā)送定時(shí)器中斷次數(shù)寄存器的值;
E)、在發(fā)送狀態(tài)為發(fā)送奇偶校驗(yàn)位下,發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值減0時(shí),根據(jù)奇偶校驗(yàn)位的值,拉高或則拉低發(fā)送引腳的電平,設(shè)置發(fā)送狀態(tài)為發(fā)送停止位,重置發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值為發(fā)送定時(shí)器中斷次數(shù)寄存器的值;
F)、在發(fā)送狀態(tài)為發(fā)送奇偶校驗(yàn)位下,發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值減0時(shí),根據(jù)奇偶校驗(yàn)位的值,拉高或拉低發(fā)送引腳的電平,設(shè)置發(fā)送狀態(tài)為發(fā)送停止位,重置發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值為發(fā)送定時(shí)器中斷次數(shù)寄存器的值;
G)、在發(fā)送狀態(tài)為發(fā)送停止位下,發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值減0時(shí),拉高發(fā)送引腳的電平,判斷發(fā)送環(huán)形緩沖區(qū)是否仍有待發(fā)送的數(shù)據(jù),如果有則取出下一個(gè)待發(fā)送的數(shù)據(jù),設(shè)置發(fā)送狀態(tài)為發(fā)送起始位,重置發(fā)送定時(shí)器中斷次數(shù)計(jì)數(shù)器的值為發(fā)送定時(shí)器中斷次數(shù)寄存器的值;如果沒有待發(fā)送的數(shù)據(jù)了,則設(shè)置發(fā)送狀態(tài)為空閑。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于廈門雅迅網(wǎng)絡(luò)股份有限公司,未經(jīng)廈門雅迅網(wǎng)絡(luò)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210395689.3/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- LINUX內(nèi)核動(dòng)態(tài)加載方法
- 一種Linux嵌入式系統(tǒng)的安全啟動(dòng)方法
- 一種加快嵌入式Linux系統(tǒng)啟動(dòng)的方法
- Linux文件系統(tǒng)的多點(diǎn)備份和實(shí)時(shí)保護(hù)方法
- 基于硬件的Linux軟件開發(fā)系統(tǒng)及其構(gòu)建方法
- 將VxWorks任務(wù)移植到Linux的方法及裝置
- 一種Linux內(nèi)核接管socket鏈接的方法和裝置
- 一種Linux系統(tǒng)的備份和還原方法
- 一種基于Linux系統(tǒng)盤的寫過(guò)濾系統(tǒng)和方法
- 一種基于Linux系統(tǒng)盤的熱插拔方法和系統(tǒng)





