嵌入式最小系統(tǒng)設計課件_第1頁
嵌入式最小系統(tǒng)設計課件_第2頁
嵌入式最小系統(tǒng)設計課件_第3頁
嵌入式最小系統(tǒng)設計課件_第4頁
嵌入式最小系統(tǒng)設計課件_第5頁
已閱讀5頁,還剩201頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章嵌入式最小系統(tǒng)設計第一節(jié) 系統(tǒng)設計概述第二節(jié) S3C44B0X概述第三節(jié) 系統(tǒng)硬件基本單元電路設計第四節(jié) S3C44B0X啟動程序設計第6章嵌入式最小系統(tǒng)設計第一節(jié) 系統(tǒng)設計概述1第一節(jié) 系統(tǒng)設計概述 圖6.1為嵌入式最小系統(tǒng)原理框圖,如圖中所示一個嵌入式控制器自己是不能獨立工作的,必須給它提供電源,加上時鐘信號、復位信號,如果芯片沒有片內程序存儲器,則還要加上存儲器系統(tǒng),然后嵌入式控制器才可能工作。其中存儲器系統(tǒng)是可選的,這是因為很多面向嵌入式領域的嵌入式微控制器內部設計了程序存儲器和數(shù)據(jù)存儲器。這些提供嵌入式控制器運行所必須條件的電路與嵌入式控制器共同構成了嵌入式的最小系統(tǒng)。而大多數(shù)基于ARM7處理器核的微控制器都有調試接口,這部分在芯片實際工作時不是必需的,但在開發(fā)時很重要,所以把這部分也歸入最小系統(tǒng)中。

第一節(jié) 系統(tǒng)設計概述 圖6.1為嵌入式最小系2圖6.1最小系統(tǒng)原理框圖嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其存儲器系統(tǒng)供電系統(tǒng)3

圖6.2是一個典型的嵌入式系統(tǒng)硬件結構框圖,部分基本功能描述如下:圖6.2是一個典型的嵌入式系統(tǒng)硬件結構框圖,4復位電路可完成系統(tǒng)上電復位和在系統(tǒng)工作時用戶按鍵復位。電源電路為S3C44B0X及其他需要3.3V電源的外圍電路供電。晶振為系統(tǒng)提供工作時鐘,通過片內PLL(時鐘發(fā)生器)電路倍頻作為微處理器的工作時鐘。Flash存儲器可存放已調試好的用戶應用程序、嵌入式操作系統(tǒng)或其他在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等。SDRAM存儲器作為系統(tǒng)運行時的主要區(qū)域,系統(tǒng)及用戶數(shù)據(jù)、堆棧均位于SDRAM存儲器中。復位電路可完成系統(tǒng)上電復位和在系統(tǒng)工作時用戶按鍵復位。5JTAG接口可對芯片內部的所有部件進行訪問,通過該接口可對系統(tǒng)進行調試、編程等。系統(tǒng)總線擴展引出了數(shù)據(jù)總線、地址總線和必需的控制總線,便于用戶根據(jù)自身的特定要求擴展外圍電路。串行接口電路用于系統(tǒng)與其他應用系統(tǒng)的短距離雙向串行通信。10M以太網(wǎng)接口為系統(tǒng)提供以太網(wǎng)接入的物理通道,通過該接口,系統(tǒng)可以10Mb/s的速率接入以太網(wǎng)。JTAG接口可對芯片內部的所有部件進行訪問,通過該接口可對系6第二節(jié) S3C44B0X概述6.2.1S3C44B0X引腳及信號描述6.2.2S3C44B0X特性6.2.3 ARM存儲器6.2.4 S3C44B0X存儲控制器第二節(jié) S3C44B0X概述6.2.1S3C44B07第二節(jié) S3C44B0X概述S3C44B0X微處理器是三星公司生產的基于ARM7TDMI核的微處理器,采用0.25μmCMOS工藝制造,并在ARM7TDMI核基本功能的基礎上集成了豐富的外圍功能模塊,便于低成本設計嵌入式應用系統(tǒng)。片上集成的主要功能如下:在ARM7TDMI基礎上增加8KB的cache。外部擴充存儲器控制器(FP/EDO/SDRAM控制,片選邏輯)。LCD控制器(最大支持256色的DSTN),并帶有1個LCD專用DMA通道。第二節(jié) S3C44B0X概述S3C44B82個通用DMA通道/2個帶外部請求引腳的DMA通道。2個帶有握手協(xié)議的UART和1個SIO。1個多主的I2C總線控制器。1個IIS總線控制器。5個PWM定時器及1個內部定時器。看門狗定時器。71個通用可編程I/O口,8個外部中斷源。功耗控制模式是正常、低、休眠和停止。8路10位ADC。具有日歷功能的RTC(實時時鐘)。PLL時鐘發(fā)生器。2個通用DMA通道/2個帶外部請求引腳的DMA通道。96.2.1S3C44B0X引腳及信號描述S3C44B0X引腳如圖6.3所示。6.2.1S3C44B0X引腳及信號描述S3C4410S3C44B0X引腳信號的詳細描述見表6.1。表6.1S3C44B0X引腳信號詳細描述嵌入式最小系統(tǒng)設計課件11嵌入式最小系統(tǒng)設計課件12嵌入式最小系統(tǒng)設計課件13嵌入式最小系統(tǒng)設計課件14嵌入式最小系統(tǒng)設計課件15嵌入式最小系統(tǒng)設計課件16嵌入式最小系統(tǒng)設計課件17嵌入式最小系統(tǒng)設計課件186.2.2S3C44B0X特性1.體系結構集成了手持設備和通用嵌入式系統(tǒng)應用的解決方案。16/32位RISC體系結構和ARM7TDMI處理器內核強大的指令體系。Thumb代碼壓縮機,最大代碼密度同時保持了32位指令的性能?;贘TAG的片上集成ICE調試支持解決方案。32×8的硬件乘法器。實現(xiàn)低功耗SAMBAII(三星ARM處理器嵌入式微控制器總線體系結構)的新型總線結構。6.2.2S3C44B0X特性1.體系結構192.系統(tǒng)管理器支持大、小端模式(通過外部引腳來選擇)。包含8個地址空間,每個地址空間為32MB,總共有256MB。所有地址空間都可以通過編程設置為8位、16位或32位寬數(shù)據(jù)對齊訪問。8個地址空間中,6個地址空間可用于ROM、SRAM等存儲器,2個用于ROM、SRAM、FP/EDO/SDRAM等存儲器。7個起始地址固定及大小可編程的地址空間。1個起始地址及大小可變的地址空間。所有存儲器空間的訪問周期都可通過編程配置。提供外部擴展總線的等待周期。在低功耗模式下支持DRAM/SDARM自動刷新。支持地址對稱或非地址對稱的DRAM。2.系統(tǒng)管理器203.cache和片內SRAM4路相連統(tǒng)一的8KB指令/數(shù)據(jù)cache。未作為cache使用的0/4/8KBcache存儲空間可作為片內SRAM使用。cache偽LRU(最近最少使用)的替換算法。通過在主內存和緩沖區(qū)內容之間保持一致的方式寫內存。具有4級深度的寫緩沖。當緩沖區(qū)出錯時,請求數(shù)據(jù)填充。3.cache和片內SRAM214.時鐘和功耗管理低功耗。片上PLL使得MCU的工作時鐘頻率最高為66MHz。時鐘可通過軟件選擇性地反饋回每個功能塊。功耗管理模式為:正常模式:正常運行模式。低速模式:不帶PLL的低頻時鐘。休眠模式:使CPU的時鐘停止。停止模式:所有時鐘都停止。EINT[7:0]或RTC警告中斷可使功耗管理從停止模式中喚醒。4.時鐘和功耗管理22

