當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]S3C2410是韓國三星公司生產(chǎn)的新一代高性能微處理器,它是基于ARM920T內(nèi)核的16/32位RISC處理器.主要應(yīng)用于嵌入式系統(tǒng)中。

1 S3C2410硬件平臺簡介

S3C2410是韓國三星公司生產(chǎn)的新一代高性能微處理器,它是基于ARM920T內(nèi)核的16/32位RISC處理器.主要應(yīng)用于嵌入式系統(tǒng)中。

S3C2410擁有強大的數(shù)據(jù)處理能力.又有著低成本.低功耗等優(yōu)點.在各種手持及移動設(shè)備上的應(yīng)用越來越廣泛,基于其平臺的程序功能也越來越復(fù)雜。于是,在其平臺上架構(gòu)多線程的操作系統(tǒng)已成為越來越多系統(tǒng)設(shè)計者的訴求,本文介紹多線程在S3C2410上的具體實現(xiàn)過程。

2 系統(tǒng)結(jié)構(gòu)分析

串行端口的本質(zhì)功能足作為CPU和串行設(shè)備問的編碼轉(zhuǎn)換器,一般微機內(nèi)都配有通信適配器,使計算機能夠與其他具有RS232C串口的計算機或設(shè)備進行通信。本系統(tǒng)主要目的是實現(xiàn)宿主機與目標(biāo)機之間的近距離串行通信,采用的宿主機是Intel X86架構(gòu)的Red HatLinux9.03環(huán)境PC機,而目標(biāo)機是ARM架構(gòu)的開發(fā)板。

本系統(tǒng)中目標(biāo)機開發(fā)板的內(nèi)核采用的是三星的S3C2410,該開發(fā)板采用核心板加底板的模式.核心板接口采用DIMM200標(biāo)準(zhǔn)連接器.工作非??煽浚煞€(wěn)定運行在203 MHz的時鐘頻率下。其外設(shè)非常豐富.功能強大.完全可以滿足設(shè)計需要。串口線采用常用的RS 232C型接口模式。能實現(xiàn)計算機與開發(fā)板間的數(shù)據(jù)傳輸與控制。

3 系統(tǒng)硬件結(jié)構(gòu)原理

串行通信可以在DOS或Windows環(huán)境下進行??梢杂脜R編或高級語言編寫通信程序,本文介紹如何在Linux操作系統(tǒng)下來實現(xiàn)串口間的通信。

在串口通信的實現(xiàn)過程中。要保證數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性.其硬件設(shè)計是必不可少的,本文中選用S3C2410芯片作為核心器件。S3C2410芯片是SAMSUNG公司16/32位的RISC處理器。采用ARM920T內(nèi)核,內(nèi)部具有2個獨立的UART控制器以及分開的16 kB的指令Cache和16 kB數(shù)據(jù)Cache,每個控制器支持的最高波特率可達到230.4 kb/s。S3C2410芯片的這些特點,為實現(xiàn)在“nux操作系統(tǒng)下計算機與開發(fā)板問的串口通信提供了可靠的保證?;赟3C2410的嵌入式串口通信的硬件結(jié)構(gòu)原理如圖1所示。


基于S3C2410的GPRS無線終端設(shè)計

宿主機計算機系統(tǒng)中,在Linux操作系統(tǒng)下編寫好串口通信的程序.通過JTAG接口模塊下載至目標(biāo)機即開發(fā)板中,在相應(yīng)的軟件控制命令下.通過串行接口線即町實現(xiàn)宿主機與目標(biāo)機問數(shù)據(jù)的發(fā)送和接收。目標(biāo)機中電源模塊提供了開發(fā)板系統(tǒng)工作所需的正常電壓。各種數(shù)據(jù)信息町以通過液晶顯示模塊及時顯示出來.還可以通過鍵盤控制模塊來實現(xiàn)對日標(biāo)機操作的控制,外擴存儲器模塊町以由FLASH或SDRAM構(gòu)成,當(dāng)然作為一個完整的系統(tǒng).還必須配有其他外圍電路,以保證系統(tǒng)的正常工作。

4 軟件實現(xiàn)

