新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM9微控制器LPC3180的軟硬件平臺設計

ARM9微控制器LPC3180的軟硬件平臺設計

——
作者:北京航空航天大學 柏俊杰 趙琦飛利浦半導體部 王朋朋 時間:2007-01-26 來源:《單片機與嵌入式系統(tǒng)應用》 收藏

嵌入式應用系統(tǒng)設計包括硬件平臺和軟件平臺兩部分。前者是以嵌入式微控制器/微處理器為核心的硬件系統(tǒng);后者則是圍繞嵌入式操作系統(tǒng)構建的軟件系統(tǒng)。兩者在設計上是密不可分的,并且需要在設計之間進行權衡優(yōu)化,根據實際應用進行外擴和裁剪。

本文引用地址:http://butianyuan.cn/article/21423.htm

基于arm926ejs內核的lpc3180內部集成了豐富的外設資源,為嵌入式系統(tǒng)構建提供了很大的設計空間。本文結合筆者開發(fā)lpc3180嵌入式平臺的實際經驗,將具體介紹該系統(tǒng)的實現(xiàn)、結構組成和實驗結果。

1 lpc3180芯片特性介紹

lpc3180是philips公司新推出的一款arm9微控制器。它采用90 nm工藝技術,片內集成arm9ejs處理器內核,具有高計算性能、低功耗的特性,這使得在很多對功耗敏感的嵌入式應用場合中仍能使用高性能的arm9微控制器。lpc3180內核正常工作電壓為1.2 v,在低功耗模式下可降至0.9 v;同時,lpc3180作為一款新型的32位微控制器,其新特性還包括:

◆ 片內集成向量浮點(vfp)協(xié)處理器。lpc3180的浮點運算單元有3條獨立的流水線,支持并行單精度或雙精度浮點加/減、乘/除以及乘累積運算,完全兼容ieee754標準,適用于高速浮點運算場合?! ?br>
◆ 片內集成usb otg控制模塊,同時支持與便攜usb主設備或usb外設相連,可用于與pda、讀卡器和打印機等設備直接相連,而無需pc機介入?! ?br>
◆ lpc3180采用多層的ahb總線系統(tǒng),為各個主模塊提供獨立的總線,包括cpu的指令總線和數(shù)據總線、2套dma控制器數(shù)據總線以及1套usb控制器數(shù)據總線。

lpc3180的內部架構如圖1

lpc3180的其他特性包括: 內部集成mlc/slcnand控制器、sdr/ddr sdram控制器、sd卡接口,uart、spi、i2c外圍通信模塊,以及高速/毫秒定時器、rtc、看門狗定時器、10位adc等其他功能模塊。

2 硬件平臺設計

以lpc3180為核心的硬件平臺設計框架如圖2所示。

(1) 存儲器系統(tǒng)

nand flash存儲器。通過lpc3180內部集成的mlc/slc nand控制器直接外接多級或單級nand flash器件。本系統(tǒng)選用st nand256r3a,其32 mb存儲空間可滿足存放系統(tǒng)引導程序、嵌入式操作系統(tǒng)內核和文件系統(tǒng)的大小要求。

sdram存儲器。系統(tǒng)選用2片16位micron sdram,并聯(lián)構建32位sdram存儲器系統(tǒng)。32 mb sdram空間,可滿足嵌入式操作系統(tǒng)以及上層應用程序的運行要求。

sd卡插槽。系統(tǒng)通過lpc3180內部集成的sd卡接口,提供sd卡插槽,可用于sd存儲卡外擴,作為外部存儲空間。

(2) 外圍通信接口

uart接口。lpc3180內部集成了標準uart模塊和高速uart模塊,符合550工業(yè)標準。系統(tǒng)外擴了uart1/7、uart2和uart5,用于實現(xiàn)基本的串行通信功能;同時,uart5可用于系統(tǒng)啟動時的外部程序下載。

usb接口。lpc3180內部集成了usb host、usb device以及usb otg控制器,通過外部usb收發(fā)模塊philips isp1301外擴usb host接口a、usb device接口b以及usb otg接口ab。

(3) 其他外圍模塊