5.中斷控制器30個中斷源(1個看門狗定時器中斷、6個定時器中斷、6個UART中斷、8個外部中斷、4個DMA中斷、2個RTC中斷、1個ADC中斷、1個I2C中斷和1個SIO中斷)。矢量IRQ中斷模式縮短中斷響應周期。外部中斷源的電平/邊沿模式??删幊痰碾娖?邊沿極性。支持緊急中斷請求的FIQ(快速中斷請求)。5.中斷控制器236.帶PWM的定時器(脈寬可調制)5個16位帶PWM的定時器,1個16位基于DMA或基于中斷的內部定時器??删幊痰墓ぷ髦芷凇㈩l率和極性。死區(qū)產生器。支持外部時鐘源。7.實時時鐘RTC充分的時鐘特性:毫秒、秒、分、時、天、星期、月、年。32.768kHz時鐘。CPU喚醒的警告中斷??僧a生時鐘節(jié)拍中斷。6.帶PWM的定時器(脈寬可調制)248.通用輸入/輸出端口8個外部中斷端口。71個(多功能)復用輸入/輸出口。9.UART2個基于DMA或基于中斷的UART。支持5位、6位、7位、8位串行數(shù)據(jù)傳送/接收在傳送/接收時支持硬件握手。波特率可編程。支持IrDA1.0(115.2kb/s)。用于回環(huán)測試模式。每個通道有2個用于接收和發(fā)送的內部32字節(jié)FIFO。8.通用輸入/輸出端口2510.DMA控制器2路通用的無CPU干涉的DMA控制器。2路DMA橋(外設DMA)控制器。支持I/O到內存、內存到I/O、I/O到I/O的橋式DMA傳送,有6種DMA請求方式軟件、4個內部功能塊(UART、SIO、實時器和IIS)和外部引腳。DMA之間優(yōu)先級次序可編程。突發(fā)傳送模式提高了FPDRAM、EDODRAM和SDRAM的傳送率。支持內存到外圍設備的fly-by模式和外圍設備到內存的傳送模式。11.A/D轉換8通道多路ADC。最高轉換速率100kb/s/10b。10.DMA控制器2612.LCD控制器支持彩色/單色/灰度LCD。支持單掃描和雙掃描顯示。支持虛擬顯示功能。系統(tǒng)內存可作為顯示內存。專用DMA用于從系統(tǒng)內存中提取圖像數(shù)據(jù)。可編程屏幕大小。16級灰度。彩色模式為256色。12.LCD控制器2713.看門狗定時器16位看門狗定時器。定時中斷請求或系統(tǒng)超時復位。14.I2C總線接口1個基于中斷操作的多主的I2C總線。8位雙向串行數(shù)據(jù)傳送器能夠工作于100kb/s的標準模式和400kb/s的快速模式。15.IIS總線接口1路基于DMA操作的音頻IIS總線接口。每通道8/16位串行數(shù)據(jù)傳送。支持MSB可調整的數(shù)據(jù)格式。13.看門狗定時器2816.SIO(同步串行I/O)1路基于DMA或基于中斷的SIO。波特率可編程。支持8位SIO的串行數(shù)據(jù)傳送/接收操作。17.工作電壓范圍內核:2.5V。I/O:3.0~3.6V。18.工作頻率最高達66MHz。19.封裝160LQFP/160FBGA。16.SIO(同步串行I/O)296.2.3 ARM存儲器在現(xiàn)代SOC設計中,為了實現(xiàn)高性能,微處理器核必須連接一個容量大、速度高的存儲器系統(tǒng)。如果存儲器容量太小,就不能存儲足夠大的程序來使處理器全力處理,如果速度太慢,就不能像處理器執(zhí)行指令那樣快地提供指令。但一般存儲器容量大,速度相對會慢。因此,設計一個足夠大又足夠快的單一存儲器,使高性能處理器充分發(fā)揮其能力,是有一定困難的,一般的解決方法是構建一個復合的存儲器系統(tǒng),這就是普遍使用的多級存儲器層次的概念。6.2.3 ARM存儲器在30 多級存儲器包括一個容量小但速度快的從存儲器,以及一個容量大但速度慢的主存儲器。容量小但速度快的元件是cache,能自動保存處理器經(jīng)常用到的指令和數(shù)據(jù)的復制。根據(jù)典型程序的實驗統(tǒng)計,這個存儲器系統(tǒng)的外部行為在絕大部分時間像一個既大又快的存儲器。2級存儲器原理可擴展為多級存儲器層次,如cache、主存和硬盤構成3級存儲層次(嵌入式系統(tǒng)目前多是2級的)。這里首先對ARM支持的存儲數(shù)據(jù)類型和處理器中數(shù)據(jù)存儲格式進行介紹,建立起ARM處理器的存儲體系的概念。 多級存儲器包括一個容量小但速度快的從存儲器,以及311.存儲數(shù)據(jù)類型和存儲格式(1)數(shù)據(jù)類型ARM處理器支持以下6種數(shù)據(jù)類型(較早的ARM處理器不支持半字和有符號字節(jié)):8位有符號和無符號字節(jié)。16位有符號和無符號半字,它們以2字節(jié)的邊界對齊。32位有符號和無符號字,它們以4字節(jié)的邊界對齊。ARM指令全是32位的字,并且必須以字為單位邊界對齊。Thumb指令是16位半字,而且必須以2字節(jié)為單位邊界對齊。1.存儲數(shù)據(jù)類型和存儲格式32在內部,所有ARM操作都面向32位的操作數(shù),只有數(shù)據(jù)傳送指令支持較短的字節(jié)和半字的數(shù)據(jù)類型。當從存儲器調入一個字節(jié)或半字時,根據(jù)指令對數(shù)據(jù)的操作類型,將其無符號0或有符號“符號位”擴展為32位,進而作為32位數(shù)據(jù)在內部進行處理。ARM協(xié)處理器可以支持其他數(shù)據(jù)類型,特別是定義了一些表示浮點數(shù)的數(shù)據(jù)類型。在ARM核內沒有明確地支持這些數(shù)據(jù)類型,然而在沒有浮點協(xié)處理器的情況下,這些類型可由軟件用上述標準類型來解釋。在內部,所有ARM操作都面向32位的操作33(2)存儲器組織在以字節(jié)為單位尋址的存儲器中有小端和大端兩種方式存儲字,這兩種方式是根據(jù)最低有效字節(jié)與相鄰較高有效字節(jié)相比,是存放在較低的地址還是較高的地址來劃分的。兩種存儲方式如圖6.4所示。小端模式:較高的有效字節(jié)存放在較高的存儲器地址,較低的有效字節(jié)存放在較低的存儲器地址。大端模式:較高的有效字節(jié)存放在較低的存儲器地址,較低的有效字節(jié)存放在較高的存儲器地址。ARM處理器能方便地配置為其中任何一種存儲器方式,但其默認設置為小端模式。在本書中將采用小端模式。(2)存儲器組織34(a)小端存儲器組織圖(b)大端存儲器組織圖圖6.4小端和大端存儲器組織嵌入式最小系統(tǒng)設計課件352.存儲器層次簡介存儲層次的管理由計算機硬件和操作系統(tǒng)來完成,典型的計算機存儲層次由多級構成,每級都有特定的容量及速度。(1)寄存器組微處理器寄存器組可看作存儲器層次的頂層。典型的RISC微處理器大約有32個32位寄存器,總共128B,其訪問時間為幾ns。2.存儲器層次簡介36(2)片上RAM如果微處理器要達到最佳性能,采用片上存儲器是必需的。它和片上的寄存器組具有同級的讀/寫速度。與片外存儲器相比,它有較好的功耗效率,并減少了電磁干擾。許多嵌入式系統(tǒng)中采用簡單的片上RAM而不是cache,因為它簡單、便宜、功耗低。但片上RAM又不能太快(消耗太多功率)、太大(占用太多芯片面積),因為片上RAM和片上寄存器組具有較高的實現(xiàn)成本,所以一般片上集成RAM的容量是必須考慮的。(2)片上RAM37(3)片上cache片上cache存儲器的容量為8K~32KB,訪問時間大概為10ns。高性能PC機系統(tǒng)可能有第2級片外cache,其容量為幾百KB,訪問時間為幾十ns。ARMCPU芯片采用多種cache組織結構。(4)主存儲器嵌入式系統(tǒng)通常沒有硬盤,主存儲器可以是幾MB到1GB的動態(tài)存儲器,訪問時間大約為50ns。(3)片上cache386.2.4S3C44B0X存儲控制器在基于ARM核的嵌入式應用系統(tǒng)中可能包含多種類型的片外存儲器件,如Flash、ROM、SRAM和SDRAM等,而且不同類型的存儲器件要求不同的速度、數(shù)據(jù)寬度等。為了對這些不同速度、類型、總線寬度的存儲器進行管理,存儲器管理控制器是必不可少的。在基于S3C44B0X處理器的嵌入式系統(tǒng)開發(fā)中,也是通過存儲控制器為片外存儲器訪問提供必要的控制信號,管理片外存儲部件的。1.S3C44B0X存儲器空間劃分圖6.5為S3C44B0X復位后的存儲器地址分配圖。6.2.4S3C44B0X存儲控制器39圖6.5S3C44B0X復位后的存儲器地址分配圖6.5S3C44B0X復位后的存儲器地址分配40從圖6.5中可以看出:特殊功能寄存器位于0x01C00000~0x02000000的4MB空間內。Bank0~Bank5的起始地址和空間大小都是固定的。Bank6的起始地址是固定的,空間可配置為2/4/8/16/32MB。Bank7的空間大小和Bank6一樣是可變的,也可配置為2/4/8/16/32MB。Bank6和Bank7的詳細地址與空間大小的關系可參考表6.2。從圖6.5中可以看出:41嵌入式最小系統(tǒng)設計課件42嵌入式最小系統(tǒng)設計課件43嵌入式最小系統(tǒng)設計課件44嵌入式最小系統(tǒng)設計課件453.S3C44B0X存儲控制器的特殊功能寄存器存儲控制器所實現(xiàn)的功能主要是通過對其特殊功能寄存器的設置來進行的,下面將對各特殊功能寄存器進行介紹。

