基于ARM的串行通信系統(tǒng)設計_第1頁
基于ARM的串行通信系統(tǒng)設計_第2頁
基于ARM的串行通信系統(tǒng)設計_第3頁
基于ARM的串行通信系統(tǒng)設計_第4頁
基于ARM的串行通信系統(tǒng)設計_第5頁
免費預覽已結束,剩余17頁可下載查看

下載本文檔

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

文檔簡介

1、目錄1引言(或緒論)12系統(tǒng)的主要功3硬件電路設計及描述23.1 S3c2410與串口通信概述23.1.1 S3c2410處理器概述23.2 方案設計.63.3 電路設計73.3.1 電源設計73.3.2 晶振電路83.3.3 復位電路83.3.4 JTAG接口93.3.5 存儲器設計93.3.6用口電路114軟件設計流程及描述125實驗步驟.146源程序代碼.157課程設計體會368參考文獻.36一引言(或緒論)本課題以嵌入式系統(tǒng)設計原理和實際應用為核心,從理論上和技術方法上開展了一系列研究。主要工作有:1、全面系統(tǒng)地概述了嵌入式系統(tǒng)的發(fā)展過程和分類,及其在各個領域內(nèi)的應用,以及嵌入式系統(tǒng)的

2、發(fā)展方向;2、基于嵌入式系統(tǒng)設計原理的嵌入式開發(fā)平臺的設計的總體方案,從硬件和軟件兩個方面講述了嵌入式系統(tǒng)的設計思想和方法,及其可行性的論證;3、嵌入式系統(tǒng)硬件平臺的設計與調(diào)試,著重敘述了硬件平臺的整體設計方案,包括模塊的選型與接口電路的設計;總之,本文完成了嵌入式系統(tǒng)的硬件平臺構架、實時嵌入式操作系統(tǒng)的移植,為今后嵌入式系統(tǒng)的后繼開發(fā)提供了一個嵌入式平臺?;谇度胧较到y(tǒng)設計原理的嵌入式開發(fā)平臺的設計的總體方案,從硬件和軟件兩個方面講述了嵌入式系統(tǒng)的設計思想和方法,及其可行性的論證。嵌入式系統(tǒng)硬件平臺的設計與調(diào)試,著重敘述了硬件平臺的整體設計方案,包括各個設計模塊的選型與接口電路的設計。隨著世

3、界科技水平的發(fā)展,嵌入式系統(tǒng)以其小型、專用、易攜帶、可靠性高的特點,已經(jīng)在各個領域得到了廣泛的應用,如軍事國防、消費電子、通信設備、工業(yè)控制等。隨著嵌入式系統(tǒng)軟硬件技術的飛速發(fā)展,其應用領域必將更為廣闊,嵌入式系統(tǒng)的研究將會有非常廣泛的前景。本課題既可以使電子專業(yè)學生對ARM920T的嵌入式串口通信系統(tǒng)的實際應用有深入的了解,更重要的是培養(yǎng)了學生的軟硬件動手能力,是對學生所學專業(yè)知識、理論、技能和培養(yǎng)學生獨立完成基本科研任務能力的一個綜合檢驗,具有一定的效果和意義。二系統(tǒng)的主要功能2.1 申行數(shù)據(jù)的輸入和輸出、顯示、存儲;2.2 顯示當前時間日期、輸入和輸出數(shù)據(jù)的顯示和存儲、串行傳輸;2.3

4、參數(shù)設置:傳輸字符長度、存儲位置;2.4 菜單功能:如開始、結束、暫停、設置環(huán)境參數(shù)等;2.5 文件操作:讀文件、寫文件等1實驗周說明書三硬件電路設計及描述3.1 S3c2410與串口通信概述3.1.1 S3c2410處理器概述ARM微處理器結構1) RISC體系結構RISC結構優(yōu)先選取使用頻率最高的簡單指令,避免復雜指令;將指令長度固定,指令格式和尋址方式種類減少;以控制邏輯為主,不用或少用微碼控制等措施來達到上述目的。到目前為止,RISC體系結構也還沒有嚴格的定義,一般認為,RISC體系結構應具采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有23種;使用單周期指令,便于流水線操作執(zhí)行