系統(tǒng)通過i2c接口外擴了一個簡易的字符型lcd顯示模塊,用于應用程序運行結果顯示;同時,為了簡化硬件系統(tǒng)設計,系統(tǒng)的以太網模塊通過usb host接口a以軟件方式實現(xiàn)外擴。

3 系統(tǒng)關鍵模塊設計

3.1 nand flash存儲器模塊

lpc3180內部集成了mlc/slc nand控制器,通過外部引腳可直接外接多級或單級nand flash器件,如圖3所示。需要注意的是mlc和slc nand控制器通過引腳復用,使用相同的接口與nand flash相連,且同一時刻只允許開啟其中一個控制器,因此在系統(tǒng)上電后必須通過配置flash_ctrl寄存器選擇要使用的nand控制器。在閑置狀態(tài)時,也可通過寫寄存器關閉nand控制器,以降低功耗。nand flash存儲器模塊是整個系統(tǒng)主要的靜態(tài)數(shù)據存儲空間,用于存儲系統(tǒng)啟動過程中的加載程序,因此在lpc3180系統(tǒng)設計中是必不可少的。

3.2 usb接口模塊

lpc3180內部集成usb控制模塊,但不包括usb物理層,系統(tǒng)通過外接usb收發(fā)模塊isp1301實現(xiàn)usb的物理層接口。圖4是usb接口連接圖。lpc3180內部通過ahb從設備總線配置usb控制器,可工作在全速(12 mb/s)和低速(1.5 mb/s)兩種模式下。

4 軟件系統(tǒng)設計

軟件系統(tǒng)組成包括系統(tǒng)引導程序bootloader,嵌入式操作系統(tǒng)以及上層應用程序。其中bootloader是運行于操作系統(tǒng)之前的引導程序,主要任務是完成系統(tǒng)啟動之前必要的硬件初始化和操作系統(tǒng)加載;操作系統(tǒng)是整個嵌入式平臺的核心程序,主要功能是高效地管理和分配底層硬件資源,并為上層應用程序提供與硬件細節(jié)無關的系統(tǒng)調用接口。

軟件系統(tǒng)設計必須與硬件平臺緊密結合。lpc3180采用nand flash作為整個系統(tǒng)的程序存儲區(qū)域,在系統(tǒng)啟動時通過片上rom的bootstrap程序,從nand flash加載并執(zhí)行外部引導程序來實現(xiàn)整個系統(tǒng)的啟動步驟。因此,整個軟件系統(tǒng)采取了圖5所示的設計結構。

(1) 系統(tǒng)引導程序bootloader

由于啟動過程首先從片內的bootstrap程序開始,因此系統(tǒng)采取二級bootloader設計,包括第一級sibl和第二級u?boot。

其中sibl是bootstrap加載并執(zhí)行的第一個引導程序,在程序大小上受到bootstrap加載的限制,因此設計上盡量做到了小型化和功能專一。它除了完成最基本的硬件初始化以外,主要功能是實現(xiàn)其他程序(包括u?boot)從nand flash的加載,完成下一級bootloader運行之前的內存地址空間分布。

第二級bootloader采用功能強大的sourceforge開源軟件uboot。uboot的主要功能是完成嵌入式操作系統(tǒng)啟動前的底層硬件初始化,并為linux內核提供啟動參數(shù),最終引導操作系統(tǒng)linux內核啟動。另外,為了實現(xiàn)程序鏡像文件編程寫入nand flash,u?boot嵌入了一個nand子系統(tǒng),通過u?boot的用戶命令行實現(xiàn)對nand flash的讀/寫操作,可將程序鏡像寫入nand flash指定的地址空間。

(2) 嵌入式操作系統(tǒng)

lpc3180內部集成了arm926ejs處理器內核,帶存儲器管理單元mmu,支持多數(shù)主流嵌入式操作系統(tǒng)。系統(tǒng)通過編寫板級支持代碼,移植了linux2.6.10作為平臺操作系統(tǒng),利用穩(wěn)定的linux2.6內核實現(xiàn)任務調度、進程管理、內存管理等功能,同時,針對linux的可配置性,對內核進行裁剪和硬件驅動代碼添加,系統(tǒng)實現(xiàn)了一個小型但功能強大的內核程序,適應了嵌入式系統(tǒng)存儲資源相對緊缺的狀況。 5 系統(tǒng)啟動流程分析