(1)總線寬度/等待控制寄存器總線寬度/等待控制寄存器(BWSCON)見表6.6。它的設置決定了Bank上的SRAM是否使用UB/LB(寫高/低字節(jié)使能)、Bank7上的SRAM存儲器的等待狀態(tài)、Bank7的數(shù)據(jù)總線寬度、Bank0的數(shù)據(jù)總線寬度以及存儲模式。3.S3C44B0X存儲控制器的特殊功能寄存器46嵌入式最小系統(tǒng)設計課件47

(2)Bank控制寄存器Bank控制寄存器(BANKCONn:nGCS0~nGCS5)見表6.7和表6.8。其各位的設置決定了在nGCSn有效之前地址建立時間和在nOE上芯片選擇建立時間等。注:BANKCON0地址:0x01C80004;R/W初始值:0x0700;BANKCONl地址:0x01C80008;R/W初始值:0x0700;BANKCON2地址:0x01C8000c;R/W初始值:0x0700;BANKCON3地址:0x0lC80010;R/W初始值:0x0700;BANKCON4地址:0x01C80014;R/W初始值:0x0700;BANKCON5地址:0x01C80018;R/W初始值:0x0700。(2)Bank控制寄存器48嵌入式最小系統(tǒng)設計課件49嵌入式最小系統(tǒng)設計課件50嵌入式最小系統(tǒng)設計課件51嵌入式最小系統(tǒng)設計課件52(3)DRAM/SDRAM刷新控制寄存器DRAM/SDRAM刷新控制寄存器(REFRESH)見表6.9。它的設置決定了DRAM/SDRAM刷新是否允許、刷新模式、RAS預充電時間、RAS和CAS最短時間、CAS保持時間以及刷新計數(shù)值。