5、;大量使用寄存器,數(shù)據(jù)處理指令只對寄存器進行操作,只有加載/存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率等特點。2) ARM微處理器的寄存器結構ARM處理器共有37個寄存器,被分為若干個組(BANK),同時,ARM處理器又有7種不同的處理器模式,如下表22在每一種處理器模式下均有一組相應的寄存器與之對應。表1ARM處理器的7種處理器模式處理藩模式描述用戶慢式<Useriusr)正常程序執(zhí)行的模式快速中斷模式”15fiq)用T高速數(shù)據(jù)傳輸和畫也處理外部中斷模式URQ.irq)用于通常的中斷處理特權模式(S.ervisonSve)供操作系統(tǒng)使冊的神像m模式數(shù)據(jù)訪問中生根式Abort,abt)

6、用感損存情及存儲保護kt工拈勺中畏式(Undefined.mdJ用于支耨制過軟件傷在硼件的處處理器系統(tǒng)模式(System>sys)用運行特權級的梯作鼐統(tǒng)住專3) ARM微處理器的指令結構ARM微處理器的在較新的體系結構中支持兩種指令集:ARM指令集和Thumb指令集。其中,ARM指令為32位的長度,Thumb指令為16位長度。Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節(jié)省30%40%以上的存儲空間,同時具備32位代碼的所2實驗周說明書有優(yōu)點。S3c2410是Samsung公司基于ARM920T內(nèi)核的嵌入式微處理器.本文以S3c2410為核心,配置了最基本外圍

7、電路構成了最小的嵌入式系統(tǒng),并在ADS上開發(fā)了啟動程序,完成硬件初始化,配置運行環(huán)境,申日調(diào)試功能。Samsung公司推出的16/32位RISC處理器S3c2410A,為手持設備和一般類型應用提供了低價格、低功耗、高性能小型微控制器的解決方案。為了降低整個系統(tǒng)的成本,S3C2410A提供了以下豐富的內(nèi)部設備:分開的16KB的指令Cache和16KB數(shù)據(jù)Cache,MMU虛擬存儲器管理,LCD控制器(支持STN&TFT),支持NANDFlash系統(tǒng)引導,系統(tǒng)管理器(片選邏輯和SDRAM控制器),3通道UART,4通道DMA,4通道PWM定時器,I/O端口,RTC,8通道10位ADC和觸摸

8、屏接口,IIC-BUS接口,IIC-BUS接口,USB主機,USB設備,SD主卡&MMC卡接口,2通道的SPI以及內(nèi)部PLL時鐘倍頻器。S3c2410A采用了ARM920T內(nèi)核,0.18um工藝的CMOS標準宏單元和存儲器單元。它的低功耗、精簡和出色的全靜態(tài)設計特別適用于對成本和功耗敏感的應用。同樣它還采用一種叫做AdvancedMicrocontrollerBusArchitecture(AMBA)新型總線結構。S3c2410A的顯著特性是它的CPU核心,是一個由AdvancedRISCMachines(ARM)有限公司設計的16/32位ARM920TRISC處理器。ARM920T實

9、現(xiàn)了MMU,AMBABUS和Harvard高速緩沖體系結構。這一結構具有獨立的16KB指令Cache和16KB數(shù)據(jù)Cache,每個都是由8字長的行(line)構成。3.1.2 用口通信串口通信的概念,即由口按位(bit)發(fā)送和接收字節(jié)通信協(xié)議是指通信雙方按照約定的數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟等規(guī)程來進行數(shù)據(jù)傳輸本次采用異步通信,其特點是通信雙方以一個字符(包括特定附加位)作為數(shù)據(jù)傳輸單位,且發(fā)送方傳送字符的間隔時間是不定的。在傳輸一個字符時總是從起始位開始,以停止位結束。如圖1所示:3實驗周說明書圖1.1申行數(shù)據(jù)幀格式S3c2410的UART提供3個獨立的異步串行通信端口,每個端口可

