色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Linux操作系統和處理器實現串口通信系統的設計

電子設計 ? 來源:微計算機信息 ? 作者:劉智國,張海春 ? 2021-05-19 10:40 ? 次閱讀

1 S3C2410硬件平臺簡介

S3C2410是韓國三星公司生產的新一代高性能微處理器,它是基于ARM920T內核的16/32位RISC處理器.主要應用于嵌入式系統中。

S3C2410擁有強大的數據處理能力.又有著低成本.低功耗等優點.在各種手持及移動設備上的應用越來越廣泛,基于其平臺的程序功能也越來越復雜。于是,在其平臺上架構多線程的操作系統已成為越來越多系統設計者的訴求,本文介紹多線程在S3C2410上的具體實現過程。

2 系統結構分析

串行端口的本質功能足作為CPU和串行設備問的編碼轉換器,一般微機內都配有通信適配器,使計算機能夠與其他具有RS232C串口的計算機或設備進行通信。本系統主要目的是實現宿主機與目標機之間的近距離串行通信,采用的宿主機是Intel X86架構的Red Hat Linux 9.03環境PC機,而目標機是ARM架構的開發板。

本系統中目標機開發板的內核采用的是三星的S3C2410,該開發板采用核心板加底板的模式.核心板接口采用DIMM200標準連接器.工作非常可靠,可穩定運行在203 MHz的時鐘頻率下。其外設非常豐富.功能強大.完全可以滿足設計需要。串口線采用常用的RS 232C型接口模式。能實現計算機與開發板間的數據傳輸與控制。

3 系統硬件結構原理

串行通信可以在DOS或Windows環境下進行。可以用匯編或高級語言編寫通信程序,本文介紹如何在Linux操作系統下來實現串口間的通信。

在串口通信的實現過程中。要保證數據傳輸的可靠性和穩定性.其硬件設計是必不可少的,本文中選用S3C2410芯片作為核心器件。S3C2410芯片是SAMSUNG公司16/32位的RISC處理器。采用ARM920T內核,內部具有2個獨立的UART控制器以及分開的16 kB的指令Cache和16 kB數據Cache,每個控制器支持的最高波特率可達到230.4 kb/s。S3C2410芯片的這些特點,為實現在“nux操作系統下計算機與開發板問的串口通信提供了可靠的保證。基于S3C2410的嵌入式串口通信的硬件結構原理如圖1所示。

圖1 系統硬件結構原理圖

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

4 軟件實現

串口通信軟件的設計是系統成功運行的關鍵,如何保證通信的效率、可靠性、實時性以及節約系統的資源足設計者關心的問題,因此通信協議的定義、軟件外發的結構設計、程序開發工具的選擇在系統設計中極其重要。PC端串口通信程序的開發是基于Windows環境面向對象的設計方法,開發環境選用vc++,實現的方法有多種,對此作介紹的文獻也較多。在此不詳述。對于單片機端的串口通信程序,有文獻介紹基于匯編語言的程序框架,但基于分層結構的C語苦實現卻少有介紹。下面將具體介紹在Keil C51中,分層結構框架下串口全雙工通信程序的設計與實現。

4.1 通信協議口波特率

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

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

表1 通信協議示例

4.2 單片機通信軟件的分層設計

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

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

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

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

typedef struct Serial

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

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

void (*pfClose)(void); //串口關閉

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

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

void (*pfPutStr)(unsigned char *tmp_str, unsigned char tmp_len); //發送一串數

}Cserial;

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

typedef struct Fifo

{ unsigned char *m_buf;//定義緩沖區首地址

unsigned int m_bufsize;//定義緩沖區大小

unsigned int m_wp; //寫入數據

unsigned int m_rp; //讀出數據

)CFifo;

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

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

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

(3)應用層:完成對單片機系統初始化。包括串口驅動結構實體的初始化。然后按統一的串口驅動層接口對串口操作而不關心其物理實現方式,如波特率設置、串口開關、收發數據等,循環接收、處理串口的命令和數據.處理單片機的I/O 口操作等。以下為主應用程序基本架構.本爾例為系統接收串口數據后。直接返回主機。

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

void main(void)

{ EA=0;//禁止中斷

Uart_Init(); //串口初始化

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

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

//?其它初始化程序,

EA=l: //開放中斷

while(1){

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

}

//?其它循環檢測、處理程序

}

5 小結

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19312

    瀏覽量

    230034
  • Linux
    +關注

    關注

    87

    文章

    11312

    瀏覽量

    209702
  • 操作系統
    +關注

    關注

    37

    文章

    6838

    瀏覽量

    123380