(3)DRAM/SDRAM刷新控制寄存器53嵌入式最小系統(tǒng)設計課件54嵌入式最小系統(tǒng)設計課件55(5)Bank6和Bank7模式設置寄存器Bank6和Bank7模式設置寄存器(MRSR)見表6.11,它的設置主要決定Bank6和Bank7的存儲模式.(5)Bank6和Bank7模式設置寄存器564.S3C44B0X存儲器應用編程下面給出了存儲器的兩個編程實例,包括存儲控制寄存器的配置和存儲器的讀/寫。通過這兩個簡單的例子,可以使讀者對存儲器的應用編程有一定的了解。(1)13個存儲控制寄存器的配置示例 13個存儲控制寄存器配置如下所示: ldrR0,=SMRDATA ldmiaR0,{R1-R13} ldrR0,=0x01C80000;BWSCONAddress stmiaR0,{R1-R13} SMRDATA: .long0x22221210;BWSCON .long0x00000600;GCS04.S3C44B0X存儲器應用編程57 .long0x00000700;GCS1 .long0x00000700;GCS2 .long0x00000700;GCS3 .long0x00000700;GCS4 .long0x00000700;GCS5 .long0x0001002A;GCS6,EDODRAM(Trcd=3,;Tcas=2,Tcp=1,CAN=10bits) .long0x0001002A;GCS7,EDODRAM .long0x00960000+953;Reflash(REFEN=1,TREFMD=0,Trp=3,;Trc=5,Tchr=3) .long0x0;BankSize,32MB/32MB .long0x00000700;GCS158

.long0x20;MRSR6(CL=2) .long0x20;MRSR7(CL=2)觀察上面寄存器介紹中的寄存器地址可發(fā)現(xiàn),13個寄存器分布在從0x01C80000開始的連續(xù)地址空間。所以上面的程序先將各個寄存器需要配置的值從起始地址為SMRDATA的區(qū)域取出來,然后利用指令“stmiaR0,{R1-R13}”實現(xiàn)將配置好的寄存器的值依次寫入到相應的寄存器中,這就完成了存儲器13個控制寄存器的配置。

.long0x20;MRS59(2)存儲器的讀/寫代碼存儲器的讀/寫代碼可用匯編語言來編寫,也可用C語言來編寫,如下所示:/***************************************************************/*名稱:sRWramtest*功能:使用匯編語言讀/寫已初始化的RAM區(qū),即向一個存儲器地址寫一個字、半字、字節(jié)或者從一個存儲器地址處讀取一個字、半字、字節(jié),分別用相應的LDR指令STR,這在ARM指令中有詳細介紹。****************************************************************/ sRWramtest: LDRR2,=0x0C010000 LDRR3,=0x55AA55AA STRR3,[R2]/*將一個字0x55AA55AA寫入地址0x0C010000*/ LDRR3,[R2]/*從地址0x0C010000處讀取一個字*/(2)存儲器的讀/寫代碼60 LDRR2,=0x0C010000 LDRBR3,[R2]/*從地址0x0C010000處讀取一個半字*/ STRBR3,[R2],#1/*地址加1后,向該地址寫入一個字節(jié)*/ /***************************************************************/ *名稱:cRWramtest *功能:使用高級語言C讀/寫已初始化的RAM區(qū),即向已定義的指針變量賦值或將指針變量值賦給其他變量。這需要提前定義指針變量并賦值,并且也要定義相應的普通變量。 ****************************************************************/ #defineRWram(*(unsignedlong*)0x0C010200) voidcRWramtest(void) { unsignedlong*ptr=0x0C010200; //定義一個長指針并賦初值

LDRR2,=0x0C01000061 unsignedlong*ptrh=0x0C010200; //定義一個短指針并賦初值 unsignedlong*ptrb=0x0C010200; //定義一個字符指針并賦初值 unsignedchartmpd; //定義一個字符變量 unsignedchartmph; //定義一個短整型變量 unsignedchartmpb; //定義一個長整型變量 *ptr=0xAA55AA55; tmpw=*ptr; //字長讀 *ptr=tmpw+1; //字長寫 tmph=*ptrh; //半字 *ptrh=tmph+1; //字節(jié) } unsignedlong*ptrh=0x0C0102625.S3C44B0X功能結構框圖S3C44B0X體系結構的功能框圖如圖6.6所示。5.S3C44B0X功能結構框圖63第三節(jié) 系統(tǒng)硬件基本單元電路設計6.3.1電源、復位、時鐘電路和JTAG接口6.3.2Flash存儲器接口電路6.3.3SDRAM存儲器接口電路第三節(jié) 系統(tǒng)硬件基本單元電路設計6.3.1電源、復位64第三節(jié) 系統(tǒng)硬件基本單元電路設計 嵌入式系統(tǒng)的硬件是嵌入式系統(tǒng)軟件環(huán)境運行的基礎,它提供了軟件運行的物理平臺和通信接口。下面介紹嵌入式硬件系統(tǒng)設計的方法。6.3.1電源、復位、時鐘電路和JTAG接口 1.電源和復位電路系統(tǒng)采用DC5V穩(wěn)壓電源進行供電,電源輸入后經(jīng)過兩個穩(wěn)壓芯片產生3.3V和2.5V電壓,給MCU的I/O和ARM內核供電,如圖6.7所示。第三節(jié) 系統(tǒng)硬件基本單元電路設計 嵌入式系統(tǒng)的硬件是嵌入65圖6.7電源原理圖圖6.7電源原理圖66 在系統(tǒng)中,復位電路主要完成系統(tǒng)的上電復位和系統(tǒng)在運行時用戶的按鍵復位功能。復位電路可由簡單的RC電路構成,也可使用其他的相對較復雜,但功能更完善的電路。本系統(tǒng)采用較簡單的RC復位電路,如圖6.8所示。該復位電路的工作原理如下:在系統(tǒng)上電時,通過電阻R向電容C充電,當C兩端的電壓未達到高電平的門限電壓時,Reset端輸出為低電平,系統(tǒng)處于復位狀態(tài);當C兩端的電壓達到高電平的門限電壓時,Reset端輸出為高電平,系統(tǒng)進入正常工作狀態(tài)。 在系統(tǒng)中,復位電路主要完成系統(tǒng)的上電復位和67圖6.8時鐘與復位圖6.8時鐘與復位68

當用戶按下按鈕S時,C兩端的電荷被泄放掉,Reset端輸出為低電平,系統(tǒng)進入復位狀態(tài),再重復以上的充電過程,系統(tǒng)進入正常工作狀態(tài)。兩級非門電路用于按鈕去抖動和波形整形;通過調整R和C的參數(shù),可調整復位狀態(tài)的時間。

