中科大軟院嵌入式期末總結(jié)_第1頁(yè)
中科大軟院嵌入式期末總結(jié)_第2頁(yè)
中科大軟院嵌入式期末總結(jié)_第3頁(yè)
中科大軟院嵌入式期末總結(jié)_第4頁(yè)
中科大軟院嵌入式期末總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、33/33復(fù)習(xí)提綱:(C語(yǔ)言翻譯匯編)概述1. 嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置國(guó)內(nèi)普遍認(rèn)同的嵌入式系統(tǒng)定義為:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。2.嵌入式系統(tǒng)的幾個(gè)重要特征(簡(jiǎn)述5特征)(1) 嵌入式系統(tǒng)工業(yè)是不可壟斷的高度分散的工業(yè) 從某種意義上來(lái)說(shuō),通用計(jì)算機(jī)行業(yè)的技術(shù)是壟斷的。嵌入式系統(tǒng)則不同,它是一個(gè)分散的工業(yè),充滿(mǎn)了競(jìng)爭(zhēng)、機(jī)遇及創(chuàng)新,沒(méi)有哪一個(gè)系列的處理器和操作系統(tǒng)能夠壟斷全部市場(chǎng)。(2)操作系統(tǒng)內(nèi)核小由于嵌入式系統(tǒng)一般是應(yīng)用于小型電子裝置的,系統(tǒng)資源相對(duì)有限,所以?xún)?nèi)核較之傳

2、統(tǒng)的操作系統(tǒng)要小得多。比如ENEA公司的OSE分布式系統(tǒng),內(nèi)核只有5K,而Windows的內(nèi)核則要大得多。(3)專(zhuān)用性強(qiáng)嵌入式系統(tǒng)的個(gè)性化很強(qiáng),其中的軟件系統(tǒng)和硬件的結(jié)合非常緊密,一般要針對(duì)硬件進(jìn)行系統(tǒng)的移植。即使在同一品牌、同一系列的產(chǎn)品中也需要根據(jù)系統(tǒng)硬件的變化和增減不斷進(jìn)行修改。同時(shí)針對(duì)不同的任務(wù),往往需要對(duì)系統(tǒng)進(jìn)行較大更改,程序的編譯下載要和系統(tǒng)相結(jié)合,這種修改和通用軟件的“升級(jí)”是完全不同的概念。 (4)系統(tǒng)精簡(jiǎn)嵌入式系統(tǒng)一般沒(méi)有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,不要求其功能設(shè)計(jì)及實(shí)現(xiàn)上過(guò)于復(fù)雜,這樣一方面利于控制系統(tǒng)成本,同時(shí)也利于實(shí)現(xiàn)系統(tǒng)安全。(5)高實(shí)時(shí)性O(shè)S這是嵌入式軟件的基本要

3、求,而且軟件要求固態(tài)存儲(chǔ),以提高速度。軟件代碼要求高質(zhì)量和高可靠性、實(shí)時(shí)性。 6)嵌入式軟件開(kāi)發(fā)走向標(biāo)準(zhǔn)化嵌入式系統(tǒng)的應(yīng)用程序可以沒(méi)有操作系統(tǒng)直接在芯片上運(yùn)行。為了合理地調(diào)度多任務(wù)、利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專(zhuān)家?guī)旌瘮?shù)接口,用戶(hù)必須自行選配RTOS(RealTime Operating System)開(kāi)發(fā)平臺(tái),這樣才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開(kāi)發(fā)時(shí)間,保障軟件質(zhì)量。嵌入式系統(tǒng)開(kāi)發(fā)需要開(kāi)發(fā)工具和環(huán)境由于其本身不具備自主開(kāi)發(fā)能力,即使設(shè)計(jì)完成以后,用戶(hù)通常也是不能對(duì)其中的程序功能進(jìn)行修改,必須有一套開(kāi)發(fā)工具和環(huán)境才能進(jìn)行開(kāi)發(fā)。這些工具和環(huán)境一般是基于通用計(jì)算機(jī)上的軟硬件設(shè)備以及各種邏