10、以基于中斷或者DMA進行操作。換句話說,UART控制器可以在CPU和UART之間產(chǎn)生一個中斷或者DMA請求來傳輸數(shù)據(jù)。UART在系統(tǒng)時鐘下運行可支持高達230.4K的波特率,如果使用外部設備提供的UEXTCLK,UART的速度還可以更高。每個UART通道各含有兩個16位的接收和發(fā)送FIFO。S3c2410的UART包括可編程的波特率,紅外接收/發(fā)送,一個或兩個停止位插入,5-8位數(shù)據(jù)寬度和奇偶校驗。每個UART包括一個波特率發(fā)生器、一個發(fā)送器、一個接收器和一個控制單元,如圖11-1所示。波特率發(fā)生器的輸入可以是PCLK或者UEXTCLK。發(fā)送器和接收器包含16位的FIFO和移位寄存器,數(shù)據(jù)被送

11、入FIFO,然后被復制到發(fā)送移位寄存器準備發(fā)送,然后數(shù)據(jù)按位從發(fā)送數(shù)據(jù)引腳TxDn輸出。同時,接收數(shù)據(jù)從接收數(shù)據(jù)引腳RxDn按位移入接收移位寄存器,并復制到FIFOo特性一RxD0,TxD0,RxD1,TxD1,RxD2,和TxD2基于中斷或者DMA操作一UARTCh0,1,和2具有IrDA1.0&16字節(jié)FIFO一UARTCh0和1具有nRTS0,nCTS0,nRTS1,和nCTS1一支持發(fā)生/接收握手2 .串行接口的物理層標準時間里*j;射<第卜十丁口1I。1卜降邊沿!ftH卜一個字符的JT始I*描I【ff平卜卜起始明n個字符Mr>*t個?希1JDlift)0I)0ID

12、1®實驗周說明書1)EIARS232C它在一種25針插彳(DB-25)上定義了串行通信的有關信號。在實際異步串行通信中,并不要求用全部的RS-232C信號,許多PC/XT兼容機僅用15針接插件(DB-15)來引出其異步串行I/O信號,而PC中更是大量采用9針接插件(DB-9)來擔當此任。圖1.3DB-25和DB-9引腳定義表2引腳說明RXD口而冬>1CD6DSRC2RXD73T7;DW-V3CTSt4DTR*RI5SG引腳序安1號轉林符號流向功能發(fā)送散相TXDDTE-DCKDTE發(fā)送串后散榭3接收RXDDTE-DCEMI接收串If數(shù)第謝求發(fā)話RTSDTE*DCEDTE睛求比西將

13、線路切換利發(fā)運方式5r允薇揖CTSPTE-PCE|DC!告好口值也略己偃劉叮以U'送數(shù)據(jù)6收據(jù)設看準犒好DSKDCEDCE準符好他號地倒號公共地8枝波門加DCDDTE'DCE表生收包迎那次出20陞據(jù)蟬密排備好DTRDTEDCE1ME海芾好22振仲指點RIDTE-DCE代小DCE:獨翳|。1乳出昵掘片2)信號電平規(guī)定RS-232C規(guī)定了雙極性的信號邏輯電平,它是一套負邏輯定義:-3V到-25V之間的電平表示邏輯“1:+3V至IJ+25V之間的電平表示邏輯”0:以上標準稱為EIA電平。PC/XT系列使用的信號電平是-12V和+12V,符合EIA標準,但在計算機內(nèi)部流動的信號都是TT

14、L電平,因此這中間需要用電平轉換電路。常用專門的RS-232接口芯片,如SP3232SP3220等,在TTL電平和EIA電平之間實現(xiàn)相互轉換。PC/XT系列以這種方式進行串行通信時,在波特率5實驗周說明書不高于9600bps的情況下,理論上通信線的長度限制為15米。3 .S3c2410由行口控制器S3c2410自帶3個異步由行口控制器,每個控制器有16字節(jié)的FIFO(先入先出寄存器),最大波特率115.2Kbps。每個UART有7種狀態(tài):溢出錯誤,校驗錯誤,幀錯誤,暫停態(tài),接收緩沖區(qū)準備好,發(fā)送緩沖區(qū)空,發(fā)送移位緩沖器空,這些狀態(tài)可以由相應的UTRSTATn或UERSTATn寄存器表示,并且與