692.晶振電路晶振電路用于向CPU及其他電路提供工作時鐘,S3C44B0X的時鐘源來自晶振,也可以是外部時鐘。S3C44B0X的內部時鐘發(fā)生器可產生CPU和外設所需要的時鐘信號。時鐘發(fā)生器有一個振蕩器連接到外部的晶體上,同時片內的PLL電路把低頻振蕩器的輸出作為自己的輸入,產生S3C44B0X所需要的高頻信號,因此,系統(tǒng)可以較低的外部時鐘信號獲得較高的工作頻率,以降低因高速開關時鐘所造成的高頻噪聲。實時時鐘通過MCU外接8mHn晶振和工作供電電路來實現(xiàn),如圖6.8所示。輸出的時鐘頻率fpllo和輸入的參考時鐘頻率fin的關系式為: fpllo=(m×fin)/(p×2s)m=

M(分頻器M的分頻值)+8p=p(分頻器p的分頻值)+22.晶振電路703.JTAG接口 JTAG(JointTestActionGroup,聯(lián)合測試行動小組)是一種國際標準測試協(xié)議,主要用于芯片內部測試及對系統(tǒng)進行仿真、調試,JTAG技術是一種嵌入式調試技術,它在芯片內部封裝了專門的測試電路TAP(testaccessport,測試訪問口),通過專用的JTAG測試工具對內部節(jié)點進行測試。目前大多數(shù)比較復雜的器件都支持JTAG協(xié)議,如ARM、DSP和FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI和TDO,分別為測試模式選擇、測試時鐘、測試數(shù)據(jù)輸入和測試數(shù)據(jù)輸出,關于JTAG的詳細內容參見第9章。3.JTAG接口716.3.2Flash存儲器接口電路 這里以EmbestS3CV40開發(fā)板存儲系統(tǒng)為例,介紹Flash存儲器接口電路。如圖6.9所示,電路采用一片1M×16位的Flash(SST39VFl60),F(xiàn)lashROM采用標準總線接口與處理器交互,處理器通過片選nGCS0與片外Flash芯片連接。由于是16位的Flash,所以用CPU的地址線A1~A20來分別與F1ash的地址線A0~A19連接。F1ash的地址空間為0x00000000~0x00200000。FlashROM的數(shù)據(jù)接口為DQl5~0,因此,數(shù)據(jù)寬度是16位。又注意到處理器的ADDR20~1對應著FlashROM的A19~0,偏移了1位,這是由于S3C44B0X是按照字節(jié)編址的,而FlashROM是以16位為一個存儲單元,因此,處理器的地址“左移”1位,采用ADDRl與FlashROM的A0相連。由于FlashROM映射在處理器的Bank0區(qū)域內,因此,它的片選線與處理器的nGCS0相連。6.3.2Flash存儲器接口電路 這里以Emb726.3.3SDRAM存儲器接口電路 與Flash存儲器相比較,SDRAM不具有掉電保持數(shù)據(jù)的特性,但其存取速度大大高于Flash存儲器,且具有讀/寫的屬性,因此,SDRAM在系統(tǒng)中主要用作程序的運行空間,數(shù)據(jù)及堆棧區(qū)。當系統(tǒng)啟動時,CPU首先從復位地址0x0處讀取啟動代碼,在完成系統(tǒng)的初始化后,程序代碼一般應調入SDRAM中運行,以提高系統(tǒng)的運行速度,同時,系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都放在SDRAM中。 如圖6.10所示,SDRAM分成4個Bank,每個Bank的容量為1M×16位。Bank的地址由BAl、BA0決定,00對應Bank0,01對應Bankl,10對應Bank2,11對應Bank3。在每個Bank中,分別用行地址脈沖選通RAS和列地址脈沖選通CAS進行尋址。系統(tǒng)為用戶提供設置跳線,作為升級SDRAM內存容量可至4×2M×16位。具體方法是使SDRAM的BA0、BAl分別接至CPU的A21、A22、A23腳。SDRAM由MCU專用SDRAM片選信號nSCS0選通,地址空間為0x0C000000~0x0C7FFFFF。

6.3.3SDRAM存儲器接口電路 與Flash73圖6.9SST39VF160與S3C44B0X的接口電路圖6.10SDRAM連接電路圖6.9SST39VF160與S3C44B0X的接口電路74第四節(jié) S3C44B0X啟動程序設計6.4.1BootLoader介紹6.4.2啟動程序設計實例第四節(jié) S3C44B0X啟動程序設計75第四節(jié) S3C44B0X啟動程序設計6.4.1BootLoader介紹BootLoader是系統(tǒng)加電后運行的第一段軟件代碼。在PC體系結構中,PC機的引導加載程序由BIOS和位于硬盤MBR中的引導程序一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的引導程序讀到系統(tǒng)的RAM中,然后將控制權交給引導程序。引導程序的主要任務就是將內核映像從硬盤上讀到RAM中,然后跳轉到內核的入口點去運行,即開始啟動操作系統(tǒng)。而在嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務就完全由BootLoader完成。

第四節(jié) S3C44B0X啟動程序設計6.4.1Bo76

