日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
基于ARM處理器的HDLC通信的DMA實(shí)現(xiàn)
基于ARM處理器的HDLC通信的DMA實(shí)現(xiàn)
 更新時(shí)間:2008-8-16 21:11:01  點(diǎn)擊數(shù):18
【字體: 字體顏色

    摘要:以ARM7TDMI為內(nèi)核的Samsung公司S3C4510B網(wǎng)絡(luò)微控制器(Networking MCU)為基礎(chǔ),重點(diǎn)論述如何通過DMA(直接內(nèi)存訪問)方式實(shí)現(xiàn)HDLC通信。對(duì)軟件設(shè)計(jì)中緩沖描述符、DMA狀態(tài)配置和控制、ISR服務(wù)程序設(shè)計(jì)以及相關(guān)的硬件配置進(jìn)行詳細(xì)的描述,并討論如何編寫在操作系統(tǒng)下的驅(qū)動(dòng)程序。

    關(guān)鍵詞:HDLC 緩沖描述符 循環(huán)鏈表 中斷服務(wù)程序 DMA

目前在嵌入式產(chǎn)品開發(fā)設(shè)計(jì)中,通常是在OS(Operating System)廠商提供的BSP基礎(chǔ)上進(jìn)行開發(fā)工作;對(duì)于底層硬件的操作,程序設(shè)計(jì)人員很少關(guān)注或只是少量的修改。實(shí)際上很多產(chǎn)品,我們完全可以拋開操作系統(tǒng)的模式,避免不必要的系統(tǒng)開銷,而對(duì)底層的硬件直接進(jìn)行處理。這樣,可以節(jié)省資源提高利用率。當(dāng)然,這樣也會(huì)人為地增加系統(tǒng)開發(fā)設(shè)計(jì)的難度。但是從長(zhǎng)遠(yuǎn)的角度看,進(jìn)行這樣的設(shè)計(jì)思考還是非常必要的,F(xiàn)在一些產(chǎn)品的設(shè)計(jì)開發(fā)中,所缺少的實(shí)際上就是深入了解底層操作,這樣往往使我們丟失了創(chuàng)新的機(jī)會(huì)。

本文主要分析如何在硬件基礎(chǔ)上直接進(jìn)行程序設(shè)計(jì),介紹如何在底層進(jìn)行HDLC通信控制操作,以及如何處理數(shù)據(jù)結(jié)構(gòu)等方面的問題。對(duì)于進(jìn)行驅(qū)動(dòng)程序的設(shè)計(jì)以及進(jìn)行系統(tǒng)設(shè)計(jì),都提供了良好的借鑒。

1 S3C4510B以及HDLC模塊

S3C4510B是三星公司生產(chǎn)的以ARM(Advanced RISC Machines)16/32bits的RISC ARM7TDMI微處理器為內(nèi)核的一種網(wǎng)絡(luò)微控制器(NETMCU,Networking MCU),主要用于網(wǎng)絡(luò)產(chǎn)品(如MUB、Router、HomePNA、SOHO)的開發(fā)設(shè)計(jì)。這款MCU在ARM7TDMI處理器的基礎(chǔ)上,外加2個(gè)通道的HDLC控制器、I2C總線和2個(gè)通道串行接口、1個(gè)MAC控制模塊以及統(tǒng)一的MII界面,提供10MHz/100MHz以太網(wǎng)的自適應(yīng)連接。對(duì)于網(wǎng)絡(luò)產(chǎn)品的設(shè)計(jì)提供了靈活的支持。

在軟件開發(fā)設(shè)計(jì)方面,NetMCU使用的是ARM7TDMI處理器內(nèi)核,所以支持ARM的開發(fā)工具(如WindRiver的Tornado、ARM的ARMstd251等)都對(duì)其適用,方便用戶開發(fā)設(shè)計(jì),最大限度地獲得支持資源。

1.1 S3C4510B中的HDLC模塊

S3C4510B的HDLC(High-level Digital Link Controller)控制器擁有2個(gè)串行通道。HDLC模塊支持符合SDLC標(biāo)準(zhǔn)和HDLC標(biāo)準(zhǔn)的CPU/數(shù)據(jù)通道接口,包含2個(gè)DMA引警;支持使用對(duì)應(yīng)幀的緩沖區(qū)描述符結(jié)構(gòu),而且可以靈活地配置通道物理編碼模式(NRZ,FM,MAN),選擇本地或者外部時(shí)鐘;支持通過鎖相環(huán)路從接收數(shù)據(jù)流提取時(shí)鐘信號(hào)。使用的HDLC的幀結(jié)構(gòu)如表1所列。

表1 

開始標(biāo)志 地址域 控制域 信息域 幀校驗(yàn) 結(jié)束標(biāo)志
7EH 2/4 Bytes 1Byte 8 bit/Byte 16 bit CRC 7EH

圖1是S3C4510B HDLC控制器功能結(jié)構(gòu),主要包括總線仲裁單元、DMA控制器、8字的發(fā)送接收(Tx/Rx)FIFO、狀態(tài)/控制寄存器和物理收發(fā)器。總線總裁單元負(fù)責(zé)向CPU申請(qǐng)系統(tǒng)總線;DMA控制器使用緩沖描述符在無CPU干預(yù)下控制數(shù)據(jù)幀的收發(fā);8字(字=32bit)FIFO結(jié)構(gòu)對(duì)CPU和串行接口的數(shù)據(jù)進(jìn)行立即存儲(chǔ);物理收發(fā)器控制HDLC通道的運(yùn)行模式、編解碼等;狀態(tài)/控制寄存器是運(yùn)行的核心,程序設(shè)計(jì)人員通過設(shè)置,檢測(cè)這些寄存器控制數(shù)據(jù)的收發(fā)。