15、發(fā)送接收緩沖區(qū)相對應的有錯誤緩沖區(qū)。串行接口:波特率的大小由一個專用的UART波特率分頻寄存器(UBRDIVn)控制,計算公式如下:UBRDIVn=(int)MCLK/(bps>16)-1其中:MCLK是系統(tǒng)時鐘,UBRDIVn的伯:必須在1(216-1)之間.例如:在40MHz的情況下,當波特率取115200時,UBRDIVn=(int)40000000/(115200X6)-1=(int)(21.7)-1=21-1=203.2 方案設計本系統(tǒng)是以嵌入式芯片S3c2410為核心的最小嵌入式系統(tǒng)構建方法,給出了S3c2410的復位電路、調(diào)試接口、電源電路、存儲器電路和串口電路等硬件組成。

16、6實驗周說明書圖1.5通信系統(tǒng)的組成框圖3.3 電路設計3.3.1 電源設計S3c2410工作時內(nèi)核需要1.8V電壓,I/。端口和外設需要3.3V電壓.VDDi/VDDiarm引腳口是供S3c2410內(nèi)核的1.8V電壓;VDDalive引腳是功能復位和端口狀態(tài)寄存器電壓.M12弓|腳RTCVDD是RTC模塊的1.8V電壓,用電池供電保證系統(tǒng)的掉電后保持實時時鐘.VDDOP引腳是I/O端口3.3V電壓;VDDMOP引腳是存儲器I/。端口電壓;還有一系列VSS引腳需要接到電源地上.3.3V電壓從SV用AMS1117-3.3轉換;1.8V從3.3V通過MIC5207-1.8轉換得到。實驗周說明書圖1

17、.6電源電路3.3.2晶振電路S3c2410內(nèi)部有時鐘管理模塊,有2個鎖相環(huán),其中MPLL能夠產(chǎn)生CPU卞頻FCLK,AHB總線外設時鐘HCLK和APB總線外設時鐘PCLK;UPLL產(chǎn)生USB模塊的時鐘。OM3,OM2都接地時,主時鐘源和USB模塊時鐘源都由外接晶振產(chǎn)生。在XTIpll和XTOpll之間連接主品振,可以選擇12MHz品振,通過內(nèi)部寄存器的設置產(chǎn)生不同頻率的FOLK,HCLK和PCLK;在XTIrtc和XTOrtc上需要接32.768kHz的晶振供RTC模塊使用.同時在MPLLCAP和UPLLCAP上也要外接5pF的環(huán)路濾波電容0圖1.7晶振電路8圖1.8復位電路實驗周說明書3.

18、3.3復位電路S3c2410的J12引腳為nRESET復位弓I腳,nRESET上給4個FOLK時間的低電平后就可以復位.可以設計如圖5所小的復位電路,其中上電復位是靠RC電路特性完成,開關二極管1N4148在手動復位時對電容起快速放電的作用,因此可以把復位電平快速拉到OV。反響門74HC14可以起到延時作用,保證有足夠的復位時間。11OiF此:NTESTO!»!IUIKlWA-|3.3.4 JTAG接口S3c2410有標準的JTAG接口,TCI(H6)為測試時鐘輸入;TDI(J1)為測試數(shù)據(jù)輸入;TDO(JS)為測試數(shù)據(jù)輸出;TMS(J3)為測試模式選擇,TMS用來設置JTAG接日處

19、于某種特定的測試式;nTRST(H5)為測試復位,輸入引腳,低電平有效。其nTRST,TMS,TCK,TDI需要接10K的上拉電阻。通過,JTAG日可以完成芯片測試或在線編程。3.3.5 存儲器設計S3c2410有32根數(shù)據(jù)線和27根地址線,因此地址線的尋址范圍為128M;但是S3C24109實驗周說明書還有8根存儲器芯片片選信號線nGCSO-nGCS7,因此總的尋址空間為128M*8=1G。NandFlash啟動模式下復位時S3c2410的存儲器映射。如當訪問物理地址0x08000000-0x10000000內(nèi)的地址則nGCSl自動為低電平,以此類推??芍猄DRAM只能連接在nGCS6和nG