4、輯分析儀、混合信號(hào)示波器等。開(kāi)發(fā)時(shí)往往有主機(jī)和目標(biāo)機(jī)的概念,主機(jī)用于程序的開(kāi)發(fā),目標(biāo)機(jī)作為最后的執(zhí)行機(jī),開(kāi)發(fā)時(shí)需要交替結(jié)合進(jìn)行。嵌入式系統(tǒng)運(yùn)行環(huán)境差異很大:嵌入式系統(tǒng)比通用PC系統(tǒng)資源少得多:一般的嵌入式系統(tǒng)具有低功耗、體積小、集成度高、成本低等特點(diǎn):建立完整的嵌入式系統(tǒng)的系統(tǒng)測(cè)試和可靠性評(píng)估體系,保證嵌入式系統(tǒng)高效、可靠、穩(wěn)定工作:具有較長(zhǎng)的生命周期嵌入式系統(tǒng)的組成(最后的圖,有印象)嵌入式硬件系統(tǒng)嵌入式處理器各種類(lèi)型存儲(chǔ)器模擬電路及電源接口控制器及接插件嵌入式軟件系統(tǒng)實(shí)時(shí)操作系統(tǒng)(RTOS)板級(jí)支持包(BSP)設(shè)備驅(qū)動(dòng)(Device Driver)協(xié)議棧(Protocol Stack)應(yīng)用

5、程序(Application)4.嵌入式系統(tǒng)的實(shí)時(shí)性二、嵌入式系統(tǒng)設(shè)計(jì)方法、過(guò)程(2.3ppt)1.交叉開(kāi)發(fā)環(huán)境、先在通用PC機(jī)上編程,然后通過(guò)交叉編譯鏈接,將程序做成目標(biāo)平臺(tái)上可以運(yùn)行的二進(jìn)制代碼格式。最后將程序下載到目標(biāo)平臺(tái)上的特定位置由目標(biāo)板上啟動(dòng)代碼運(yùn)行這段二進(jìn)制代碼。交叉開(kāi)發(fā):在一臺(tái)通用計(jì)算機(jī)上進(jìn)行軟件的編輯編譯,然后下載到嵌入式設(shè)備中運(yùn)行調(diào)試的開(kāi)發(fā)方式。 開(kāi)發(fā)計(jì)算機(jī)一般稱(chēng)宿 主機(jī),嵌入式設(shè)備稱(chēng)為目標(biāo)機(jī),在宿主機(jī)上編譯好的程序,下載到目標(biāo)機(jī)上運(yùn)行。交叉開(kāi)發(fā)環(huán)境一般由運(yùn)行于宿主機(jī)上的交叉開(kāi)發(fā)軟件、宿主機(jī)到目標(biāo)機(jī)的調(diào)試通道組成。如基于ARM9、COS的嵌入式系統(tǒng)開(kāi)發(fā),需要安裝交叉編譯工具