在嵌入式系統(tǒng)中,BootLoader的作用與PC機上的BIOS類似,通過BootLoader可以完成對系統(tǒng)板上的主要部件如CPU、SDRAM、Flash和串行口等進行初始化,也可以下載文件到系統(tǒng)板、對Flash進行擦除與編程。BootLoader在操作系統(tǒng)內核運行之前,可以初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核準備正確的環(huán)境。通常,BootLoader是緊密圍繞系統(tǒng)硬件對系統(tǒng)進行初始化的,根據(jù)實現(xiàn)的功能不同,其復雜程度也各不相同。一個簡單的BootLoader程序可以僅完成串行口的初始化,并進行通信,而功能完善的BootLoader可以支持比較復雜的命令集,對系統(tǒng)的軟硬件資源進行合理的配置與管理。在嵌入式系統(tǒng)中,BootLoader776.4.2啟動程序設計實例這里以EmbestS3CV40開發(fā)板為例,介紹S3C44B0X啟動程序設計。S3C44B0X沒有存儲區(qū)重映射功能,所有存儲區(qū)地址固定,S3C44B0X提供矢量中斷功能,減少了中斷延遲。因此在S3C44B0X的啟動程序中,矢量中斷功能的出現(xiàn)導致擴展了向量表,同時為方便程序設計和在RAM中調試,中斷入口通過地址定義方式轉移到RAM區(qū)的最高端。6.4.2啟動程序設計實例這里以Emb781.命令腳本在進行集成環(huán)境與目標連接時、軟件調試過程中以及復位目標板后,有時需要集成環(huán)境自動完成一些特定的功能,比如復位目標板、清除看門狗、屏蔽中斷寄存器和存儲區(qū)映射等,這些特定的功能可以通過執(zhí)行一組命令序列完成,保存一組命令序列的文本文件稱為命令腳本文件(commandscriptsfile*.cs)。開發(fā)板的命令腳本文件ev40boot.cs源代碼如下,具體功能的實現(xiàn)需要仔細分析。reset ;resetboardmemwrite0x01D300000x00000000 ;watchdog timercontrolRegister,1.命令腳本79 ;disablewatchdogmemwrite0x01E0000C0x07ffffff ;INTMSK(disableallinterrupt)memwrite0x01E000240xffffffff ;clearallinterruptmemwrite0x01C800000x11110102 ;BWSCONmemwrite0x01C800040x00000600 ;BANKCON0memwrite0x01C800080x00007FFC ;BANKCON1memwrite0x01C8000C0x00007FFC ;BANKCON2memwrite0x01C800100x00007FFC ;BANKCON3memwrite0x01C800140x00007FFC ;BANKCON4memwrite0x01C800180x00007FFC ;BANKCON5memwrite0x01C8001C0x00018000 ;BANKCON6memwrite0x01C800200x00018000 ;BANKCON7memwrite0x01C800240x00860459 ;REFRESH ;disablewatchdog80memwrite0x01C800280x00000010 ;BANKSIZEmemwrite0x01C8002C0x00000020 ;MRSRB6memwrite0x01C800300x00000020 ;MRSRB72.鏈接腳本在系統(tǒng)級別的嵌入式開發(fā)中需要使用鏈接定位文件,該文件描述代碼鏈接定位的有關信息,包括代碼段,數(shù)據(jù)段和地址段等,鏈接器必須使用該文件對整個系統(tǒng)的代碼做正確的定位,該文件稱為鏈接腳本文件(linkerscriptsfile*.ld)。 Flash固化時使用的鏈接腳本文件為:SECTIONS{ .=0x00000000;memwrite0x01C800280x0000001081 Image_RO_Base=.; .text:{*(.text)} .rodata:{*(.rodata)} Image_RO_Limit=.; .=0x0C000000; Image_RW_Base=.; .data:{*(.data)} Image_RW_Limit=.; Image_ZI_Base=.; .bss:{*(.bss)} Image_ZI_Limit=.; __bss_start__=.; __bss_end__=.; Image_RO_Base=.;82 __EH_FRAME_BEGIN__=.; __EH_FRAME_END__=.; PROVIDE(__stack=.); end=.; _end=.; .debug_info0:{*(.debug_info)} .debug_line 0:{*(.debug_line)} .debug_abbrev0:{*(.debug_abbrev)} .debug_frame0:{*(.debug_frame)} } __EH_FRAME_BEGIN__=.;83RAM調試時使用的鏈接腳本文件為:SECTIONS{ .=0x0C000000; Image_RO_Base=.; .text:{*(.text)} Image_RO_Limit=.; Image_RW_Base=.; .data:{*(.data)} .rodata:{*(.rodata)} Image_RW_Limit=.; Image_ZI_Base=.; .bss:{*(.bss)}RAM調試時使用的鏈接腳本文件為:84 Image_ZI_Limit=.; __bss_start__=.; __bss_end__=.; __EH_FRAME_BEGIN__=.; __EH_FRAME_END__=.; PROVIDE(__stack=.); end=.; _end=.; .debug_info0:{*(.debug_info)} .debug_line 0:{*(.debug_line)} .debug_abbrev0:{*(.debug_abbrev)} .debug_frame0:{*(.debug_frame)} } Image_ZI_Limit=.;853.S3C44B0X的啟動程序源代碼部分相似的中斷入口定義和函數(shù)宏定義被省略,省略部分以“……”代替并加了注釋,讀者在使用這些源代碼作為啟動程序時,可以自行添加省略部分來修改程序。 #************************************************************ #文件名:44BINIT.S * #說明:S3C44B0X啟動文件 * #************************************************************ #************************************************************ #寄存器定義及其位定義 #************************************************************3.S3C44B0X的啟動程序源代碼86 .equINTMSK,0x01e0000c .equWTCON,0x01d30000 .equCLKCON,0x01d80004 .equLOCKTIME,0x01d8000c .equFIQMODE,0x11 .equIRQMODE,0x12 .equSVCMODE,0x13 .equABORTMODE,0x17 .equUNDEFMODE,0x1b .equMODEMASK,0x1f .equNOINT,0xc0 .equCPSR_IRQ_EN,0x80 .equINTMSK,0x01e0000c87#************************************************************#中斷處理宏#************************************************************ .macroHANDLERHandleLabel subsp,sp,#4//棧空間遞減保存跳轉地址 stmfdsp!,{r0}//保存工作寄存器r0到棧 ldrr0,=\HandleLabel//載入中斷入口地址所在 位置到r0 ldrr0,[r0]//載入中斷入口地址到r0 strr0,[sp,#4] //保 存中斷入口地址到棧 ldmfdsp!,{r0,pc} //恢復工作 寄存器并跳轉到中斷函數(shù) .endm#************************************************************#設置ARM7中斷和異常向量#****************************88#***********************************************************ENTRY:bResetHandler //S3C44B0X復位后從此處執(zhí)行bHandlerUndef //未定義異常向量bHandlerSWI //軟中斷向量bHandlerPabort //取指異常向量bHandlerDabort //取數(shù)據(jù)異常向量b. //保留bHandlerIRQ //中斷向量bHandlerFIQ //快速中斷向量#**********************************************************#*****************************89#設置44B0中斷向量表#************************************************************ VECTOR_BRANCH: ldrpc,=HandlerEINT0 //mGA H/Winterruptvectortable ldrpc,=HandlerEINT1 …… //省略 ldrpc,=HandlerADC //mGKB …… //省略b.#************************************************************#設置44B0中斷向量表90#中斷向量處理宏#************************************************************ HandlerFIQ:HANDLERHandleFIQ HandlerIRQ:HANDLERHandleIRQ HandlerUndef:HANDLERHandleUndef HandlerSWI:HANDLERHandleSWI HandlerDabort:HANDLERHandleDabort HandlerPabort:HANDLERHandlePabort HandlerADC:HANDLERHandleADC ……//省略 HandlerEINT1:HANDLERHandleEINT1 HandlerEINT0:HANDLERHandleEINT0#************************************************************#中斷向量處理宏91#中斷向量處理宏#************************************************************ ResetHandler:ldrr0,=WTCON //看門狗禁止 ldrr1,=0x0strr1,[r0] ldrr0,=INTMSKldrr1,=0x07ffffff //所有中斷禁止 strr1,[r0]#************************************************************#設置時鐘控制控制器#************************************************************ ldrr0,=LOCKTIME ldrr1,=0xfffstrr1,[r0] ldrr0,=CLKCONldrr1,=0x7ff8//所有模塊的時鐘開啟 strr1,[r0]#中斷向量處理宏92#************************************************************#設置存儲區(qū)控制器#************************************************************ ldrr0,=SMRDATA ldmiar0,{r1-r13} ldrr0,=0x01c80000 stmiar0,{r1-r13}#************************************************************#初始化??臻g#************************************************************ ldrsp,=SVCStack //切換到超級用戶??臻g blInitStacks#****************************93#************************************************************#引入外部符號,符號定義在鏈接腳本文件中#************************************************************ .externImage_RO_Limit //只讀區(qū)域大小 .externImage_RW_Base //可讀寫存儲區(qū)域起始地址 .externImage_ZI_Base //清零區(qū)域起始地址 .externImage_ZI_Limit //清零區(qū)域大小#************************************************************#初始化C代碼需要使用的存儲區(qū)#************************************************************ LDRr0,=Image_RO_Limit //獲取只讀區(qū)域大小 LDRr1,=Image_RW_Base //獲取可讀寫區(qū)域起始地址 LDRr3,=Image_ZI_Base //獲取清零區(qū)域起始地址#****************************94 CMPr0,r1 //比較只讀區(qū)域和可讀寫區(qū)域是否重疊 BEQLOOP1 LOOP0:CMPr1,r3 //復制程序中.data數(shù)據(jù)段內 容到讀寫區(qū)域 LDRCCr2,[r0],#4 STRCCr2,[r1],#4 BCCLOOP0 LOOP1:LDRr1,=Image_ZI_Limit //從清零區(qū)域 頂部開始 MOVr2,#0 LOOP2:CMPr3,r1 //清零 STRCCr2,[r3],#4 BCCLOOP2 CMPr0,r1 //比較只讀區(qū)域和可讀寫區(qū)域是否95#************************************************************#全能IRQ中斷(I位)#************************************************************ MRSr0,CPSR BICr0,r0,#CPSR_IRQ_EN/*IRQenable*/ MSRCPSR_cxsf,r0#************************************************************#進入C語言程序入口#************************************************************ .extern__main BL__main#************************************************************#初始化??臻g的函數(shù)#************************************************************ InitStacks:#****************************96 mrsr0,cpsr bicr0,r0,#MODEMASK orrr1,r0,#UNDEFMODE|NOINT msrcpsr_cxsf,r1 ldrsp,=UndefStack //設置未定義異常??臻g orrr1,r0,#ABORTMODE|NOINT msrcpsr_cxsf,r1 ldrsp,=AbortStack //設置異常??臻g orrr1,r0,#IRQMODE|NOINT msrcpsr_cxsf,r1 ldrsp,=IRQStack //設置中斷??臻g orrr1,r0,#FIQMODE|NOINT msrcpsr_cxsf,r1 ldrsp,=FIQStack //設置快速中斷棧空間 bicr0,r0,#MODEMASK|NOINT mrsr0,cpsr97 orrr1,r0,#SVCMODE msrcpsr_cxsf,r1 ldrsp,=SVCStack //設置超級用戶??臻g movpc,lr //函數(shù)返回#************************************************************#存儲區(qū)相關寄存器設置值#************************************************************ SMRDATA:.long0x11110101 //存儲區(qū)訪問寬度控 制寄存器 .long0x00000600 //BANK0控制寄存器 .long0x00007FFC //BANK1控制寄存器 .long0x00007FFC //BANK2控制寄存器 .long0x00007FFC //BANK3控制寄存器 .long0x00007FFC //BANK4控制寄存器 .long0x00007FFC //BANK5控制寄存器 orrr1,r0,#SVCMODE98 .long0x00018000 //BANK6控制寄存器 .long0x00018000 //BANK7控制寄存器 .long0x00860459 //SDRAM刷新控制寄存器 .long0x10 //SDRAM存儲區(qū)大小 .long0x20 //BANK6SDRAM模式寄存器 .long0x20 //BANK7SDRAM模式寄存器 .equSTARTADDRESS,0xc7fff00#************************************************************#??臻g定義#************************************************************ .equUserStack,STARTADDRESS-0x500 //c1(c7)ffa00 .equSVCStack,STARTADDRESS-0x500+256 //c1(c7)ffb00 .equUndefStack,STARTADDRESS-0x500+256*2 //c1(c7)ffc00 .long0x00018000 //BANK6控制99 .equAbortStack,STARTADDRESS-0x500+256*3 //c1(c7)ffd00 .equIRQStack,STARTADDRESS-0x500+256*4 //c1(c7)ffe00 .equFIQStack,STARTADDRESS-0x500+256*5 //c1(c7)fff00#********************************************************#ARM中斷向量入口定義#******************************************************** .equHandleReset,STARTADDRESS .equHandleUndef,STARTADDRESS+4 .equHandleSWI,STARTADDRESS+4*2 .equHandlePabort,STARTADDRESS+4*3 .equHandleDabort,STARTADDRESS+4*4 .equAbortStack,STARTADDRESS100 .equHandleReserved,STARTADDRESS+4*5 .equHandleIRQ,STARTADDRESS+4*6 .equHandleFIQ,STARTADDRESS+4*7#************************************************************#S3C44B0X中斷向量入口定義#************************************************************ .equHandleADC,STARTADDRESS+4*8 …… //省略 .equHandleEINT4567,STARTADDRESS+4*29 .equHandleEINT3,STARTADDRESS+4*30 .equHandleEINT2,STARTADDRESS+4*31 .equHandleEINT1,STARTADDRESS+4*32 .equHandleEINT0,STARTADDRESS+4*33 //0xc1(c7)fff8 .equHandleReserved,STARTADD101本章要點嵌入式應用系統(tǒng)的設計包含硬件系統(tǒng)設計和軟件系統(tǒng)設計兩個部分,這兩部分的設計是互相關聯(lián)的。一個基于ARM的嵌入式系統(tǒng)通常包含以下的硬件組成部分:集成在芯片上的ARM處理器,通過存儲器映射地址的寄存器來訪問的外設,一種被稱為控制器的特殊類型外設,使嵌入式系統(tǒng)可實現(xiàn)諸如存儲器管理和中斷控制等高層功能,片內的總線把處理器和外設連接在一起。在嵌入式系統(tǒng)中,BootLoader是系統(tǒng)加電后運行的第一段軟件代碼,通過BootLoader可以完成對系統(tǒng)板上的主要部件進行初始化,將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài)。根據(jù)實現(xiàn)的功能不同,其復雜程度也不相同。通過本章的學習,可以掌握設計嵌入式最小系統(tǒng)的方法。本章要點嵌入式應用系統(tǒng)的設計包含硬件系統(tǒng)設計和軟件系統(tǒng)102習題1.簡述S3C44B0X最小系統(tǒng)應包括哪些部分?2.S3C44B0X可使用的外部晶振頻率范圍是多少(使用/不使用PLL功能時)?3.計算PLL設置值:設一個基于S3C44B0X的系統(tǒng)使用的晶振為11.0592MHz石英晶振,計算出最大的系統(tǒng)時鐘頻率為多少MHz?此時PLL的M值和P值為多少?習題1.簡述S3C44B0X最小系統(tǒng)應包括哪些部分103第6章嵌入式最小系統(tǒng)設計第一節(jié) 系統(tǒng)設計概述第二節(jié) S3C44B0X概述第三節(jié) 系統(tǒng)硬件基本單元電路設計第四節(jié) S3C44B0X啟動程序設計第6章嵌入式最小系統(tǒng)設計第一節(jié) 系統(tǒng)設計概述104第一節(jié) 系統(tǒng)設計概述 圖6.1為嵌入式最小系統(tǒng)原理框圖,如圖中所示一個嵌入式控制器自己是不能獨立工作的,必須給它提供電源,加上時鐘信號、復位信號,如果芯片沒有片內程序存儲器,則還要加上存儲器系統(tǒng),然后嵌入式控制器才可能工作。其中存儲器系統(tǒng)是可選的,這是因為很多面向嵌入式領域的嵌入式微控制器內部設計了程序存儲器和數(shù)據(jù)存儲器。這些提供嵌入式控制器運行所必須條件的電路與嵌入式控制器共同構成了嵌入式的最小系統(tǒng)。而大多數(shù)基于ARM7處理器核的微控制器都有調試接口,這部分在芯片實際工作時不是必需的,但在開發(fā)時很重要,所以把這部分也歸入最小系統(tǒng)中。