20、CS7片選弓唧上。S3c2410提供了SDRAM的接口,其中包括nSRAS:行信號鎖存;nSCAS:列信號鎖存;nSCS酰是nGCS6):片選信號;SROMSHUM涮用4t01SRON4IUM相Him(hlSOOOOOO(h20X100)00000000(h.WMXX)(hwnooMdJkEOiKKXUOOO口皿據(jù)如hUKOJOOl-MMi42)nCC<3i1匾riGCS5iriGC57|表3DQM3:0:數(shù)據(jù)屏蔽;SCLI1:0;時鐘;SCKE:時鐘有效;nBE3:0:高/低字節(jié)有效;nWBE3:0:寫有效。MT48LC16M16A2P是4塊16位32M的SDRAM存儲器。MT48LC

21、16M16A2P的行地址13位為A0-A12,列地址9位為CAO-CA8,行和列地址是復用的。MT48LC16M16A2P包括4個塊,通過BA0,BA1的組合選擇塊。MT48LC16M16A2P是16位存儲器,因此數(shù)據(jù)線為DQ0-DQ15,還有CS片選,CLK時鐘,CKE時鐘使能,RAS行鎖存,CAS歹鎖存,WE寫使能等引腳.MT48LC16M16A2P和S3c2410的連接方法,其中BA0,BA1需要連接ADD24和ADDR25,通過S3c2410的說明可知,因為內(nèi)存總大小是64M因此塊選擇信號必須使用ADDR24和ADDR25。S3c2410內(nèi)部有NANDFlash控制器,支持從NADNF

22、lash啟動.K9F120864MFlash芯片和S3c2410的連接方式.S3c2410采用一組內(nèi)部寄存器來完成NANDFlash的操作.10實驗周說明書圖1.9存儲器連接電路3.3.6 用口電路S3c2410的DART提供了二個同步串行IO日,COMO的連接方式。串口數(shù)據(jù)的收發(fā)有查詢方式、中斷方式和DMA方式等,這些可以在UCONO寄存器中設置。UTXH0把要發(fā)送的數(shù)據(jù)寫入此寄存器。URXH0讀此寄存器獲得用日接收的數(shù)據(jù)。申日一般可以用程序運行信息的輸出和程序調(diào)試。圖1.10串口連接電路11實驗周說明書四軟件設計流程及描述用口在嵌入式系統(tǒng)中是一個重要的資源,常用來做輸入輸出設備,在后續(xù)的實

23、驗中也將使用串口的功能。用口的基本操作有三個:由口初始化、發(fā)送數(shù)據(jù)和接收數(shù)據(jù),這些操作都是通過訪問上節(jié)中描述的串口控制寄存器進行,下面將分別說明:1)由口初始化程序MMU_Init();初始化內(nèi)存管理單元/設置系統(tǒng)時鐘ChangeClockDivider(1,1);/1:2:4ChangeMPllValue(0xa1,0x3,0x1);/FCLK=202.8MHzPort_Init();初始化I/O口Uart_Init(0,115200);初始化由口Uart_Select(0);/選擇串口02)發(fā)送數(shù)據(jù)while(!(rUTRSTAT0&0x2);/等待發(fā)送緩沖空rUTXH0=data

24、;/將數(shù)據(jù)寫到數(shù)據(jù)端口3)接收數(shù)據(jù)while(rUTRSTAT0&0x1=0x0);/等待數(shù)據(jù)data=rURXH0;/讀取數(shù)據(jù)(三)設計步驟1 .硬件連接;2 .新建工程UART.mcp,編輯并添加以下三類文件:1) .s文件:2410init.s,2410slib.s;2) .h文件:def.h,option.h,2410addr.h,2410lib.h,2410slib.h,mmu.h;3) .c(C)文件:2410lib.c,Main.C,mmu.c;*文件說明:2410iMt.s初始化cpu、內(nèi)存等狀態(tài),完成后跳轉到C語言入口;2410swis.s軟中斷處理相關;2410sl

25、ib.s一庫中內(nèi)存管理等函數(shù)的調(diào)用;def.h宏定義;option.h一定義時鐘、地址、總線寬度等;2410addr.h-寄存器地址狀態(tài)定義;12實驗周說明書2410lib.h,2410lib.c-(C語言)前者聲明函數(shù)庫變量,后者定義庫中常用函數(shù)(如審口函數(shù));2410slib.h,2410slib.s-(匯編語言)前者聲明函數(shù)庫變量,后者定義庫中常用函數(shù)(如內(nèi)存管理等);mmu.h,mmu.c內(nèi)存管理單元的聲明和函數(shù)定義;test.c,Main.c,*.c定義系統(tǒng)運行方式(*.c表示以工程名命名的c文件以及其他可能用到的c文件);*3 .修改工程設置,如圖1.11、1.12所示:圖1.11