6、ADS ?;赩xWorks的開(kāi)發(fā)環(huán)境:Tornado 幾種常用的調(diào)試方法、指令集模擬器 一種利用PC機(jī)端的仿真開(kāi)發(fā)軟件模擬調(diào)試的方法。 如:Skyeye 清華大學(xué)陳渝主持的自由軟件項(xiàng)目, ARM公司的ARMulator模擬器駐留監(jiān)控軟件 駐留監(jiān)控程序運(yùn)行在目標(biāo)板上,PC機(jī)端調(diào)試軟件可通過(guò)并口、串口、網(wǎng)口及之交互,以完成程序執(zhí)行、存儲(chǔ)器及寄存器讀寫(xiě)、斷點(diǎn)設(shè)置等任務(wù) ARM公司的Angel是長(zhǎng)駐在目標(biāo)機(jī)Flash中的監(jiān)控程序JTAG仿真器(基于JTAG的ICD(In-Circuit Debugger) 通過(guò)ARM芯片的JTAG邊界掃描口及ARM核進(jìn)行通信,不占用目標(biāo)板的資源,是目前使用最廣泛的調(diào)

7、試手段在線仿真器ICE(In-Circuit Emulator) 使用仿真頭代替目標(biāo)板上的CPU,可以完全仿真ARM芯片的行為。但結(jié)構(gòu)較復(fù)雜,價(jià)格昂貴,通常用于ARM硬件開(kāi)發(fā)中(ARM-LINUX開(kāi)發(fā)一般過(guò)程不要求)三、Bootloader(3個(gè)常用)1、什么是bootloaderBootloader,為引導(dǎo)加載程序,是嵌入式系統(tǒng)加電后運(yùn)行的第一段代碼,相當(dāng)于PC機(jī)的BIOS。 Bootloader的位置:通常固化在硬件上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上,加電后自啟動(dòng)。Bootloader功能:初始化硬件設(shè)備、建立內(nèi)存空間的映射圖(有的CPU沒(méi)有內(nèi)存映射功能如S3C44B0 x) ,將系統(tǒng)的軟、硬件環(huán)境帶

8、到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶(hù)應(yīng)用程序準(zhǔn)備好正確的環(huán)境。 Bootloader的地址:在嵌入式系統(tǒng)中,系統(tǒng)加電復(fù)位后,幾乎所有的 CPU都從由復(fù)位地址上取指令。Bootloader操作模式 兩種不同的操作模式:“啟動(dòng)加載”模式和“下載”模式。其區(qū)別對(duì)于開(kāi)發(fā)人員才有意義。從最終用戶(hù)的角度看,Bootloader的作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式及下載模式的區(qū)別。啟動(dòng)加載(Bootloading)模式啟動(dòng)加載模式稱(chēng)為“自舉”(Autonomous)模式。即Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶(hù)

9、的介入。啟動(dòng)加載模式是 Bootloader的正常工作模式,在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Bootloader必須工作在這種模式下。 下載(Downloading)模式下載方式:在這種模式下,目標(biāo)機(jī)上的Bootloader將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件。下載內(nèi)容及存儲(chǔ):主要是下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被Bootloader保存到目標(biāo)機(jī)的RAM中,然后再被 Bootloader寫(xiě)到目標(biāo)機(jī)上的FLASH 類(lèi)固態(tài)存儲(chǔ)設(shè)備中。 下載模式應(yīng)用場(chǎng)合:Bootloader的這種模式通常在第一次安裝內(nèi)核及根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用到這種工作模式。

10、用戶(hù)應(yīng)用接口:工作于這種模式下的Bootloader通常都會(huì)向它的終端用戶(hù)提供一個(gè)簡(jiǎn)單的命令行接口。 如在RedBoot下,將出現(xiàn)“RedBoot”提示符;在vivi Bootloader 下出現(xiàn)“vivi”提示符。Bootloader啟動(dòng)過(guò)程Bootloader的啟動(dòng)可以分為兩個(gè)階段1、第一階段階段1主要包含依賴(lài)于CPU體系結(jié)構(gòu)及硬件設(shè)備的初始化等。通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn)。這個(gè)階段的任務(wù)有5:(1)、基本的硬件設(shè)備初始化這是 Bootloader 一開(kāi)始就執(zhí)行的操作,其目的是為階段2 的執(zhí)行、以及隨后kernel 的執(zhí)行準(zhǔn)備好一些基本的硬件環(huán)境。 它通常包括以下工作: 關(guān)閉處理器內(nèi)部指令/數(shù)

11、據(jù)cache等 關(guān)閉中斷 關(guān)閉看門(mén)狗 配置PLL 配置內(nèi)存 初始化各工作模式的堆棧 配置中斷 拷貝RW段,初始化ZI段 (2)、為階段2代碼準(zhǔn)備RAM空間為了獲得更快的執(zhí)行速度,通常把 階段2 的代碼加載到 RAM 空間中來(lái)執(zhí)行。 準(zhǔn)備RAM空間考慮的因素:階段2代碼大小、堆棧、頁(yè)大?。?KB的倍數(shù))、安排位置等。 (3)、拷貝階段2代碼到RAM空間(4)、設(shè)置好堆棧堆棧指針sp設(shè)置在1MB 的 RAM 空間的最頂端(堆棧向下生長(zhǎng))。(5)、跳轉(zhuǎn)到階段2的C程序入口點(diǎn)在上述一切都就緒后,就可以跳轉(zhuǎn)到 Bootloader 的 stage2 去執(zhí)行了。2、第二階段階段2通常用C語(yǔ)言來(lái)實(shí)現(xiàn),以便實(shí)