由上面的軟件結構組成分析可知,整個系統(tǒng)啟動流程分為3個步驟:

① 系統(tǒng)上電后,首先從片上rom固化的bootstrap程序執(zhí)行。bootstrap用于完成外部引導程序下載并跳入執(zhí)行。bootstrap運行過程首先讀輸入引腳gpio_01。如果gpio_01置為高,則從nand flash下載程序引導系統(tǒng)啟動;如果置為低,則依次檢測usb接口和uart5接口,通過外部連接下載引導程序。系統(tǒng)通過設置gpio_io跳線來控制bootstrap啟動過程,本例將gpio_01置為高,從nand flash下載程序?! 、?系統(tǒng)啟動的第二階段是運行bootstrap下載的引導程序sibl。sibl完成系統(tǒng)必要的初始化后,從nand flash加載鏡像程序到指定的sdram空間。鏡像程序在起始位置添加了64字節(jié)的頭信息,用于sibl識別和加載,頭信息數(shù)據結構如下:

struct image_header {  uint32_tih_magic;/*鏡像頭信息同步字,sibl通過該字識別程序*/  uint32_tih_hcrc;/*鏡像頭信息crc校驗碼*/  uint32_tih_time;/*存儲鏡像創(chuàng)建時間*/  uint32_tih_size;/*鏡像數(shù)據大小*/  uint32_tih_load;/*鏡像加載地址*/  uint32_tih_ep;/*鏡像入口地址*/  uint32_tih_dcrc;/*鏡像數(shù)據crc校驗碼*/  uint8_tih_os;/*操作系統(tǒng)信息*/  uint8_tih_arch;/*cpu體系結構類型*/  uint8_tih_type;/*鏡像類型*/  uint8_tih_comp;/*壓縮類型*/  uint8_tih_name[32];/*鏡像名稱*/}

sibl從nand flash起始地址開始搜索。如果讀到鏡像同步字ih_magic,則識別鏡像程序,并根據偏移地址讀取程序大小ih_size和加載地址ih_load,將程序加載到指定的sdram空間;加載完成后根據crc校驗碼ih_dcrc對sdram數(shù)據進行crc檢測;最后根據鏡像類型ih_type判斷鏡像是否可執(zhí)行,若可執(zhí)行,則跳入鏡像入口地址ih_ep,否則sibl繼續(xù)搜索nand flash鏡像程序。

鏡像程序使用u-boot提供的工具mkimage添加頭信息,命令格式如下:

mkimage-a arch-o os-t type-c comp-a addr-e ep-n name-d data_file image

③ 完成sibl加載后,內存空間分布如圖6所示,系統(tǒng)進入啟動流程的第三階段u-boot。u-boot完成linux內核鏡像的解壓縮和操作系統(tǒng)啟動前的初始化,最終跳入內核入口地址,完成對linux的引導。

6 系統(tǒng)性能分析

系統(tǒng)構建提供了一個完整的lpc3180嵌入式軟硬件平臺,下面對lpc3180浮點運算能力進行測試和分析。測試方法是使用一個浮點運算密集的算法,用ads編譯器分別編譯使能硬件vfp和軟浮點運算兩個版本的測試程序,并在不同的cpu時鐘頻率下比較運行時間,結果如表1所列。

分析實驗數(shù)據,可以得出結論: vfp協(xié)處理器在相同時鐘頻率下,提高了5倍左右的浮點運算性能。因此,lpc3180平臺結合vfp協(xié)處理器,能夠實現(xiàn)復雜的浮點運算密集算法。在微控制器中集成硬件浮點運算單元,這使得微控制器的數(shù)據處理能力大大提高,能夠勝任多數(shù)的數(shù)字信號處理應用。

結語

本文介紹了以lpc3180微控制器為核心的嵌入式軟硬件平臺的設計與實現(xiàn),并測試、驗證了lpc3180的浮點運算性能。該平臺對于lpc3180的應用開發(fā)具有借鑒意義。目前l(fā)pc3180在醫(yī)療器械、工業(yè)控制、pos機、數(shù)字信號處理等領域有著廣泛的應用。


pos機相關文章:pos機原理




關鍵詞:

評論


相關推薦

技術專區(qū)

關閉