26、13實驗周說明書圖1.124 .編譯UART;5 .運行超級終端,選擇正確的串口號,并將串口設置為:波特率(115200)6 .運行程序,在超級終端中輸入的數(shù)據(jù)將回顯到超級終端上。五實驗步驟1 .本實驗使用實驗教學系統(tǒng)的CPU板,蟲口。在進行本實驗時,LCD電源開關、音頻的左右聲道開關、AD通道選擇開關、觸摸屏中斷選擇開關等均應處在關閉狀態(tài)。2 .在PC機并口和實驗箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜。使用串口線連接PC機串口1和實驗箱CPU板的串口,使用直連線連接底板由口2和PC機上的串口2之間的電纜。3 .打開超級終端,配置串口的屬性(如COM1),配置波特率為115200,

27、校驗位無,數(shù)據(jù)位為8,停止位為1,數(shù)據(jù)控制流為無;檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電,同時按住空格”鍵,進入VIVI狀態(tài)。4 .打開ADS1.2開發(fā)環(huán)境,從里面打開實驗程序實驗八uart.mcp項目文件,進行編譯。5 .編譯通過后,進入ADS1.2調(diào)試界面,加載實驗程序實驗八UART_DataDebug中的映象文件程序映像UART.axf。fDebufRelSrttiBC*L*戶口*LixlincsEiLruEfuiiCoiw-iui-dLi&«infctvtalx0x3000000)Ffbu;里0x30400000*firit24L0lFilt«(LE

28、llt)Output與tionj8Tidr£«tStHifWlitll日*ThreatS«<tih£iBuildZxtrtiBuntingS«ltL&csFiltWbtir七電Tre*sUMTy-SitlifLCSAfMCCMpilerAN1C+Co«pil«rThunhCCeApilerThwbCHCen-LtnktrENLidktrAMErmEU"torrStHinC::逢喜F黜霜口弓,英將串匚出苴上咨特軍工1152皿言整病E«p«rtT14實驗周說明書6 .再打開一個超級終端

29、1,進行設置(115200,8位數(shù)據(jù),1位停止位,無奇偶校驗);7 .在ADS調(diào)試環(huán)境下,全速運行映象文件。激活超級終端0,敲鍵盤,觀察超級終端0,超級終端1的內(nèi)容顯示!所敲鍵盤的字符應該在兩個超級終端上顯示出來。實驗的原理就是把鍵盤敲擊的字符通過PC機的串口發(fā)送給實驗箱上的ARM的CPU板的串口0,ARM的CPU板上的串口得到字符后,通過ARM把它送給CPU板上的串口0輸出給PC,以及通過底板上的串口1,送給PC機。這樣,就完成了由口間的收發(fā)數(shù)據(jù)。六源程序代碼#include<string.h>#include<math.h>#include<stdarg.h&

30、gt;#include<stdlib.h>#include<stdio.h>#include<ctype.h>/*- *-函數(shù)名稱:voidMMU_Init(void)- 函數(shù)說明:MMU的初始化- 輸入?yún)?shù):無- 輸出參數(shù):無*- */voidMMU_Init(void)inti,j;MMU_DisableDCache();MMU_DisableICache();/如果使用回寫,則應該清除DCachefor(i=0;i<64;i+)for(j=0;j<8;j+)MMU_CleanInvalidateDCacheIndex(i<<26

31、)|(j<<5);MMU_InvalidateICache();- if0MMU_EnableICache();#endifMMU_DisableMMU();MMU_InvalidateTLB();MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);/bank0MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_CNB);/bank1MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB);/bank2MMU_SetMTT(0x1800000