12、現(xiàn)更復(fù)雜的功能,也使程序有更好的可讀性和可移植性。這個(gè)階段的主要任務(wù)有5:(1)、初始化本階段要使用到的硬件至少初始化一個(gè)串口,以便和終端用戶(hù)進(jìn)行 I/O 輸出信息等。 (2)、檢測(cè)系統(tǒng)內(nèi)存映射(memory map)所謂內(nèi)存映射,就是指在整個(gè)物理地址空間中有哪些地址范圍被分配用來(lái)作為系統(tǒng)的 RAM 單元。為后面使用RAM、運(yùn)行程序做好準(zhǔn)備。(3)、將kernel和根文件系統(tǒng)映像從flash讀到RAM空間 (4)、為kernel設(shè)置啟動(dòng)參數(shù)這是在調(diào)用內(nèi)核之前應(yīng)該做的準(zhǔn)備工作。Linux 2.4.x 以后的內(nèi)核都期望以標(biāo)記列表(tagged list)的形式來(lái)傳遞啟動(dòng)參數(shù)。啟動(dòng)參數(shù)標(biāo)記列表方法:

13、以ATAG_CORE標(biāo)記開(kāi)始,以ATAG_NONE標(biāo)記結(jié)束。在嵌入式 Linux 系統(tǒng)中,通常需要由 Boot Loader 設(shè)置的啟動(dòng)參數(shù)有:ATAG_CORE、ATAG_MEM(內(nèi)存映射)、ATAG_NONE等。 (5)、調(diào)用內(nèi)核Bootloader調(diào)用Linux kernel的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條指令處。在跳轉(zhuǎn)時(shí)必須滿(mǎn)足下列條件:1)、CPU寄存器的設(shè)置:R0為0;R1為機(jī)器類(lèi)型ID;R2為啟動(dòng)參數(shù),標(biāo)記列表在RAM中的起始基地址。 (機(jī)器類(lèi)型參見(jiàn) linux/arch/arm/tools/mach-types目錄)2)、CPU模式: CPU必須設(shè)置為SVC模式,必須禁止中斷(I

14、RQs和FIQs)。3)、 MMU 和 Cache的設(shè)置:MMU 必須關(guān)閉;指令 Cache 可以打開(kāi)也可以關(guān)閉; 數(shù)據(jù) Cache 必須關(guān)閉。4、有哪些常用的BootloaderBootloader是嚴(yán)重地依賴(lài)于硬件而實(shí)現(xiàn)的。每種不同體系結(jié)構(gòu)的處理器都有不同的Bootloader。1、vivivivi是韓國(guó)Mizi公司開(kāi)發(fā)的Bootloader,適用于ARM9處理器。2、RedBoot RedBoot即紅帽(Red Hat)嵌入式調(diào)試引導(dǎo)程序,是一種用于嵌入式系統(tǒng)的獨(dú)立開(kāi)放源代碼引導(dǎo)/裝載器。3、U-Boot U-Boot(Universal Bootloader)由德國(guó)DENX小組開(kāi)發(fā),是

15、一款目前功能較為強(qiáng)大的開(kāi)源Bootloader程序,它支持多種處理器平臺(tái),包括ARM、PowerPC、MIPS等。四、嵌入式微處理器1、嵌入式系統(tǒng)硬件基礎(chǔ)知識(shí)(體系結(jié)構(gòu),指令集)1)馮諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)馮諾依曼體系結(jié)構(gòu)數(shù)據(jù)和指令都存儲(chǔ)在一個(gè)存儲(chǔ)器中的計(jì)算機(jī)被稱(chēng)為馮諾依曼機(jī)指令的執(zhí)行周期T1)取指令(Instruction Fetch):TF2)指令譯碼(Instruction Decode):TD3)執(zhí)行指令(Instruction Execute):TE4)存儲(chǔ)(Storage):TS每條指令的執(zhí)行周期:T= TF+TD+TE+TS馮諾依曼體系結(jié)構(gòu)特點(diǎn):1)數(shù)據(jù)及指令都存儲(chǔ)在存儲(chǔ)器

