<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM控制器LPC2214的嵌入式系統(tǒng)研究與開發(fā)

          基于ARM控制器LPC2214的嵌入式系統(tǒng)研究與開發(fā)

          ——
          作者: 時間:2005-08-15 來源:電子產(chǎn)品世界 收藏

          基于ARM控制器LPC2214的系統(tǒng)研究與開發(fā)

          張勝茂

          (華東師范大學(xué)軟件學(xué)院 上海 200062)

          摘 要:本文首先分析了ARM體系結(jié)構(gòu),重點(diǎn)介紹了LPC2214的組成并舉了應(yīng)用實(shí)例,然后分析了μC/OS-II的移植,最后說明了LPC2214的調(diào)試。

          關(guān)鍵詞:ARM;μC/OS-II;系統(tǒng);LPC2214

          Researching and Exploiting Embedded System Based on ARM Controller LPC2214

          本文于2005年3月9日收到。張勝茂:碩士生,主要研究方向:系統(tǒng)研究與開發(fā)。

          1  嵌入式系統(tǒng)與ARM

            嵌入式系統(tǒng)以應(yīng)用為中心、以計算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。

            ARM(Advanced RSIC Machines)是一家出售芯片設(shè)計技術(shù)授權(quán)的公司,目前其設(shè)計的ARM微處理器占據(jù)了32位RISC(Reduced Instruction Set Computing)微處理器75%以上的市場份額。

          2  ARM體系結(jié)構(gòu)

            ARM已經(jīng)從V3發(fā)展到V6。目前流行的ARM芯片內(nèi)核有ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM922T、ARM940T、ARM946T、ARM966T、ARM10TDMI等。Philips LPC2214(以下簡稱LPC2214) 是基于ARM7TDMI-S的高性能32位RISC微控制器,屬于V4T版本。

          2.1  ARM處理器內(nèi)核

            現(xiàn)代的VLS技術(shù)把附加的系統(tǒng)部件與內(nèi)核集成在同一芯片中。其中,內(nèi)核是最為密集和復(fù)雜的部件,是確定一個新系統(tǒng)時選擇的關(guān)鍵。LPC2214的內(nèi)核是ARM7TDMI(圖1)的可綜合版本(軟核)。字母意義分別是:T-高密度16位的Thumb指令擴(kuò)展、D-支持片上調(diào)試、M-短時間64位乘法指令、I-EmbededICE觀察點(diǎn)硬件。

          2.2  ARM 微控制器

            嵌入式微控制器(單片機(jī))就是將整個計算機(jī)集成到一塊芯片中。各廠商購買ARM公司的核心授權(quán)后,擴(kuò)展與各自領(lǐng)域相關(guān)的片內(nèi)外圍電路,并集成在芯片中,使基于ARM處理器核的芯片多元化。設(shè)計者應(yīng)盡可能采用片內(nèi)外圍電路完成所需的功能,來簡化系統(tǒng)設(shè)計,提高系統(tǒng)可靠性。LPC2214微控制器(如圖2)通過AHB 到VPB 的橋?qū)PB總線與AHB 總線相連,片內(nèi)外設(shè)(中斷控制器除外)連接在VPB總線上。LPC2214具有:多個串行接口,2 個16C550 工業(yè)標(biāo)準(zhǔn)UART、高速I2C 接口(400 kHz)、2 個SPI 接口;8路10 位A/D 轉(zhuǎn)換器(0~3V測量范圍),轉(zhuǎn)換時間可低至2.44uS;2個32 位定時器(帶4 路捕獲和4 路比較通道);PWM 單元(6 路輸出);實(shí)時時鐘和看門狗;112個通用I/O 口(可承受5V 電壓);2 個低功耗模式,空閑和掉電;片上集成高速閃存。

            稅控收款機(jī)是一種帶有計稅功能的電子收款機(jī),它內(nèi)部裝有自動記錄但不能更改和抹掉的計稅存儲器。稅控收款機(jī)由以下幾部分組成:中文顯示系統(tǒng)、中文打印系統(tǒng)、專用稅控處理系統(tǒng)、外圍設(shè)備驅(qū)動、電源、帶物理安全保證的機(jī)箱。稅控機(jī)制由以IC卡為基礎(chǔ)的發(fā)行、管理、申報、維護(hù)、經(jīng)營等系統(tǒng)組成。有關(guān)數(shù)據(jù)由稅務(wù)部門用專用IC卡讀出,以便稽查。

            此系統(tǒng)充分合理地利用了其片內(nèi)實(shí)時時鐘、外部存儲器接口、UART等其它外設(shè)接口。片上閃存作為用戶程序的存儲空間,其高速零等待特性保證系統(tǒng)的實(shí)時運(yùn)行。其片上程序保護(hù)機(jī)制,防止代碼被任意更改和復(fù)制。整個系統(tǒng)的設(shè)計結(jié)構(gòu)簡潔,極具競爭優(yōu)勢。

          3  系統(tǒng)移植

            ARM芯片獲得了許多實(shí)時操作系統(tǒng)(Real Time Operating System)供應(yīng)商的支持,比較知名的有:Windows CE、Linux、pSOS、VxWorks Nucleus、OSE、eCOS、μC/OS-II等,我們將在稅控收款機(jī)系統(tǒng)上移植μC/OS-II。

          3.1  μC/OS-II移植

            LPC2214的ARM7TDMI-S內(nèi)核用ARM ADS作為編譯器移植μC/OS-II。包括以下內(nèi)容:①設(shè)置OS_CPU.H頭文件中與處理器和編譯器相關(guān)的代碼如:整數(shù)、浮點(diǎn)數(shù)、堆棧等數(shù)據(jù)類型定義,打開或者關(guān)閉中斷函數(shù)設(shè)置,定義堆棧增長方向,任務(wù)切換的執(zhí)行代碼。②用C語言在OS_CPU_C.C文件中編寫6個操作系統(tǒng)相關(guān)函數(shù):任務(wù)堆棧初始化函數(shù)OSTaskStkInit( ),μC/OS-II在執(zhí)行某些操作時調(diào)用的用戶函數(shù):OSTaskCreateHook( )、OSTaskDelHook( )、OSTaskSwHook( )、OSTaskStatHook( )、OSTimeTickHook( )③在OS_CPU.ASM文件中用匯編語言編寫四個與處理器相關(guān)的函數(shù):運(yùn)行優(yōu)先級最高的就緒任務(wù)OSStartHighRdy( )、任務(wù)級的任務(wù)切換函數(shù)OSCtxSw( )、中斷級的任務(wù)切換函數(shù)OSIntCtxSw( )、中斷服務(wù)函數(shù)OSTickISR( )。這里介紹的是通用方法,在具體的項目中還有很多工作要作。

          3.2  建立完整的嵌入式實(shí)時系統(tǒng)

            μC/OS-II提供的僅僅是一個任務(wù)調(diào)度的內(nèi)核,要想實(shí)現(xiàn)一個以LPC2214為主控單元,應(yīng)用于稅控收款機(jī)的嵌入式實(shí)時多任務(wù)操作系統(tǒng),還需相當(dāng)多的擴(kuò)展工作。主要包括:

            ①建立文件系統(tǒng)相關(guān)的API函數(shù):如初始化文件函數(shù)InitOSFile( )、通過文件緩沖區(qū)讀寫數(shù)據(jù)函數(shù)ReadOSFile( )和WriteOSFile( )、打開和關(guān)閉文件函數(shù)OpenOSFile( )和CloseOSFile( )。

           ?、跒橥獠吭O(shè)備建立驅(qū)動程序并規(guī)范相應(yīng)的API函數(shù)。外設(shè)驅(qū)動程序可以對系統(tǒng)提供訪問外圍設(shè)備接口,把操作系統(tǒng)和外圍設(shè)備分離開來。當(dāng)外圍設(shè)備改變的時候,只需更換相應(yīng)的驅(qū)動程序,不必修改操作系統(tǒng)的內(nèi)核以及運(yùn)行在操作系統(tǒng)的軟件。如:液晶驅(qū)動、鍵盤驅(qū)動、UART接口驅(qū)動等。

            ③創(chuàng)建圖表用戶接口GUI函數(shù),實(shí)現(xiàn)Unicode字庫的顯示及相關(guān)函數(shù)。

           ?、芟到y(tǒng)的消息隊列。消息相關(guān)函數(shù)在各個任務(wù)之間、用戶應(yīng)用程序之間以及用戶應(yīng)用程序和系統(tǒng)的各個任務(wù)之間通常是通過消息來傳遞信息和同步的。

           ?、荻惪厥湛顧C(jī)軟件設(shè)計采用模塊化思想,其用戶程序的開發(fā)大體分為如下部分:主程序、自檢診斷模塊、IC卡讀寫模塊、UART通訊模塊、開票模塊、液晶顯示和按鍵等人機(jī)接口模塊。

          4 ARM體系中的調(diào)試

            調(diào)試階段在整個系統(tǒng)開發(fā)過程中所占的比重越來越大,因此擁有高效、強(qiáng)大的調(diào)試系統(tǒng)可以大大減少開發(fā)時間,加快產(chǎn)品面市時間,減輕系統(tǒng)開發(fā)工作量。ARM體系結(jié)構(gòu)包含了完善的調(diào)試手段,下面僅介紹基于JTAG的ICE類型調(diào)試的原理。

          4.1 基于JTAG的ICE類型調(diào)試

            基于JTAG的調(diào)試系統(tǒng)結(jié)構(gòu)(圖4)包括:位于主機(jī)上的調(diào)試器、目標(biāo)系統(tǒng)、主機(jī)和目標(biāo)系統(tǒng)之間進(jìn)行分析和轉(zhuǎn)換的模塊。JTAG調(diào)試是邊界掃描方式,LPC2214微核電路部件的每個I/O引腳包含一個電路元件,此元件的接口連接到JTAG二進(jìn)制位移位寄存器上進(jìn)行測試,這樣每個引腳都被JTAG采樣或監(jiān)聽。ARM7TDMI(圖2)的TAP控制器通過JTAG接口控制各個硬件掃描鏈,掃描鏈0可以訪問所有外圍部件;掃描鏈1是掃描鏈0的一部分,它可以訪問數(shù)據(jù)總線和控制總線BREAKPT;掃描鏈2主要用于訪問Embedded ICE邏輯部件中的各寄存器。ARM7TDMI調(diào)試接口建立在IEEE1149-1190標(biāo)準(zhǔn)之上,該標(biāo)準(zhǔn)定義了訪問芯片的5個引腳串行通訊協(xié)議,可以通過5個引腳訪問芯片內(nèi)部,從而可以進(jìn)行調(diào)試和測試。JTAG調(diào)試過程:①設(shè)置程序斷點(diǎn)、數(shù)據(jù)斷點(diǎn)或相應(yīng)外部請求,以便進(jìn)入調(diào)試狀態(tài);②當(dāng)程序運(yùn)行到斷點(diǎn)指令時,處理器進(jìn)入調(diào)試狀態(tài),此時斷點(diǎn)指令還沒執(zhí)行;③在調(diào)試狀態(tài)用戶執(zhí)行所需的調(diào)試能,如停止目標(biāo)程序執(zhí)行、查看目標(biāo)內(nèi)核狀態(tài)、查看和修改存儲器的內(nèi)容等。

          5.結(jié)束語

            本文通過對嵌入式實(shí)時操作系統(tǒng)μC/OS-II中的關(guān)鍵技術(shù)及ARM體系組結(jié)構(gòu)和調(diào)試的分析,結(jié)合LPC2214的硬件結(jié)構(gòu)和運(yùn)行環(huán)境,說明了μC/OS-II的移植、PLPC2214的應(yīng)用和調(diào)試。

          參考文獻(xiàn):

          1,Jean J. Labrosse 著,邵貝貝等譯,μC/OS-Ⅱ__源碼公開的嵌入式實(shí)時操作系統(tǒng).北京:中國電力出版社,2001.

          2,周立功 等編著,ARM微控制器基礎(chǔ)與實(shí)戰(zhàn).北京:北京航空航天大學(xué)出版社,2003-11.



          關(guān)鍵詞: 嵌入式 嵌入式

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();