第一節(jié) 系統(tǒng)設計概述 圖6.1為嵌入式最小系105圖6.1最小系統(tǒng)原理框圖嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其存儲器系統(tǒng)供電系統(tǒng)106

圖6.2是一個典型的嵌入式系統(tǒng)硬件結構框圖,部分基本功能描述如下:圖6.2是一個典型的嵌入式系統(tǒng)硬件結構框圖,107復位電路可完成系統(tǒng)上電復位和在系統(tǒng)工作時用戶按鍵復位。電源電路為S3C44B0X及其他需要3.3V電源的外圍電路供電。晶振為系統(tǒng)提供工作時鐘,通過片內PLL(時鐘發(fā)生器)電路倍頻作為微處理器的工作時鐘。Flash存儲器可存放已調試好的用戶應用程序、嵌入式操作系統(tǒng)或其他在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等。SDRAM存儲器作為系統(tǒng)運行時的主要區(qū)域,系統(tǒng)及用戶數(shù)據(jù)、堆棧均位于SDRAM存儲器中。復位電路可完成系統(tǒng)上電復位和在系統(tǒng)工作時用戶按鍵復位。108JTAG接口可對芯片內部的所有部件進行訪問,通過該接口可對系統(tǒng)進行調試、編程等。系統(tǒng)總線擴展引出了數(shù)據(jù)總線、地址總線和必需的控制總線,便于用戶根據(jù)自身的特定要求擴展外圍電路。串行接口電路用于系統(tǒng)與其他應用系統(tǒng)的短距離雙向串行通信。10M以太網(wǎng)接口為系統(tǒng)提供以太網(wǎng)接入的物理通道,通過該接口,系統(tǒng)可以10Mb/s的速率接入以太網(wǎng)。JTAG接口可對芯片內部的所有部件進行訪問,通過該接口可對系109第二節(jié) S3C44B0X概述6.2.1S3C44B0X引腳及信號描述6.2.2S3C44B0X特性6.2.3 ARM存儲器6.2.4 S3C44B0X存儲控制器第二節(jié) S3C44B0X概述6.2.1S3C44B0110第二節(jié) S3C44B0X概述S3C44B0X微處理器是三星公司生產的基于ARM7TDMI核的微處理器,采用0.25μmCMOS工藝制造,并在ARM7TDMI核基本功能的基礎上集成了豐富的外圍功能模塊,便于低成本設計嵌入式應用系統(tǒng)。片上集成的主要功能如下:在ARM7TDMI基礎上增加8KB的cache。外部擴充存儲器控制器(FP/EDO/SDRAM控制,片選邏輯)。LCD控制器(最大支持256色的DSTN),并帶有1個LCD專用DMA通道。第二節(jié) S3C44B0X概述S3C44B1112個通用DMA通道/2個帶外部請求引腳的DMA通道。2個帶有握手協(xié)議的UART和1個SIO。1個多主的I2C總線控制器。1個IIS總線控制器。5個PWM定時器及1個內部定時器??撮T狗定時器。71個通用可編程I/O口,8個外部中斷源。功耗控制模式是正常、低、休眠和停止。8路10位ADC。具有日歷功能的RTC(實時時鐘)。PLL時鐘發(fā)生器。2個通用DMA通道/2個帶外部請求引腳的DMA通道。1126.2.1S3C44B0X引腳及信號描述S3C44B0X引腳如圖6.3所示。6.2.1S3C44B0X引腳及信號描述S3C44113S3C44B0X引腳信號的詳細描述見表6.1。表6.1S3C44B0X引腳信號詳細描述嵌入式最小系統(tǒng)設計課件114嵌入式最小系統(tǒng)設計課件115嵌入式最小系統(tǒng)設計課件116嵌入式最小系統(tǒng)設計課件117嵌入式最小系統(tǒng)設計課件118嵌入式最小系統(tǒng)設計課件119嵌入式最小系統(tǒng)設計課件120嵌入式最小系統(tǒng)設計課件1216.2.2S3C44B0X特性1.體系結構集成了手持設備和通用嵌入式系統(tǒng)應用的解決方案。16/32位RISC體系結構和ARM7TDMI處理器內核強大的指令體系。Thumb代碼壓縮機,最大代碼密度同時保持了32位指令的性能?;贘TAG的片上集成ICE調試支持解決方案。32×8的硬件乘法器。實現(xiàn)低功耗SAMBAII(三星ARM處理器嵌入式微控制器總線體系結構)的新型總線結構。6.2.2S3C44B0X特性1.體系結構1222.系統(tǒng)管理器支持大、小端模式(通過外部引腳來選擇)。包含8個地址空間,每個地址空間為32MB,總共有256MB。所有地址空間都可以通過編程設置為8位、16位或32位寬數(shù)據(jù)對齊訪問。8個地址空間中,6個地址空間可用于ROM、SRAM等存儲器,2個用于ROM、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論