16、中2)被大多數(shù)計(jì)算機(jī)所采用3)馮諾依曼體系: 英特爾公司的8086,英特爾公司的其他中央處理器、ARM的ARM7、MIPS公司的MIPS處理器。哈佛體系結(jié)構(gòu)數(shù)據(jù)和指令存儲(chǔ)在各自獨(dú)立的存儲(chǔ)器中的計(jì)算機(jī)體系結(jié)構(gòu)稱(chēng)為哈佛體系結(jié)構(gòu)哈佛體系結(jié)構(gòu)特點(diǎn):1)程序存儲(chǔ)器及數(shù)據(jù)存儲(chǔ)器分開(kāi)2)提供了較大的數(shù)據(jù)存儲(chǔ)器帶寬3)適合于數(shù)字信號(hào)處理4)大多數(shù)DSP都是哈佛結(jié)構(gòu)5)Microchip公司的PIC16芯片 、摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。 很難在哈佛機(jī)上編寫(xiě)出一個(gè)自修改程序(寫(xiě)入數(shù)據(jù)值然后使用這些值作為指令的程序

17、CISC及RISCCISC:復(fù)雜指令集(Complex Instruction Set Computer)8/2原則:80%的程序只使用20%的指令具有大量變長(zhǎng)形式的不同指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行。PUSH AXMOV AL,80HMOV AX,1090HRISC:精簡(jiǎn)指令集(Reduced Instruction Set Computer)RISC是在開(kāi)發(fā)高性能微處理器過(guò)程中的一個(gè)進(jìn)步在通道中只包含最有用的指令(少而簡(jiǎn)單)確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單指令格式和長(zhǎng)度固定,且指令類(lèi)型很少、指令功能簡(jiǎn)單、尋址方式少而簡(jiǎn)單,指令譯碼控制器采用硬布線邏輯

18、,這樣易于流水線的實(shí)現(xiàn),進(jìn)而獲得高性能; 由于RISC指令系統(tǒng)強(qiáng)調(diào)了對(duì)稱(chēng)、均勻、簡(jiǎn)單,使得程序的優(yōu)化編譯效率更高;大多數(shù)指令單周期完成;分開(kāi)的load-store結(jié)構(gòu)的存取指令,也只有l(wèi)oad-store結(jié)構(gòu)的存取指令訪問(wèn)存儲(chǔ)器,而數(shù)據(jù)處理指令只訪問(wèn)寄存器。而CISC處理器一般允許將存儲(chǔ)器中的數(shù)據(jù)作為數(shù)據(jù)處理指令的操作數(shù);流水線、超標(biāo)量緩存如何減少CPU及內(nèi)存之間的速度差異?(4種)1、為什么采用高速緩存微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。2、高速緩存的工作原理高速緩存是一種小型、快速的存儲(chǔ)器,它保存部分主存內(nèi)容的拷貝。 總線和總線橋ARM微控制器使用的是A

19、MBA總線體系結(jié)構(gòu)AMBA(Advanced Microcontroller Bus Architecture)是ARM公司公布的總線標(biāo)準(zhǔn),先進(jìn)的AMBA規(guī)范定義了三種總線: AHB總線(Advanced High-performance Bus):用于連接高性能系統(tǒng)模塊。它支持突發(fā)數(shù)據(jù)傳輸方式及單個(gè)數(shù)據(jù)傳輸方式,所有時(shí)序 參考同一個(gè)時(shí)鐘沿。 ASB總線(Advanced System Bus):用于連接高性能系統(tǒng)模塊,它支持突發(fā)數(shù)據(jù)傳輸模式。 APB總線(Advance Peripheral Bus):是一個(gè)簡(jiǎn)單接口支持低性能的外圍接口。 ARM編程模型(2工作狀態(tài),7種模式,重點(diǎn))ARM處

20、理器的幾大特點(diǎn)如下:小體積、低功耗、成本低、高性能;支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;大量使用寄存器,大多數(shù)數(shù)據(jù)操作都在寄存器中完成,指令執(zhí)行速度更快;尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;指令長(zhǎng)度固定; 全球眾多的合作伙伴。當(dāng)前ARM體系結(jié)構(gòu)的擴(kuò)充包括:Thumb:16位指令集,用以改善代碼密度;DSP:用于DSP應(yīng)用的算術(shù)運(yùn)算指令集;Jazeller:允許直接執(zhí)行Java代碼的擴(kuò)充。ARM7TDMI 處理器有兩種工作狀態(tài):*ARM - 32-bit, 按字排列的ARM指令集Thumb -16-bit, 按半字排列的Thumb指令集測(cè)試編譯器屬哪種模式

21、下面這段代碼可以用來(lái)測(cè)試一下你的編譯器是大端模式還是小端模式: short int x;char x0,x1;x=0 x1122;x0=(char*)&x)0; /低地址單元x1=(char*)&x)1; /高地址單元若x0=0 x11,則是大端; 若x0=0 x22,則是小端上面的程序還可以看出,數(shù)據(jù)尋址時(shí),用的是低位字節(jié)的地址。 ARM 指令集中常用指令(尋址方式、數(shù)據(jù)處理指令、加載/存儲(chǔ)指令等)*匯編語(yǔ)言及C/C+的混合編程(3種編程方式,APCS,ATPCS)APCS(ARM Produce Call Standard)是ARM程序中子程序調(diào)用的基本規(guī)則,目的是為了使單獨(dú)編譯的C語(yǔ)言程