32、0,0x1ff00000,0x18000000,RW_NCNB);/bank3MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_NCNB);/bank4MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB);/bank515實驗周說明書MMU_SetMTT(0x30000000,0x30f00000,0x30000000,RW_CB);/bank6-1MMU_SetMTT(0x31000000,0x33e00000,0x31000000,RW_NCNB);/bank6-2MMU_SetMTT(0x33

33、f00000,0x33f00000,0x33f00000,RW_CB);/bank6-3MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB);/bank7MMU_SetMTT(0x40000000,0x5af00000,0x40000000,RW_NCNB);/SFR+StepSramMMU_SetMTT(0x5b000000,0xfff00000,0x5b000000,RW_FAULT);/notusedMMU_SetTTBase(_MMUTT_STARTADDRESS);MMU_SetDomain(0x55555550|DOMAIN1_A

34、TTR|DOMAIN0_ATTR);MMU_SetProcessId(0x0);MMU_EnableAlignFault();MMU_EnableMMU();MMU_EnableICache();MMU_EnableDCache();/DCacheshouldbeturnedonafterMMUisturnedon./*- 函數(shù)名稱:voidChangeRomCacheStatus(intattr)- 函數(shù)說明:改變cache內(nèi)訪問存儲器的屬性狀態(tài),attr=RW_CB,RW_CNB,RW_NCNB,RW_FAULT- 輸入?yún)?shù):intattr- 輸出參數(shù):無*/voidChangeRomCa

35、cheStatus(intattr)(inti,j;MMU_DisableDCache();MMU_DisableICache();/如果使用回寫,則應該清除DCachefor(i=0;i<64;i+)for(j=0;j<8;j+)MMU_CleanInvalidateDCacheIndex(i<<26)|(j<<5);MMU_InvalidateICache();MMU_DisableMMU();MMU_InvalidateTLB();MMU_SetMTT(0x00000000,0x07f00000,0x00000000,attr);/bank0MMU_S

36、etMTT(0x08000000,0x0ff00000,0x08000000,attr);/bank1MMU_EnableMMU();MMU_EnableICache();MMU_EnableDCache();/*- *-函數(shù)名稱:voidMMU_SetMTT(intvaddrStart,intvaddrEnd,intpaddrStart,intattr)- 函數(shù)說明:設定轉換表內(nèi)虛擬,物理地址,訪問屬性16實驗周說明書- 輸入?yún)?shù):intvaddrStart,intvaddrEnd,intpaddrStart,intattr- 輸出參數(shù):無*- */voidMMU_SetMTT(intvad

37、drStart,intvaddrEnd,intpaddrStart,intattr)(U32*pTT;inti,nSec;pTT=(U32*)_MMUTT_STARTADDRESS+(vaddrStart>>20);nSec=(vaddrEnd>>20)-(vaddrStart>>20);for(i=0;i<=nSec;i+)*pTT+=attr|(paddrStart>>20)+i)<<20);/*-程序段說明:以下函數(shù)為各異常模式服務子程序。設成死循環(huán)是為調(diào)試用,一旦發(fā)生此類異常,程序便跳入異常模式服務子程序,終止程序運行。

38、*/voidHaltUndef(void)(Uart_Printf("Undefinedinstructionexception.n");while(1);voidHaltSwi(void)(Uart_Printf("SWIexception.n");while(1);voidHaltPabort(void)(Uart_Printf("Pabortexception.n");while(1);voidHaltDabort(void)(Uart_Printf("Dabortexception.n");while(1)

39、;/*-程序段說明:以下函數(shù)均為初始化函數(shù)*/staticintdelayLoopCount=FCLK/10000/10;17實驗周說明書voidDelay(inttime)(/time=0:adjusttheDelayfunctionbyWatchDogtimer./time>0:thenumberoflooptime/i,adjust=0;if(time=0)(time=200;adjust=1;delayLoopCount=400;/PCLK/1M,Watch-dogdisable,1/64,interruptdisable,r

40、esetdisablerWTCON=(PCLK/1000000-1)<<8)|(2<<3);rWTDAT=0xffff;/forfirstupdaterWTCNT=0xffff;/resolution=64usanyPCLKrWTCON=(PCLK/1000000-1)<<8)|(2<<3)(1<<5);/Watch-dogtimerstartfor(;time>0;time-)for(i=0;i<delayLoopCount;i+);if(adjust=1)(rWTCON=(PCLK/1000000-1)<<8)|(2<<3);/Watch-dogtimer

溫馨提示

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

最新文檔

評論

0/150

提交評論