1.2 中斷模式和HDMA(HDLC DMA)模式

(1)中斷模式

HTxFIFO結(jié)構(gòu)通過把幀數(shù)據(jù)分別寫入“幀連續(xù)地址”和“幀結(jié)束地址”控制發(fā)送行為;接收時(shí),作為中斷響應(yīng),讀取HDLC狀態(tài)寄存器,如果RxFA=1,則可以由CPU從HRxFIFO結(jié)構(gòu)讀取數(shù)據(jù),直到最后一個(gè)Byte標(biāo)志設(shè)置。中斷模式下CPU去處理每一次數(shù)據(jù)的收發(fā)。對(duì)于一個(gè)長(zhǎng)幀的數(shù)據(jù),通常需要多次CPU進(jìn)行干擾去填寫(或讀取)FIFO,導(dǎo)致過多的系統(tǒng)處理開銷(overhead),占用CPU資源。如果在有多個(gè)外部中斷源的系統(tǒng)中,CPU利用效率十分低下。

(2)DMA模式

使用緩沖描述符BD(Buffer Descriptor)結(jié)構(gòu),可以實(shí)現(xiàn)以幀為單位對(duì)數(shù)據(jù)進(jìn)行接收和發(fā)送控制。程序設(shè)計(jì)人員只需要填寫相應(yīng)BD結(jié)構(gòu)的域信息,配置收發(fā)模式,具體的執(zhí)行細(xì)節(jié)交給DMA單元控制完成。CPU只是對(duì)每一幀進(jìn)行處理,這樣在一幀收發(fā)的過程中,系統(tǒng)可以去處理其它的任務(wù),有效地利用CPU資源。關(guān)鍵在于構(gòu)建BD循環(huán)鏈表。同時(shí)應(yīng)該注意,BD及其對(duì)應(yīng)的緩沖數(shù)據(jù)區(qū)必須放在系統(tǒng)存儲(chǔ)區(qū)的非緩存區(qū)(NonCache),這可以通過設(shè)置地址的第26位為1來實(shí)現(xiàn)。

1.3 緩沖描述符(BD)

緩沖描述符是S3C5410B使用的一種數(shù)據(jù)結(jié)構(gòu),通常構(gòu)成循環(huán)鏈表。HDMA引擎可以直接讀取結(jié)構(gòu)的信息,用戶通過填寫這些結(jié)構(gòu)中的域去控制HDMA的運(yùn)行行為。如圖2所示,每個(gè)BD包括4個(gè)域:

①數(shù)據(jù)緩存指針(data buffer pointer)。第31位標(biāo)識(shí)主權(quán)(ownership)關(guān)系,表示當(dāng)前的BD在DMA(1)控制器和CPU(0)之間的所屬關(guān)系,通常在發(fā)送和接收時(shí)要對(duì)其檢查。對(duì)于數(shù)據(jù)長(zhǎng)度,通常在發(fā)送時(shí)寫入BD的幀長(zhǎng)度域,DMA引擎會(huì)根據(jù)其發(fā)送相應(yīng)長(zhǎng)度的數(shù)據(jù)。接收數(shù)據(jù)長(zhǎng)度會(huì)自動(dòng)寫入這個(gè)域。

②保留域。發(fā)送BD(Tx),低8位表示發(fā)送控制(如前同步信號(hào)、CRC模式、BIG/LITTLE端選擇等);接收BD(Rx),保留未用。

③長(zhǎng)度域。發(fā)送BD,用戶寫入發(fā)送幀的數(shù)據(jù)長(zhǎng)度;接收BD,DMA控制器寫入接收幀的數(shù)據(jù)長(zhǎng)度。

④Next BD指針。指向下一個(gè)BD,收發(fā)BD各自構(gòu)成一組BD鏈。

HDMA控制器在使用過一個(gè)BD后,會(huì)自動(dòng)讀入下一個(gè)BD,裝入HDMA指針寄存器(HDMAXxPTR)。使用指針gpXxBDStart,指示當(dāng)前的可用BD位置。在設(shè)備中定義為全局變量(X表示T或R)。

1.4 重要的數(shù)據(jù)類型

BD結(jié)構(gòu)的定義如圖2所示。

typedef struct BD{

U32 BufferData Ptr;

//數(shù)據(jù)緩存區(qū)指針,其中第31位標(biāo)識(shí)BD的所有權(quán)

U32 Reserved;

//發(fā)送BD控制位,定義發(fā)送時(shí)操作的模式,接收BD保留

U32 StatusLength;

//運(yùn)行狀態(tài),在ISR中檢測(cè),也定義對(duì)應(yīng)的數(shù)據(jù)緩存區(qū)的長(zhǎng)度

struct BD *NextBD;

  • 上一篇: 1-wire網(wǎng)絡(luò)的電纜選擇與保護(hù)
  • 下一篇: SX系列通信控制器
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1