22、序和匯編程序之間能夠相互調(diào)用。這些基本規(guī)則包括子程序調(diào)用過(guò)程中寄存器的使用規(guī)則、數(shù)據(jù)棧的使用規(guī)則和參數(shù)的傳遞規(guī)則。 匯編語(yǔ)言及C/C+的混合編程通常有以下幾種方式: 在C/C代碼中嵌入?yún)R編指令。 在匯編程序和C/C的程序之間進(jìn)行變量的互訪。 匯編程序、C/C程序間的相互調(diào)用。 在以上的幾種混合編程技術(shù)中,必須遵守一定的調(diào)用規(guī)則,如物理寄存器的使用、參數(shù)的傳遞等。 一般情況: 程序的初始化部分用匯編語(yǔ)言完成, 然后用C/C完成主要的編程任務(wù), 匯編程序和C/C程序之間一般沒(méi)有參數(shù)的傳遞,也沒(méi)有頻繁的相互調(diào)用,因此,整個(gè)程序的結(jié)構(gòu)顯得相對(duì)簡(jiǎn)單,容易理解。 5、嵌入式程序設(shè)計(jì)技巧(時(shí)間換空間,8個(gè)例

23、子)變量定義參數(shù)傳遞循環(huán)條件以空間換時(shí)間數(shù)學(xué)方法解決問(wèn)題使用位操作嵌入?yún)R編五、硬件系統(tǒng)結(jié)構(gòu)1、S3C2410存儲(chǔ)系統(tǒng)組織(8個(gè)端口,確定寬度)S3C2410X有117個(gè)輸入/輸出端口。這些端口是:A口(GPA):23個(gè)輸出口B口(GPB):11個(gè)輸入/輸出口C口(GPC):16個(gè)輸入/輸出口D口(GPD):16個(gè)輸入/輸出口E口(GPE):16個(gè)輸入/輸出口F口(GPF):8個(gè)輸入/輸出口G口(GPG):16個(gè)輸入/輸出口H口(GPH):11個(gè)輸入/輸出口S3C2410的外設(shè)管理3、I/O口的組織及一般應(yīng)用(引腳)、UART S3C2410 的UART(通用異步串行口)有三個(gè)獨(dú)立的異步串行I/

