基于ARM的嵌入式Linux移植真實體驗(1)――基本概念
1.引言
ARM是Advanced RISC Machines(進階精簡指令系統處理器)的縮寫,是ARM公司提供的一種微處理器知識産權(IP)核。
ARM的應用已遍及工業控制、消費類電子産品、通信系統、網絡系統、無線系統等各類産品市場。基于ARM 技術的微處理器應用約占據了32位RISC 微處理器75%以上的市場佔有率。揭開你的手機、MP3、 PDA,嘿嘿,裡面多半藏着一個基于ARM的微處理器!
ARM核心的數個系列(ARM7、ARM9、ARM9E、ARM10E、SecurCore、Xscale、StrongARM),各自滿足不同應用領域的需求,無孔不入的滲入嵌入式系統各個角落的應用。這是一個ARM的時代!
下面的圖檔顯示了ARM的随處可見:
有人的地方就有江湖(《武林外傳》),有嵌入式系統的地方就有ARM。
建構一個複雜的嵌入式系統,僅有硬體是不夠的,我們還需要進行作業系統的移植。我們通常在ARM平台上建構Windows CE、Linux、Palm OS等作業系統,其中Linux具有開放源代碼的優點。
下圖顯示了基于ARM嵌入式系統中軟體與硬體的關系:
日前,筆者作為某嵌入式ARM(硬體)/Linux(軟體)系統的項目負責人,帶領項目組成員進行了下述工作:
(1)基于ARM920T核心S3C2410A CPU的電路闆設計;
(2)ARM處理下底層軟體平台搭建:
a.Bootloader的移植;
b.嵌入式Linux作業系統核心的移植;
c.嵌入式Linux作業系統根檔案系統的建立;
d.電路闆上外設Linux驅動程式的編寫。
本文将真實地再現本項目開發過程中作者的心得,以便與廣大讀者共勉。第一章将簡單地介紹本ARM開發闆的硬體設計,第二章分析Bootloader的移植方法,第三章叙述嵌入式 Linux的移植及檔案系統的建構方法,第四章講解外設的驅動程式設計,第五章給出一個已建構好的軟硬體平台上應用開發的執行個體。
2.ARM體系結構
作為一種RISC體系結構的微處理器,ARM微處理器具有RISC體系結構的典型特征。還具有如下增強特點:
(l)在每條資料處理指令當中,都控制算術邏輯單元(ALU)和移位器,以使ALU和移位器獲得最大的使用率;
(2)自動遞增和自動遞減的尋址模式,以優化程式中的循環;
(3)同時Load和Store多條指令,以增加資料吞吐量;
(4)所有指令都條件執行,以增大執行吞吐量。
ARM體系結構的字長為32位,它們都支援Byte(8位)、Halfword(16位)和Word(32位)3種資料類型。
ARM處理器支援7種處理器模式,如下表:
大部分應用程式都在User模式下運作。當處理器處于User模式下時,執行的程式無法通路一些被保護的系統資源,也不能改變模式,否則就會導緻一次異常。對系統資源的使用由作業系統來控制。
User模式之外的其它幾種模式也稱為特權模式,它們可以完全通路系統資源,可以自由地改變模式。其中的FIQ、IRQ、supervisor、Abort和undefined 5種模式也被稱為異常模式。在處理特定的異常時,系統進入這幾種模式。這5種異常模式都有各自的額外的寄存器,用于避免在發生異常的時候與使用者模式下的程式發生沖突。
還有一種模式是system模式,任何異常都不會導緻進入這一模式,而且它使用的寄存器和User模式下基本相同。它是一種特權模式,用于有通路系統資源請求而又需要避免使用額外的寄存器的作業系統任務。
程式員可見的ARM寄存器共有37個:31個通用寄存器以及6個針對ARM處理器的不同工作模式所設立的專用狀态寄存器,如下圖:
ARM9采用5級流水線操作:指令預取、譯碼、執行、資料緩沖、寫回。ARM9設定了16個字的資料緩沖和4個字的位址緩沖。這5級流水已被很多的RISC處理器所采用,被看作RISC結構的“經典”。
3.硬體設計
3.1 S3C2410A微控制器
電路闆上的ARM微控制器S3C2410A采用了ARM920T核,它由ARM9TDMI、存儲管理單元MMU和高速緩存三部分組成。其中,MMU可以管理虛拟記憶體,高速緩存由獨立的16KB位址和16KB資料高速Cache組成。ARM920T有兩個内部協處理器:CP14和CP15。CP14用于調試控制,CP15用于存儲系統控制以及測試控制。
S3C2410A內建了大量的内部電路和外圍接口:
Ø LCD控制器(支援STN和TFT帶有觸摸屏的液晶顯示屏)
Ø SDRAM控制器
Ø 3個通道的UART
Ø 4個通道的DMA
Ø 4個具有PWM功能的計時器和一個内部時鐘
Ø 8通道的10位ADC
Ø 觸摸屏接口
Ø I2C總線接口
Ø 12S總線接口
Ø 兩個USB主機接口
Ø 一個USB裝置接口
Ø 兩個SPI接口
Ø SD接口
Ø MMC卡接口
S3C2410A內建了一個具有月曆功能的RTC和具有PLL(MPLL和UPLL)的晶片時鐘發生器。MPLL産生主時鐘,能夠使處理器工作頻率最高達到203MHz。這個工作頻率能夠使處理器輕松運作WinCE、Linux等作業系統以及進行較為複雜的資訊處理。UPLL則産生實作USB子產品的時鐘。
下圖顯示了S3C2410A的內建資源和外圍接口:
我們需要對上圖中的AHB總線和APB總線的概念進行一番解釋。ARM核開發的目的,是使其作為複雜片上系統的一個處理單元來應用的,是以還必須提供一個ARM與其它片上宏單元通信的接口。為了減少不必要的設計資源的浪費,ARM公司定義了AMBA(Advanced Microcontroller Bus Architecture)總線規範,它是一組針對基于ARM核的、片上系統之間通信而設計的、标準的、開放協定。
在AMBA總線規範中,定義了3種總線:
(l)AHB—Advanced High Performace Bus,用于高性能系統子產品的連接配接,支援突發模式資料傳輸和事務分割;
(2)ASB—Advanced System Bus,也用于高性能系統子產品的連接配接,支援突發模式資料傳輸,這是較老的系統總線格式,後來由AHB總線替代;
(3)APB—Advanced PeriPheral Bus,用于較低性能外設的簡單連接配接,一般是接在AHB或ASB系統總線上的第二級總線。
典型的AMBA總線系統如下圖:
S3C2410A将系統的存儲空間分成8個bank,每個bank的大小是128M位元組,共1G位元組。Bank0到bank5的開始位址是固定的,用于ROM或SRAM。bank6和bank7可用于ROM、SRAM或SDRAM。所有記憶體塊的通路周期都可程式設計,外部Wait也能擴充通路周期。下圖給出了S3C2410A的記憶體組織:
下圖給出了S3C2410A的資料總線、位址總線和片選電路:
SDRAM控制信号、內建USB接口電路:
核心與存儲單元供電電路(S3C2410A對于片内的各個部件采用了獨立的電源供給,核心采用1.8V供電,存儲單元采用3.3V獨立供電):
JTAG标準通過邊界掃描技術提供了對電路闆上每一進制件的功能、互聯及互相間影響進行測試的方法,極大地友善了系統電路的調試。
測試接入端口TAP的管腳定義如下:
Ø TCK:專用的邏輯測試時鐘,時鐘上升沿按串行方式對測試指令、資料及控制信号進行移位操作,下降沿用于對輸出信号移位操作;
Ø TMS:測試模式選擇,在TCK上升沿有效的邏輯測試控制信号;
Ø TDI:測試資料輸入,用于接收測試資料與測試指令;
Ø TDO:測試資料輸出,用于測試資料的輸出。
S3C2410A調試用JTAG接口電路:
3.2 SDRAM存儲器
SDRAM被用來存放作業系統(從FLASH解壓縮拷入)以及存放各類動态資料,采用SAMSUNG公司的K4S561632,它是4Mxl6bitx4bank的同步DRAM,容量為32MB。用2片K4S561632實作位擴充,使資料總線寬度達到32bit,總容量達到64MB,将其位址空間映射在S3C2410A的bank6。
SDRAM 所有的輸入和輸出都與系統時鐘CL K上升沿同步,由輸入信号RA S、CA S、WE組合産生SDRAM 控制指令,其基本的控制指令如下:
SDRAM 在具體操作之前首先必須通過MRS指令設定模式寄存器,以便确定SDRAM 的列位址延遲、突發類型、突發長度等工作模式;再通過ACT指令激活對應位址的組,同時輸入行位址;然後通過RD 或WR 指令輸入列位址,将相應資料讀出或寫入對應的位址;操作完成後用PCH 指令或BT 指令中止讀或寫操作。在沒有操作的時候,每隔一段時間必須用ARF指令重新整理資料,防止資料丢失。
下圖給出了SDRAM的連接配接電路:
3.3 FLASH存儲器
NOR和NAND是現在市場上兩種主要的非易失閃存技術。
NOR的特點是晶片内執行(XIP,Execute In Place),即應用程式可直接在Flash閃存内運作,不必把代碼讀到系統RAM中。NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
NAND結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于Flash的管理和需要特殊的系統接口,S3C2410A内嵌了NAND FLASH控制器。
S3C2410A支援從GCS0上的NOR FLASH啟動(16位或32位)或從NAND FLASH啟動,需要通過OM0和OM1上電時的上下拉來設定:
在系統中分别采用了一片NOR FLASH(28F640)和NAND FLASH(K9S1208),電路如下圖:
3.4序列槽
S3C2410内部內建了UART控制器,實作了并串轉換。外部還需提供CMOS/TTL電平與RS232之間的轉換:
3.5以太網
以太網控制晶片采用CIRRUS LOGIC公司生産的CS8900A,其突出特點是使用靈活,其實體層接口、資料傳輸模式和工作模式等都能根據需要而動态調整,通過内部寄存器的設定來适應不同的應用環境。它符合IEEE803.3以太網标準,帶有傳送、接收低通濾波的10Base-T連接配接端口,支援10Base2,10Base5和10Base-F的AUI接口,并能自動生成報頭,自動進行CRC檢驗,在沖突後自動重發。
CS8900A支援的傳輸模式有I/O和Memory模式。當CS8900A有硬體複位或軟體複位時,它将預設成為8位工作模式。是以,要使CS8900A工作于16位模式,系統必須在通路之前提供給總線高位使能管腳(/SBHE)一個由高到低、再由低到高變化的電平。
3.6 USB接口
USB 系統由USB 主機(USB Host)、USB集線器(USB Hub)和USB裝置(USB Device)組成。USB 和主機系統的接口稱作主機控制器(Host Controller),它是由硬體和軟體結合實作的。根集線器是綜合于主機系統内部的,用以提供USB的連接配接點。USB的裝置包括集線器(Hub)和功能器件(Function)。
S3C2410A內建了USB host和USB device,外部連接配接電路如下圖:
3.7電源
LDO(Low Dropout)屬于DC/DC變換器中的降壓變換器,它具有低成本、低噪聲、低功耗等突出優點,另外它所需要的外圍器件也很少,通常隻有 1~2 個旁路電容。
在電路闆上我們分别用兩個LDO來實作5V向3.3V(存儲接口電平)和1.8V(ARM核心電平)的轉換。
up監控電路采用MAX708晶片,提供上電、掉電以及降壓情況下的複位輸出及低電平有效的人工複位輸出:
3.8其它
SN74LVTH62245A提供總線驅動和緩沖能力:
S3C2410A內建LCD液晶顯示器控制電路,外部引出接口:
觸摸屏有電阻式、電容式等,其本質是一種将手指在螢幕上的觸點位置轉化為電信号的傳感器。手指觸到螢幕,引起觸點位置電阻或電容的變化,再通過檢測這一電性變化,進而獲得手指的坐标位置。通過S3C2410A內建的AD功能,完成電信号向螢幕坐标的轉化,觸摸屏接口如下:
鍵盤則直接利用CPU的可程式設計I/O口,若連接配接 mxn鍵盤,則需要m+n個可程式設計I/O口,由軟體實作鍵盤掃描,識别按鍵:
3.9整體架構
下圖呈現了ARM處理器及外圍電路的整體設計架構:
4.小結
本章講解了基于S3C2410A ARM處理器電路闆硬體設計的基本組成,為後續各章提供了總體性的準備工作。
本文轉自 21cnbao 51CTO部落格,原文連結:http://blog.51cto.com/21cnbao/120254,如需轉載請自行聯系原作者