1 嵌入式系統與ARM 嵌入式系統以應用為中心、以計算機技術為基礎。ARM(Advanced RSIC Machines)是一家出售芯片設計技術授權的公司,目前其設計的ARM微處理器占據了32位RISC(Reduced Instruction Set Computing)微處理器75%以上的市場份額。 2 ARM體系結構 ARM已經從V3發展到V6。目前流行的ARM芯片內核有ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM922T、ARM940T、ARM946T、ARM966T、ARM10TDMI等。Philips LPC2214(以下簡稱LPC2214) 是基于ARM7TDMI-S的高性能32位RISC微控制器,屬于V4T版本。 2.1 ARM處理器內核 現代的VLS技術把附加的系統部件與內核集成在同一芯片中。其中,內核是最為密集和復雜的部件,是確定一個新系統時選擇的關鍵。LPC2214的內核是ARM7TDMI(圖1)的可綜合版本(軟核)。字母意義分別是:T-高密度16位的Thumb指令擴展、D-支持片上調試、M-短時間64位乘法指令、I-EmbededICE觀察點硬件。 圖 1 2.2 ARM 微控制器 嵌入式微控制器(單片機)就是將整個計算機集成到一塊芯片中。各廠商購買ARM公司的核心授權后,擴展與各自領域相關的片內外圍電路,并集成在芯片中,使基于ARM處理器核的芯片多元化。設計者應盡可能采用片內外圍電路完成所需的功能,來簡化系統設計,提高系統可靠性。LPC2214微控制器(如圖2)通過AHB 到VPB 的橋將VPB總線與AHB 總線相連,片內外設(中斷控制器除外)連接在VPB總線上。LPC2214具有:多個串行接口,2 個16C550 工業標準UART、高速I2C 接口(400 kHz)、2 個SPI 接口;8路10 位A/D 轉換器(0~3V測量范圍),轉換時間可低至2.44uS;2個32 位定時器(帶4 路捕獲和4 路比較通道);PWM 單元(6 路輸出);實時時鐘和看門狗;112個通用I/O 口(可承受5V 電壓);2 個低功耗模式,空閑和掉電;片上集成高速閃存。 圖 2 稅控收款機是一種帶有計稅功能的電子收款機,它內部裝有自動記錄但不能更改和抹掉的計稅存儲器。稅控收款機由以下幾部分組成:中文顯示系統、中文打印系統、專用稅控處理系統、外圍設備驅動、電源、帶物理安全保證的機箱。稅控機制由以IC卡為基礎的發行、管理、申報、維護、經營等系統組成。有關數據由稅務部門用專用IC卡讀出,以便稽查。 此系統充分合理地利用了其片內實時時鐘、外部存儲器接口、UART等其它外設接口。片上閃存作為用戶程序的存儲空間,其高速零等待特性保證系統的實時運行。其片上程序保護機制,防止代碼被任意更改和復制。整個系統的設計結構簡潔,極具競爭優勢。 3 系統移植 ARM芯片獲得了許多實時操作系統(Real Time Operating System)供應商的支持,比較知名的有:Windows CE、Linux、pSOS、VxWorks Nucleus、OSE、eCOS、μC/OS-II等,我們將在稅控收款機系統上移植μC/OS-II。 3.1 μC/OS-II移植 LPC2214的ARM7TDMI-S內核用ARM ADS作為編譯器移植μC/OS-II。包括以下內容: ① 設置OS_CPU.H頭文件中與處理器和編譯器相關的代碼如:整數、浮點數、堆棧等數據類型定義,打開或者關閉中斷函數設置,定義堆棧增長方向,任務切換的執行代碼。 ② 用C語言在OS_CPU_C.C文件中編寫6個操作系統相關函數:任務堆棧初始化函數OSTaskStkInit( ),μC/OS-II在執行某些操作時調用的用戶函數:OSTaskCreateHook( )、OSTaskDelHook( )、OSTaskSwHook( )、OSTaskStatHook( )、OSTimeTickHook( ) ③ 在OS_CPU.ASM文件中用匯編語言編寫四個與處理器相關的函數:運行優先級最高的就緒任務OSStartHighRdy( )、任務級的任務切換函數OSCtxSw( )、中斷級的任務切換函數OSIntCtxSw( )、中斷服務函數OSTickISR( )。這里介紹的是通用方法,在具體的項目中還有很多工作要作。 3.2 建立完整的嵌入式實時系統 μC/OS-II提供的僅僅是一個任務調度的內核,要想實現一個以LPC2214為主控單元,應用于稅控收款機的嵌入式實時多任務操作系統,還需相當多的擴展工作。主要包括: ① 建立文件系統相關的API函數:如初始化文件函數InitOSFile( )、通過文件緩沖區讀寫數據函數ReadOSFile( )和WriteOSFile( )、打開和關閉文件函數OpenOSFile( )和CloseOSFile( )。 ② 為外部設備建立驅動程序并規范相應的API函數。外設驅動程序可以對系統提供訪問外圍設備接口,把操作系統和外圍設備分離開來。當外圍設備改變的時候,只需更換相應的驅動程序,不必修改操作系統的內核以及運行在操作系統的軟件。如:液晶驅動、鍵盤驅動、UART接口驅動等。 ③ 創建圖表用戶接口GUI函數,實現Unicode字庫的顯示及相關函數。 ④ 系統的消息隊列。消息相關函數在各個任務之間、用戶應用程序之間以及用戶應用程序和系統的各個任務之間通常是通過消息來傳遞信息和同步的。 ⑤ 稅控收款機軟件設計采用模塊化思想,其用戶程序的開發大體分為如下部分:主程序、自檢診斷模塊、IC卡讀寫模塊、UART通訊模塊、開票模塊、液晶顯示和按鍵等人機接口模塊。 圖 3 4 ARM體系中的調試 調試階段在整個系統開發過程中所占的比重越來越大,因此擁有高效、強大的調試系統可以大大減少開發時間,加快產品面市時間,減輕系統開發工作量。ARM體系結構包含了完善的調試手段,下面僅介紹基于JTAG的ICE類型調試的原理。 4.1 基于JTAG的ICE類型調試 基于JTAG的調試系統結構(圖4)包括:位于主機上的調試器、目標系統、主機和目標系統之間進行分析和轉換的模塊。JTAG調試是邊界掃描方式,LPC2214微核電路部件的每個I/O引腳包含一個電路元件,此元件的接口連接到JTAG二進制位移位寄存器上進行測試,這樣每個引腳都被JTAG采樣或監聽。ARM7TDMI(圖2)的TAP控制器通過JTAG接口控制各個硬件掃描鏈,掃描鏈0可以訪問所有外圍部件;掃描鏈1是掃描鏈0的一部分,它可以訪問數據總線和控制總線BREAKPT;掃描鏈2主要用于訪問Embedded ICE邏輯部件中的各寄存器。ARM7TDMI調試接口建立在IEEE1149-1190標準之上,該標準定義了訪問芯片的5個引腳串行通訊協議,可以通過5個引腳訪問芯片內部,從而可以進行調試和測試。JTAG調試過程: ① 設置程序斷點、數據斷點或相應外部請求,以便進入調試狀態; ② 當程序運行到斷點指令時,處理器進入調試狀態,此時斷點指令還沒執行; ③ 在調試狀態用戶執行所需的調試能,如停止目標程序執行、查看目標內核狀態、查看和修改存儲器的內容等。 圖 4 5.結束語 本文通過對嵌入式實時操作系統μC/OS-II中的關鍵技術及ARM體系組結構和調試的分析,結合LPC2214的硬件結構和運行環境,說明了μC/OS-II的移植、PLPC2214的應用和調試。 |