24、O 端口:UART0、UART1、UART2,每個(gè)串口都可以在中斷和DMA 兩種模式下進(jìn)行收發(fā)。UART支持的最高波特率達(dá)230.4kbps。每個(gè)UART 包含:波特率發(fā)生器、接收器、發(fā)送器和控制單元。波特率發(fā)生器以PCLK或UCLK為時(shí)鐘源。發(fā)送器和接收器各包含1個(gè)16 字節(jié)的FIFO 寄存器和移位寄存器。 S3C2410 的3個(gè)UART都有遵從1.0規(guī)范的紅外傳輸功能, UART0、UART1有完整的握手信號(hào),可以連接MODEM。當(dāng)發(fā)送數(shù)據(jù)的時(shí)候,數(shù)據(jù)先寫(xiě)到FIFO 然后拷貝到發(fā)送移位寄存器,然后從數(shù)據(jù)輸出端口(TxDn)依次被移位輸出。被接收的數(shù)據(jù)也同樣從接收端口(RxDn)移位輸入到移

25、位寄存器,然后拷貝到FIFO 中。編寫(xiě)一程序,使用S3C2410X的UART2進(jìn)行串行數(shù)據(jù)收發(fā),要求用脈沖請(qǐng)求中斷的方式、使用收/發(fā)FIFO,8個(gè)數(shù)據(jù)位、1個(gè)停止位、不校驗(yàn),波特率為125kb/s。設(shè)Pclk為50MHz。(提示:主程序?qū)ART2初始化、引腳配置、中斷初始化等,并進(jìn)行一次發(fā)送;中斷服務(wù)程序進(jìn)行數(shù)據(jù)收發(fā),標(biāo)簽清除中斷請(qǐng)求標(biāo)志和中斷服務(wù)標(biāo)志)解:(1)計(jì)算波特率除數(shù):由公式: UBRDIVn=(int)(CLK/( f B*16) 1 這里:Pclk=50MHz, f B = 125kb/s計(jì)算得: UBRDIVn=25 -1=24(2)UART2控制寄存器:線路控制寄存器: U

26、LCON2=0 0 000 0 11=0 x03含義:非紅外、不校驗(yàn)、 1個(gè)停止位、 8個(gè)數(shù)據(jù)位控制寄存器: UCON2=0b 0 0 0 0 0 0 0 01 01=0 x05含義:選Pclk、發(fā)/收中斷脈沖請(qǐng)求、關(guān)閉接收超時(shí)中斷、允許接收錯(cuò)誤中斷、不回送、不發(fā)送暫停信號(hào)、發(fā)/收用中斷方式。FIFO控制寄存器:UFCON2=0b 10 01 0 0 0 1=0 x91含義:發(fā)/收FIFO選8字節(jié)觸發(fā)、保留位為0、不復(fù)位發(fā)/收FIFO、使能FIFO。(3)引腳配置 需要設(shè)置TxD2、RxD2,它們對(duì)應(yīng)GPH6、GPH7,在GPH配置寄存器GPHCON中的位置為:0b 1 0 1 0 方法:GP

27、HCON= GPHCON&(0 xF12)|(0 xA12) (4)中斷寄存器設(shè)置中斷模式寄存器:INTMOD&=(115)INT_UART2位于第15位,將UART2設(shè)置為IRQ中斷中斷屏蔽寄存器:INTMSK&=(115) 中斷優(yōu)先級(jí)寄存器PRIORITY:不設(shè)置,使用固定優(yōu)先級(jí)。子中斷屏蔽寄存器:INTSUBMSK&=(76) INT_ERR2、INT_TXD2、INT_RXD2位于子中斷屏蔽寄存器中的8、7、6位。(5)在中斷服務(wù)程序中對(duì)寄存器的操作清除中斷標(biāo)志寄存器相應(yīng)位:SRCPND&=(115)清除中斷服務(wù)寄存器相應(yīng)位:INTPND&=(115)時(shí)鐘和功耗管理(解決方案 簡(jiǎn)述24

28、10的功耗解決方案)時(shí)鐘功能有兩個(gè)鎖相環(huán)MPLL、UPLL(Phase-Locked Loop )產(chǎn)生系統(tǒng)所需要的不同頻率的時(shí)鐘。(1)為CPU產(chǎn)生FCLK時(shí)鐘(2)為AHB產(chǎn)生HCLK時(shí)鐘使用HCLK的設(shè)備:中斷控制器、存儲(chǔ)器管理器、DMA控制器、LCD控制器、FLASH控制器、USB Host(不用PLL時(shí))、總線控制器、片外設(shè)備。(3)為APB產(chǎn)生PCLK時(shí)鐘使用PCLK的設(shè)備: 117個(gè)通用I/O口GPIO、ADC、5個(gè)定時(shí)器及4個(gè)PWM、3個(gè)UART、2個(gè)SPI、IIC、USB Device (不用PLL時(shí))、RTC、WDT、SD卡接口、IIS接口為USB (Host and Dev

29、ice)產(chǎn)生UCLK時(shí)鐘(48MHz)2、電源管理功能具有4種電源管理模式:正常模式、慢時(shí)鐘模式、空閑模式、掉電模式。 (1)正常模式: 1)鎖相環(huán)工作;2)為CPU和所 有片內(nèi)外設(shè)提供時(shí)鐘。 此模式系統(tǒng)功耗最大。(2)慢時(shí)鐘模式:鎖相環(huán)不工作,CPU等直接使用原始時(shí)鐘、或原始時(shí)鐘的分頻工作。此模式工作時(shí)鐘頻率低而使功耗低,并且鎖相環(huán)不工作也使功耗降低。(3)空閑模式:停止為CPU提供時(shí)鐘,CPU不工作(其外設(shè)均工作)。退出方法:任何中斷請(qǐng)求可喚醒CPU工作,退出空閑模式。(4)斷電模式:時(shí)鐘模塊斷電,除了喚醒電路之外所有部分均不供電。系統(tǒng)需分成兩部分供電。此模式功耗最低。必須設(shè)置有外中斷退出