串口通信軟件的設(shè)計是系統(tǒng)成功運行的關(guān)鍵,如何保證通信的效率、可靠性、實時性以及節(jié)約系統(tǒng)的資源足設(shè)計者關(guān)心的問題,因此通信協(xié)議的定義、軟件外發(fā)的結(jié)構(gòu)設(shè)計、程序開發(fā)工具的選擇在系統(tǒng)設(shè)計中極其重要。PC端串口通信程序的開發(fā)是基于Windows環(huán)境面向?qū)ο蟮脑O(shè)計方法,開發(fā)環(huán)境選用vc++,實現(xiàn)的方法有多種,對此作介紹的文獻也較多。在此不詳述。對于單片機端的串口通信程序,有文獻介紹基于匯編語言的程序框架,但基于分層結(jié)構(gòu)的C語苦實現(xiàn)卻少有介紹。下面將具體介紹在KeilC51中,分層結(jié)構(gòu)框架下串口全雙工通信程序的設(shè)計與實現(xiàn)。

4.1 通信協(xié)議口波特率

基于串I=1的通信模式有間步通信和異步通信兩種,這取采用的是異步串行通信。在通信過程中,單片機應(yīng)處理以下問題: (1)識別命令。PC機將命令傳送給單片機,單片機能夠識別不同的命令而且根據(jù)不同的命令內(nèi)容完成不同的操作。(2)識別數(shù)據(jù)。單片機能識別附加在命令后的數(shù)據(jù)。傳送數(shù)據(jù)的最大位數(shù)由設(shè)置的緩沖區(qū)大小決定。(3)出錯處理。包括識別無效命令和處理通信錯誤。當(dāng)啦片機接收到系統(tǒng)沒有定義過的命令.或者收到的命令不符合預(yù)先定義的格式時。它應(yīng)該做出響應(yīng).向系統(tǒng)報錯并能進行錯誤處理,錯誤類型編號應(yīng)事先定義。(4)正確應(yīng)答。當(dāng)單片機系統(tǒng)接收到一條沒有通信錯誤且符合通信協(xié)議的信息時,應(yīng)根據(jù)所接收的命令進行相應(yīng)操作,并把操作結(jié)果返回PC機.如發(fā)一個“OK”信息以示確認(rèn)。

PC機應(yīng)處理的問題:(1)采集單片機發(fā)送的數(shù)據(jù),如某設(shè)備模塊的狀態(tài)信息;(2)接收單片機的正常響應(yīng)和錯誤響應(yīng)信息,若足錯誤響應(yīng)信息,應(yīng)根據(jù)錯誤類型,以處理。由于控制的設(shè)備模塊可能有多個,通過對設(shè)備模塊統(tǒng)一編址,給不同的設(shè)備設(shè)置唯一的16位地址加以區(qū)分。這樣在PC機和單片機進行數(shù)據(jù)傳送時,雙方能夠識別數(shù)據(jù)的來源及需控制的對象。如表1所樂為通信協(xié)議格式示例.由PC機傳輸命令協(xié)議和單片機響應(yīng)協(xié)議組成。


基于S3C2410的GPRS無線終端設(shè)計

4.2 單片機通信軟件的分層設(shè)計

單片機系統(tǒng)的軟件開發(fā)環(huán)境為Keil C51。與匯編語言相比.C語言在結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢.更利于程序移植和擴展。串口通信程序采用分層結(jié)構(gòu)。即將程序按層次分為物理層、驅(qū)動層,應(yīng)用層,分層設(shè)計有以下優(yōu)點:(1)與主機通信的串口程序支持接收和發(fā)送并發(fā)處理(主動發(fā)送和被動查詢設(shè)備并存),利于提高通信效率及數(shù)據(jù)處琿的實時性。(2)當(dāng)單片

機只有一個串口而以串口通信方式控制的設(shè)備模塊有多個時。必需對串口擴展,為了簡化硬件則需用軟件實現(xiàn)模擬的串口。因此系統(tǒng)內(nèi)部應(yīng)有支持I/O口模擬串口操作的軟件實現(xiàn)。標(biāo)準(zhǔn)串I/O和模擬串口在物理實現(xiàn)上有區(qū)別,但采用統(tǒng)一的對外封裝,以提高程序的封裝性和模塊化祥度。(3)防止由于串口操作向在流程中獨占CPU資源.避免漏檢狀態(tài)信息等現(xiàn)象發(fā)生。

三層程序的主要功能及C語言實現(xiàn)如下所述:

(1)驅(qū)動層:也稱抽象層,在該層定義串口基本操作結(jié)構(gòu)。基于此結(jié)構(gòu)實現(xiàn)不同方式下的串口設(shè)計,包括中斷方式下的串口實現(xiàn)和I/O口模擬方式下的串口實現(xiàn)。雖然兩種方式的底層實現(xiàn)有所區(qū)別。但足驅(qū)動層屏蔽不同串口操作的物理細節(jié),簡化應(yīng)用層對串口的操作。串口的結(jié)構(gòu)定義如下:

typedef struct Serial

{ void (* pfSetBaudRate)(unsigned long baud_rate);//設(shè)置串口波特率

void (*pfOpen)(void); //串口打開

void (*pfClose)(void); //串口關(guān)閉

unsigned (*pfGetChar)(unsigned char *c); //從接收緩存中取一個數(shù)

void (*pfPutChar)(unsigned char c); //發(fā)送一個字節(jié)

void (*pfPutStr)(unsigned char *tmp_str, unsigned char tmp_len); //發(fā)送一串?dāng)?shù)

}Cserial;

(2)物理層:在該層針對不同的串口實體.完成不同的物理操作.如單片機串口初始化、I/O模擬串口方式下的定時器初始化、I/O中斷初始化等。其作用是給不同的串口操作模式提供支撐。針對標(biāo)準(zhǔn)全雙工串口和模擬串口兩類不同的物理實現(xiàn)方式.設(shè)計不同的串口實體(包含內(nèi)部執(zhí)行每類串口的底層操作及相關(guān)基本的外部初始化等操作),不同的實現(xiàn)方式,綁定不同的操作函數(shù)指針.指針指向不同的操作。兩種串口實體封裝成統(tǒng)一的串口基礎(chǔ)類,使程序具有更強的通用性和擴展性。在物理層采用循環(huán)FIFO雙緩沖隊列對接收和發(fā)送的數(shù)據(jù)進行緩存、讀取,緩沖區(qū)循環(huán)FIFO操作方式與中斷方式下接收和發(fā)送數(shù)據(jù)的結(jié)合使用,保證了數(shù)據(jù)處理的可靠性、實時性。,由于篇幅所限.下面只給出了緩沖區(qū)結(jié)構(gòu)和相關(guān)指針的聲明程序示例代碼:

typedef struct Fifo

{ unsigned char *m_buf;//定義緩沖區(qū)首地址

unsigned int m_bufsize;//定義緩沖區(qū)大小

unsigned int m_wp; //寫入數(shù)據(jù)

unsigned int m_rp; //讀出數(shù)據(jù)

)CFifo;

unsigned char(fFifoPush)(CFifo *me, unsigned char c);//數(shù)據(jù)入隊

unsigned char(fFifoPop)(CFifo *me);//數(shù)據(jù)出隊

void fFifolnit(CFifo *me, unsigned char * tmp_buf,unsigned int tmp_size);//初始化

(3)應(yīng)用層:完成對單片機系統(tǒng)初始化。包括串口驅(qū)動結(jié)構(gòu)實體的初始化。然后按統(tǒng)一的串口驅(qū)動層接口對串口操作而不關(guān)心其物理實現(xiàn)方式,如波特率設(shè)置、串口開關(guān)、收發(fā)數(shù)據(jù)等,循環(huán)接收、處理串口的命令和數(shù)據(jù).處理單片機的I/O 口操作等。以下為主應(yīng)用程序基本架構(gòu).本爾例為系統(tǒng)接收串口數(shù)據(jù)后。直接返回主機。

extern CSerial xdata mSerial; //在物理層,已聲明該串口實體

void main(void)

{ EA=0;//禁止中斷

Uart_Init(); //串口初始化

mSerial.pfSetBaudRate(9600);//設(shè)置波特率為9600bps

mSerial.pfOpen(); //打開串口

//?其它初始化程序,

EA=l: //開放中斷

while(1){

if(mSefial.pfGetchar(&i))mSerial.pfPutchar(i)

}

//?其它循環(huán)檢測、處理程序

}

5 小結(jié)

本文作者創(chuàng)新點足詳細地說明了基于S3C2410的嵌入式系統(tǒng)串口全雙工通信軟件分層設(shè)計的實現(xiàn),描述了單片機與PC機仝雙工串口通信的通信協(xié)議,以及存keil C51下的程序?qū)崿F(xiàn)。應(yīng)用征明.該方法可以極大地提高程序的封裝性和模塊化程度.增強了串口傳送數(shù)據(jù)時系統(tǒng)收發(fā)、處理數(shù)據(jù)的并發(fā)性和實時性.同時也提高了編程效率。該方法已成功應(yīng)用于安防監(jiān)控系統(tǒng)、I/O檢測模塊、安全模塊等系統(tǒng).運行結(jié)果良好。對于其它基于串口通信的智能設(shè)備控制.具有參考意義。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