收藏 人收藏

    評論

    相關推薦

    基于Linux等不同操作系統實現異構系統的設計

    通過該設計能夠確保裝有不同操作系統的各種服務能夠在本系統中正常工作,同時使用消息隊列實現系統模塊之間的
    發表于 01-16 09:17 ?2624次閱讀

    Linux與其他操作系統的區別

    上運行Linux和MS-DOS已很普遍,就發揮處理器功能來說,MS-DOS沒有完全實現x86處理器的功能,而Linux完全在
    發表于 09-13 10:12

    基于ARM920T平臺怎么移植Linux操作系統

    嵌入式Linux的一個熱點應用就是將Linux內核移植到一些典型的微控制和微處理器上,提供操作系統層面支持,以
    發表于 09-26 06:36

    匯聚式處理器Blackfin支持什么操作系統

    當今的嵌入式應用已經無處不在,全球每年生產數十億顆微處理器,其中大部分被廣泛應用于各類嵌入式系統,從消費電子、通信終端及系統設備、工業控制、汽車電子
    發表于 10-11 07:12

    MicroBlaze處理器的PetaLinux操作系統怎么移植?

    核,而如何針對特定的微處理器選擇合適的嵌入式操作系統是SOPC開發的難點之一。本文針對Xilinx公司的MicroBlaze軟核,介紹了PetaLinux嵌入式操作系統及其移植方法,研究了PetaLinux的相關配置和啟動方案。
    發表于 03-16 06:37

    VxWorks操作系統基于ARM處理器的中斷怎么處理

    本文通過基于S3C44B0X處理器VxWorks嵌入式操作系統的BSP移植,詳細分析了VxWorks操作系統基于ARM處理器的中斷處理方法。
    發表于 04-27 06:28

    嵌入式Linux操作系統

    ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標:(1)掌握主流嵌入式微處理器的結構與原理(初步定為arm9)(2)必須掌握一個嵌入式
    發表于 10-27 10:22

    linux操作系統只能在以arm為處理器的pc上運行嗎

    linux操作系統只能在以arm為處理器的pc上運行嗎?可以在英特爾的各種處理器上運行嗎?
    發表于 07-27 15:04

    嵌入式實時操作系統VxWorks中串口通信實現

    嵌入式實時操作系統VxWorks中串口通信實現
    發表于 03-29 12:27 ?19次下載

    Linux操作系統原理及應用

    Linux操作系統原理及應用 1.1  操作系統的地位 1.2  操作系統的功能 1.3  操作系統的發
    發表于 04-28 14:53 ?0次下載

    嵌入式VxWorks實時操作系統串口通信實現

    嵌入式VxWorks實時操作系統串口通信實現
    發表于 08-31 16:03 ?7次下載
    嵌入式VxWorks實時<b class='flag-5'>操作系統</b>中<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的<b class='flag-5'>實現</b>

    基于QNX操作系統下的Modbus串口通信設計

    基于QNX操作系統下的Modbus串口通信設計
    發表于 10-30 14:51 ?16次下載
    基于QNX<b class='flag-5'>操作系統</b>下的Modbus<b class='flag-5'>串口</b><b class='flag-5'>通信</b>設計

    基于Linux操作系統和S3C2410微處理器實現GPS實時導航系統的設計

    這里提出一種實用的設計方案,通過對系統的各方面配置,實現GPS實時導航功能。系統主控器件采用韓國Samsung公司生產的ARM核32位RISC微處理器S3C2410,并在由其組成的開發
    發表于 03-09 10:47 ?1088次閱讀
    基于<b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>和S3C2410微<b class='flag-5'>處理器</b><b class='flag-5'>實現</b>GPS實時導航<b class='flag-5'>系統</b>的設計

    基于S3C4510B微處理器操作系統實現網絡通信工程的編寫設計

    Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“針對微控制領域而設計的Linux系統”。它也是針對無MMU(內存管理單元模塊)的
    的頭像 發表于 10-04 17:37 ?1999次閱讀
    基于S3C4510B微<b class='flag-5'>處理器</b>和<b class='flag-5'>操作系統</b><b class='flag-5'>實現</b>網絡<b class='flag-5'>通信</b>工程的編寫設計

    Linux操作系統需要什么處理器

    單片機、Cortex-M、Linux它們和嵌入式有什么區別? 跑 Linux 操作系統需要什么處理器?ARM9、ARM11? Cortex-M比ARM9更新,為什么不能跑
    的頭像 發表于 09-23 11:10 ?6281次閱讀
    主站蜘蛛池模板: 99视频国产在线| 伦理片秋霞免费影院| 259luxu高跟黑色丝袜系列| 亚洲国产中文字幕在线视频 | 亚洲国产成人在线视频| 四虎影视国产精品亚洲精品| 秋霞电影网伦大理电影在线观看| 女性酥酥影院| 欧美美女性生活| 欧美亚洲精品真实在线| 欧美高清videos 360p| 男人的天堂色偷偷| 欧美成人亚洲高清在线观看| 免费在线亚洲视频| 欧美成人精品高清在线观看| 欧美黑人巨大videos免费| 求个av网站| 日韩毛片在线视频| 色噜噜噜噜亚洲第一| 伸进同桌奶罩里摸她胸作文| 久久免费看少妇高潮A片2012| 九九在线精品视频| 国产99久久| 国产高清美女一级a毛片久久w| 国产精品成人免费视频99| 国产精品欧美久久久久天天影视| 99亚洲精品| 超碰97人在线视频| 中文视频在线| 94色94色永久网站| 本庄优花aⅴ全部在线影片| 国产99RE在线观看69热| 国产免费啪嗒啪嗒视频看看| 哒哒哒影院在线观看免费高清| 动漫美女禁区| 国产亚洲精品久久综合阿香蕉| 娇小老少配xxxxx| 黄色天堂网| 毛片在线不卡| 日韩欧美精品有码在线播放免费| 无颜之月5集全免费看无删除|