30、方法:用中斷喚醒。(1)外部中斷EINT015;(2)實(shí)時(shí)鐘報(bào)警中斷。如何降低2410的功耗在能夠滿(mǎn)足功能正常的前提下,盡可能選擇低電壓工作的CPU能夠在總體功耗方面得到較好的效果。對(duì)于已經(jīng)選定的CPU來(lái)講,降低供電電壓和工作頻率,也是一條節(jié)省功率的可行之路。CPU采用內(nèi)置Flash的方式如果可以通過(guò)選取合適的前后級(jí)芯片來(lái)避免Buffer的使用,對(duì)于能量來(lái)講是一個(gè)很大的節(jié)約。我們可以通過(guò)控制CPU進(jìn)入不同的模式來(lái)達(dá)到省電的目的關(guān)閉不需要的外設(shè)控制器在適當(dāng)?shù)那闆r下使用DC-DC的電壓轉(zhuǎn)換線路,可以有效地節(jié)約能量6、程序?qū)嵗?shí)時(shí)操作系統(tǒng)1、實(shí)時(shí)操作系統(tǒng)概念(可重入,任務(wù)集翻轉(zhuǎn))RTOS的基本特

31、征:高效的任務(wù)管理 1.支持多任務(wù) 2.優(yōu)先級(jí)管理 3.任務(wù)調(diào)度:基于優(yōu)先級(jí)的搶占式調(diào)度、時(shí)間片輪轉(zhuǎn)調(diào)度的算法 4.支持快速而確定的上下文切換快速靈活的任務(wù)間通信 1.信號(hào)量:二進(jìn)制、互斥、計(jì)數(shù)器 2.通信機(jī)制:消息隊(duì)列、管道等高度的可剪裁性動(dòng)態(tài)鏈接及部件增量加載快速有效的中斷和異常事件處理優(yōu)化的浮點(diǎn)支持動(dòng)態(tài)內(nèi)存管理可重入型函數(shù)可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)的破壞。可重入型函數(shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)數(shù)據(jù)不會(huì)丟失。可重入型函數(shù)或者只使用局部變量,即變量保存在CPU寄存器中或堆棧中,或?qū)θ肿兞坑枰员Wo(hù)。一個(gè)不可重入型函數(shù)的例子int Temp;Void swap (int *x,int*y)Temp=*x;*X=*Y;*y=Temp;使用以下技術(shù)之一即可使Swap()函數(shù)具有可重入性:l 把Temp定義為局部變量l調(diào)用Swap()函數(shù)之前關(guān)中斷,調(diào)用后再開(kāi)中斷

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論