ARM嵌入式體系結構與接口技術(Cortex-A9版)全套課件_第1頁
ARM嵌入式體系結構與接口技術(Cortex-A9版)全套課件_第2頁
ARM嵌入式體系結構與接口技術(Cortex-A9版)全套課件_第3頁
ARM嵌入式體系結構與接口技術(Cortex-A9版)全套課件_第4頁
ARM嵌入式體系結構與接口技術(Cortex-A9版)全套課件_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章嵌入式ARM技術概論第1章嵌入式ARM技術概論.pptx第2章ARM開發(fā)環(huán)境搭建.pptx第3章ARM指令.pptx第4章ARM匯編程序設計.pptx第5章GPIO編程.pptx第6章ARM異常及中斷處理.pptx第7章串行通信接口.pptx第8章PWM定時器.pptx第9章看門狗定時器.pptx第10章RTC定時器.pptx第11章AD轉(zhuǎn)換器.pptx第12章I2C接口.pptx第13章SPI接口.pptxARM公司成立于1990年11月前身為Acorn計算機公司主要設計ARM系列RISC處理器內(nèi)核授權ARM內(nèi)核給生產(chǎn)和銷售半導體的合作伙伴ARM公司不生產(chǎn)芯片另外也提供基于ARM架構的開發(fā)設計技術軟件工具、評估板、調(diào)試工具、應用軟件、總線架構、外圍設備單元等ARM全球分布ARM合作伙伴SILICONDESIGNSUPPORTSOFTWARETRAININGCONSORTIAARM處理器的最新發(fā)展數(shù)據(jù)和指令類型ARM采用的是32位架構ARM約定:Byte:8bitsHalfword:16bits(2byte)Word:32bits(4byte)Doubleword:64-bits(8byte)(Cortex-A處理器)大部分ARMcore提供:ARM指令集(32-bit)Thumb指令集(16-bit)Cortex-A處理器16位和32位Thumb-2指令集16位和32位ThumbEE指令集程序計數(shù)器PC(r15)當處理器執(zhí)行在ARM狀態(tài):所有指令32bits寬所有指令必須word對齊所以pc值由bits[31:2]決定,bits[1:0]未定義(所以指令不能halfword/byte對齊)當處理器執(zhí)行在Thumb狀態(tài):所有指令16bits寬所有指令必須halfword對齊所以pc值由bits[31:1]決定,bits[0]未定義(所以指令不能byte對齊)當處理器執(zhí)行在Jazelle狀態(tài):所有指令8bits寬處理器執(zhí)行word存取一次取4條指令字節(jié)順序ARM可以用little/bigendian格式存取數(shù)據(jù)處理器工作模式ARM有8個基本工作模式:User:非特權模式,大部分任務執(zhí)行在這種模式FIQ:當一個高優(yōu)先級(fast)中斷產(chǎn)生時將會進入這種模式IRQ:當一個低優(yōu)先級(normal)中斷產(chǎn)生時將會進入這種模式Supervisor:當復位或軟中斷指令執(zhí)行時將會進入這種模式Abort:當存取異常時將會進入這種模式Undef:當執(zhí)行未定義指令時會進入這種模式System:使用和User模式相同寄存器集的特權模式Cortex-A特有模式:Monitor:是為了安全而擴展出的用于執(zhí)行安全監(jiān)控代碼的模式,也是一種特權模式Cortex-A寄存器組織概要當前程序狀態(tài)寄存器(CPSR)條件位:N=NegativeresultfromALUZ=ZeroresultfromALUC=ALUoperationCarriedoutorborrowV=ALUoperationOverflowed中斷禁止位:

I=1:禁止IRQ.F=1:禁止FIQT位T=0處理器處于ARM狀態(tài)T=1處理器處于Thumb狀態(tài)處理器模式位10000Usermode10001FIQmode10011SVCmode10111Abortmode11011Undfinedmode11111Systemmode10110Monitormode10010IRQ最佳流水線該例中用6個時鐘周期執(zhí)行了6條指令所有的操作都在寄存器中(單周期執(zhí)行)指令周期數(shù)(CPI)=1指令流水線為增加處理器指令流的速度,ARM7系列使用3級流水線允許多個操作同時處理,而非順序執(zhí)行PC指向正被取指的指令,而非正在執(zhí)行的指令板載硬件資源第2章ARM開發(fā)環(huán)境搭建連接示意圖環(huán)境的搭建流程開發(fā)工具的安裝。創(chuàng)建一個新工程如何編譯一個新工程如何調(diào)試一個新工程第3章ARM指令數(shù)據(jù)處理指令包括:算術指令: ADD ADC SUB SBC RSB RSC邏輯指令: AND ORR EOR BIC比較指令: CMP CMN TST TEQ數(shù)據(jù)搬移: MOV

MVN上述指令只能對寄存器操作,不能針對存儲器。語法:<操作>{<cond>}{S}Rd,Rn,Operand2只有比較指令影響標志位-不指定Rd數(shù)據(jù)搬移(MOV指令)不指定Rn第二個操作數(shù)通過桶型移位器送到ALU中。數(shù)據(jù)處理指令機器碼格式movr1,r2,lsl#2指令機器碼0xe1a01102Cond:指令的條件碼。Opcode:指令操作碼。S:操作是否影響cpsr,S=0不影響,S=1影響。Rn:包含第一個操作數(shù)的寄存器編碼。Rd:目標寄存器編碼。Operand2:第2操作數(shù)、RmI:用于區(qū)別Operand2是立即數(shù)(I=1),還是寄存器移位(I=0)Shiftamount:移位數(shù)Shift:移位方式數(shù)據(jù)處理指令加法指令ADDR1,R2,R3R1=R2+R3帶進位加法ADCR1,R2,R3R1=R2+R3+C減法指令SUBR1,R2,R3R1=R2-R3逆向減法RSBR1,R2,R3R1=R3-R2帶借位減法SBCR1,R2,R3R1=R2-R3-!C帶借位逆減法

RSCR1,R2,R3R1=R3-R2-!C邏輯與指令ANDR0,R0,#0X0F邏輯或指令ORRR0,R0,#0X0F邏輯異或EORR0,R0,#0X0F位清除BICR0,R0,#9比較指令CMPR1,#10 cpsr=R1-10反值比較指令

CMNR1,R2cpsr=R1+R2位測試指令TSTR1,#3cpsr=R1AND3相等測試TEQR1,R2cpsr=R1EORR2數(shù)據(jù)傳輸指令

MOVR1,R2R1=R2取反傳送指令

MVNR1,R2 R1=~R2立即數(shù)沒有任何一條ARM指令可包括一個32bit的立即數(shù)所有的ARM指令都是32bits固定長度數(shù)據(jù)處理指令格式中,第二個操作數(shù)有12位4bit移位值(0-15)乘于2,得到一個范圍在0-30,步長為2的移位值。記住一條準則:“最后8位一定要移動偶數(shù)位”.桶型移位器DestinationCF0DestinationCFLSL:LogicalLeftShiftASR:ArithmeticRightShift(無符號數(shù))乘2除2,并保留符號位DestinationCF...0DestinationCFLSR:LogicalShiftRightROR:RotateRight(無符號數(shù))除2位輪換DestinationRRX:RotateRightExtended位輪換,從CF到MSB都參與操作CF分支指令Branch: B{<cond>}labelBranchwithLink: BL{<cond>}

subroutine_label處理器核按偏移量左移兩位,符號擴展,再把該值加到當前PC寄存器內(nèi)跳轉(zhuǎn)范圍:±32Mbyte如何執(zhí)行長跳轉(zhuǎn)?條件執(zhí)行及標志位ARM指令可以通過添加適當?shù)臈l件碼前綴來達到條件執(zhí)行的目的。這樣可以提高代碼密度,減少分支跳轉(zhuǎn)指令數(shù)目,提高性能。CMPr3,#0CMPr3,#0

BEQskipADDNEr0,r1,r2

ADDr0,r1,r2

skip默認情況下,數(shù)據(jù)處理指令不影響條件碼標志位,但可以選擇通過添加“S”來影響標志位。CMP不需要增加“S”就可改變相應的標志位。

SUBSr3,r3,#0

BEQskip如果Z標志清零則跳轉(zhuǎn)R1減1,并設置標志位條件碼條件執(zhí)行示例一系列的指令都使用條件指令if(a==0)func(1);CMPr1,#0

MOVEQr0,#1

BLEQfunc置標志位,再使用不同的條件碼if(a==0)x=0;

if(a>0)x=1;CMPr0,#0

MOVEQr1,#0

MOVGTr1,#1使用條件比較指令if(a==4||a==10)x=0;CMPr0,#4

CMPNEr0,#10

MOVEQr1,#0測驗#2-GCD.global_start_start: MOVr0,#9 MOVr1,#15Loop: ;yourcodeherestop: Bstop .end單寄存器數(shù)據(jù)傳送LDR STR

WordLDRB STRB

ByteLDRH STRH HalfwordLDRSB

帶符號的byteloadLDRSH

帶符號的halfwordload存儲器系統(tǒng)必須支持所有訪問寬度語法:

LDR{<cond>}{<size>}Rd,<address>STR{<cond>}{<size>}Rd,<address>e.g.LDREQB

地址訪問LDR/STR訪問的地址由基址寄存器加上偏移量來產(chǎn)生。針對word和無符號byte的訪問,偏移量可以是:一個無符號12-bit立即數(shù)(如0-4095bytes).

LDRr0,[r1,#8]一個寄存器,或再加上移位(由立即數(shù)指定)

LDRr0,[r1,r2]

LDRr0,[r1,r2,LSL#2]可以是從基址寄存器上加或減去偏移量:

LDRr0,[r1,#-8]

LDRr0,[r1,-r2]

LDRr0,[r1,-r2,LSL#2]對于halfword和帶符號的halfword/byte,偏移量可以是:一個無符號8bit立即數(shù)(如0-255bytes).一個寄存器(不能有偏移操作)。PreorPostIndexed尋址

Pre-indexed:STRr0,[r1,#12]通過

STRr0,[r1,#12]!來自動更新基址寄存器Post-indexed:STRr0,[r1],#12塊數(shù)據(jù)傳送LDM/STM指令允許一次傳送1到16個寄存器到/從存儲器中。寄存器傳送順序是固定的,不能被改變最小數(shù)字的寄存器總是被對應到存儲器的最低地址上。LDMIA r10!,{r0,r1,r4}基址寄存器指定存儲器訪問開始的地址

塊傳送指令針對下列情況很有效:從存儲器中搬運一塊數(shù)據(jù)保存或恢復堆棧中的內(nèi)容如果是慢速存儲器,會影響中斷響應時間r1r4r0r10地址增加LDM/STM操作語法:<LDM|STM>{<cond>}<addressing_mode>Rb{!},<寄存器list>4種尋址操作:

LDMIA/STMIA

Increment

After(先操作,后增加)

LDMIB/STMIB

Increment

Before(先增加,后操作)

LDMDA/STMDA

DecrementAfter

(先操作,后遞減)

LDMDB/STMDB

DecrementBefore(先遞減,后操作)LDMxxr10!,{r0,r1,r4}STMxxr10!,{r0,r1,r4}存儲器塊拷貝可選項“

!

”將導致LDM/STM

指令去自動更新基址寄存器后綴為IA,IB時,加上4乘以用于傳送的寄存器的數(shù)目的值后綴為DA,DB時,減去4乘以用于傳送的寄存器的數(shù)目的值示例:;r12指向源數(shù)據(jù)起始地址;r14指向源數(shù)據(jù)尾地址;r13指向目的數(shù)據(jù)起始地址loop LDMIA r12!,{r0-r11} STMIA r13!,{r0-r11}CMP r12,r14 BNE loop

堆棧ARM堆棧操作通過塊傳送指令來完成:STMFD (Push) 塊存儲-FullDescendingstack[STMDB]LDMFD (Pop) 塊裝載-FullDescendingstack[LDMIA]

STMFDsp!,{r4-r7,lr}r4100r5FFr61234r7A0BElr8034ABCD8765102E16FFFF1010123484209753存儲器頂SPLDMFDsp!,{r4-r7,pc}SP100FF1234AOBE80341010123484209753r41r514544r60r712lr9048pc9020SWP在寄存器和存儲器之間,由一次存儲器讀和一次存儲器寫組成的原子操作。完成一個字節(jié)或字的交換。語法:

SWP{<cond>}{B}Rd,Rm,[Rn]可用作信號量操作不能由gcc編譯產(chǎn)生,必須使用匯編器(as)。PSR傳送指令MRS和MSR允許傳送CPSR/SPSR中的內(nèi)容到/從一個通用寄存器中。語法:

MRS{<cond>}Rd,<psr>;Rd=<psr>

MSR{<cond>}<psr[_fields]>,Rm;<psr[_fields]>=Rm在這里:<psr>=CPSRorSPSR[_fields]=‘fsxc’的任意組合也允許送一個立即數(shù)到psr_fields

MSR{<cond>}<psr_fields>,#Immediate用戶模式下,所有位均可以被讀取,但只有條件標志位(_f)可被寫。協(xié)處理器指令ARM體系支持16個協(xié)處理器針對每個協(xié)處理器的指令占用ARM指令集中的固定部分如果相應的協(xié)處理器不存在,將發(fā)生一個未定義指令異常。這有三種協(xié)處理器指令協(xié)處理器數(shù)據(jù)處理指令

CDP:初始化協(xié)處理器數(shù)據(jù)處理操作協(xié)處理器寄存器傳送指令

MRC:從協(xié)處理器寄存器移到ARM寄存器

MCR:從ARM寄存器移到協(xié)處理器寄存器協(xié)處理器存儲器傳送指令

LDC:從存儲器裝載到協(xié)處理器寄存器

STC:從協(xié)處理器寄存器存儲到存儲器軟件中斷(SWI)產(chǎn)生一個異常陷阱,跳轉(zhuǎn)到SWI硬件向量。SWI處理程序可以檢測SWI號,從而決定采取何種操作。通過SWI機制,運行在用戶模式下的應用程序,可請求操作系統(tǒng)執(zhí)行一系列特權操作。語法:

SWI{<cond>}<SWInumber>283124270Cond1111SWInumber(ignoredbyprocessor)23條件域第4章ARM匯編程序設計數(shù)據(jù)定義(DataDefinition)偽操作數(shù)據(jù)定義偽操作一般用于為特定的數(shù)據(jù)分配存儲單元,同時可完成已分配存儲單元的初始化。常見的數(shù)據(jù)定義偽操作有如下幾種:.byte單字節(jié)定義

.byte0x12,’a’,23.short定義雙字節(jié)數(shù)據(jù)

.short0x1234,65535.long/.word定義4字節(jié)數(shù)據(jù) .word0x12345678.quad定義8字節(jié)

.quad0x1234567812345678.float 定義浮點數(shù) .float0f3.2.string/.asciz/.ascii定義字符串

.ascii“abcd\0”,

注意:.ascii偽操作定義的字符串需要每行添加結尾字符‘\0‘,其他不需要匯編控制偽操作匯編控制偽操作用于控制匯編程序的執(zhí)行流程,常用的匯編控制偽操作包括以下幾條:.if、.else

.endif偽操作能根據(jù)條件的成立與否決定是否執(zhí)行某個指令序列。當.if后面的邏輯表達式為真,則執(zhí)行.if后的指令序列,否則執(zhí)行.else后的指令序列;.if、.else、.endif偽指令可以嵌套使用。語法格式:.iflogical-expressing….else….endif雜項偽操作.arm.arm 定義一下代碼使用ARM指令集編譯.thumb.thumb定義一下代碼使用Thumb指令集編譯.section.sectionexpr

定義一個段。expr可以使.text.data..bss.text.text{subsection}

將定義符開始的代碼編譯到代碼段.data.data{subsection}

將定義符開始的代碼編譯到數(shù)據(jù)段,初始化數(shù)據(jù)段.bss.bss{subsection}

將變量存放到.bss段,未初始化數(shù)據(jù)段.align.align{alignment}{,fill}{,max}通過用零或指定的數(shù)據(jù)進行填充來使當前位置與指定邊界對齊_start匯編程序的缺省入口是,用戶也可以在連接腳本文件中用ENTRY標志指明其它入口點.global/.globl

用來聲明一個全局的符號.end文件結束數(shù)據(jù)定義(DataDefinition)偽操作.include格式:.include“filename”

包含指定的頭文件,可以把一個匯編常量定義放在頭文件中.equ格式:.equsymbol,expression把某一個符號(symbol)定義成某一個值(expression).該指令并不分配空間.(c語言的#define)偽指令ADR偽指令:ADR偽指令為小范圍地址讀取偽指令,ADR偽指令將基于PC相對偏移地址或基于寄存器相對偏移地址值讀取到寄存器中,當?shù)刂分凳亲止?jié)對齊時,取值范圍為?255~255,當?shù)刂分凳亲謱R時,取值范圍為?1020~1020。

語法格式:ADR{cond}register,labelADRL偽指令:ADRL偽指令為中等范圍地址讀取偽指令。ADRL偽指令將基于PC相對偏移的地址或基于寄存器相對偏移的地址值讀取到寄存器中,當?shù)刂分凳亲止?jié)對齊時,取值范圍為?64~64KB;當?shù)刂分凳亲謱R時,取值范圍為?256~256KB,

語法格式:ADRL{cond}register,labelLDR偽指令:LDR偽指令裝載一個32位的常數(shù)和一個地址到寄存器。 LDR{cond}register,=[expr|label-expr]

語法格式:LDRR0,=0XFFFF0000C/匯編的混合編程混合編程的優(yōu)勢ATPCS標準寄存器用名GCC內(nèi)聯(lián)匯編GCC內(nèi)聯(lián)匯編語法C和匯編的混合編程優(yōu)勢C和匯編能很容易的混合:可實現(xiàn)在c中無法實現(xiàn)的處理器功能使用新的或不支持的指令產(chǎn)生更高效的代碼直接鏈接變量和程序確定符合程序調(diào)用規(guī)范輸入/輸出相關的符號編譯器也可保留內(nèi)嵌匯編大多數(shù)arm指令都可實現(xiàn)內(nèi)嵌匯編代碼可由編譯器的優(yōu)化器來傳遞ATPCS(arm/thumb程序調(diào)用規(guī)范)開始四個字大小的參數(shù)直接使用寄存器的R0-R3來傳遞(快速且高效的)更多的信息可參看ATPCS如果需要更多的參數(shù),將使用堆棧。(需要額外的指令和慢速的存儲器操作)所以通常限制參數(shù)的個數(shù),使它為4或更少。如果不可避免,把常用的參數(shù)放在前4個使用滿減棧C程序中調(diào)用匯編在匯編程序中用exportname來定義在C程序中直接調(diào)用一般的鏈接即可externvoidmystrcopy(char*d,constchar*s);intmain(void){constchar*src=“Source”;

chardest[10];...

mystrcopy(dest,src);...}這里所有的參數(shù)都是可以用寄存器來傳遞的,所以不需要在匯編程序中使用PUSH/POP來保護.globalmystrcopy.textmystrcopy:LDRBr2,[r1],#1STRBr2,[r0],#1CMPr2,#0BNEmystrcopyMOVpc,lrENDCALLGCC內(nèi)聯(lián)匯編Gcc通過關鍵字“asm”來聲明內(nèi)聯(lián)匯編。允許使用一些不能由編譯器自動生成的指令:MSR/MRS新的指令協(xié)處理器指令通常在關聯(lián)的內(nèi)嵌函數(shù)中使用使用C變量代替寄存器不是一個真正的匯編文件通過優(yōu)化器實現(xiàn)intadd(unsignedinta,unsigendintb){intsum;asmvolatile ( “add%0,%1,%2\n\t” :”=r”(sum):”r”(a),”r”(b) :”memory”

); returnsum;}intadd(unsignedinta,unsignedintb)

{

intsum;asmvolatile (

“add%[op1],%[op2],%[op3]\n” :[op1]”=r”(sum) :[op2]”r”(a),[op3]”r”(b) :”memory” ); returnsum;}內(nèi)嵌匯編語法格式通用的內(nèi)嵌匯編語法格式是這樣的:asm(code:outputoperandlist:inputoperandlist:clobberlist);每一個asm語句被冒號(:)分成了四個部分。匯編指令放在第一部分中的“”中間:“addr0,%1,%2\n\t”接下來是冒號后的可選擇的outputoperandlist,每一個條目是由一對[](方括號)和被他包括的符號名組成,它后面跟著限制性字符串,再后面是圓括號和它括著的C變量::”=r”(sum)接著冒號后面是輸入操作符列表,它的語法和輸入操作列表一樣:

:”r”(a),”r”(b)

破壞符列表::”r0”注意:asm聲明的4個部分中,只要最尾部沒有使用的部分都可以省略。但是有一點要注意的是,上面的4個部分中只要后面的還要使用,前面的部分沒有使用也不能省略,可以空但是保留冒號。使用“volatile”第5章GPIO編程GPIOGPIO的英文全稱為General-PurposeIOports,也就是通用IO接口。在嵌入式系統(tǒng)中常常有數(shù)量眾多,但是結構比較簡單,很多外部設備/電路需要CPU為之提供控制手段,有的則需要被CPU用做輸入信號在實際的MCU中,GPIO是有多種形式的Exynos4412GPIO接口簡介Exynos4412中有304個復用功能的GPIO,這些引腳被分為37個組包含了172個外部中斷其中252個引腳的功能是復用的部分引腳還有睡眠模式相關寄存器使用的寄存器GPIO接口開發(fā)注意事項方向電壓驅(qū)動能力輸入阻抗——輸入電流第6章ARM異常及中斷處理異常處理當異常產(chǎn)生時,ARMcore:拷貝CPSR到SPSR_<mode>設置適當?shù)腃PSR位:改變處理器狀態(tài)進入ARM狀態(tài)改變處理器模式進入相應的異常模式設置中斷禁止位禁止相應中斷(如果需要)保存返回地址到LR_<mode>設置PC為相應的異常向量返回時,異常處理需要:從SPSR_<mode>恢復CPSR從LR_<mode>恢復PC

Note:這些操作只能在ARM態(tài)執(zhí)行.異常返回指令異常返回:使用一數(shù)據(jù)處理指令:相應的指令取決于什么樣的異常在特權模式不僅僅更新PC,

而且拷貝SPSR到CPSR指令帶有“S”后綴PC做為目的寄存器從SWI和Undef異常返回

MOVSpc,lr從FIQ,IRQ和預取異常(PrefectAbort)返回

SUBSpc,lr,#4從數(shù)據(jù)異常(DataAbort)返回

SUBSpc,lr,#8

如果LR之前被壓棧的話使用LDM“^”

LDMFDsp!,{pc}^異常優(yōu)先級異常在當前指令執(zhí)行完成之后才被響應多個異常可以在同一時間產(chǎn)生異常指定了優(yōu)先級和固定的服務順序:ResetDataAbortFIQIRQPrefetchAbortSWIUndefinedinstruction異常處理中的與異常發(fā)生相關的模式改變意味著所調(diào)用的異常處理程序至少要訪問:私有的SP_<mode>(stackpointer).私有的LR_<mode>(linkregister).私有的SPSR_<mode>(savedprogramstatusregister).在FIQ異常處理中,另有5個私有的通用寄存器(r8_fiqtor12_fiq).其它的寄存器是所有模式共用的.異常處理程序必須確保其他的寄存器在退出前恢復到原來的狀態(tài)這可以通過將任何正在使用的寄存器的內(nèi)容保存在堆棧中,并在返回前恢復來實現(xiàn)任何所需寄存器的初始化要有應用程序的起始代碼來完成中斷處理ARM有兩級外部中斷FIQ,IRQ.可是大多數(shù)的基于ARM的系統(tǒng)有>2個的中斷源!因此需要一個中斷控制器(通常是地址映射的)來控制中斷是怎樣傳遞給ARM的。在許多系統(tǒng)中,一些中斷的優(yōu)先級比其它中斷的優(yōu)先級高,他們要搶先任何正在處理的低優(yōu)先級中斷。 Note:通常中斷處理程序總是應該包含清除中斷源的代碼。FIQvsIRQFIQ和IRQ提供了非常基本的優(yōu)先級級別。FIQs有高于IRQs的優(yōu)先級,表現(xiàn)在下面2個方面:當多個中斷產(chǎn)生時,CPU優(yōu)先處理FIQ.處理FIQ時禁止IRQs.IRQs將不會被響應直到FIQ處理完成.FIQs的設計使中斷響應盡可能的快.FIQ向量位于異常向量表的最末.異常處理程序可從異常量處連續(xù)執(zhí)行FIQ模式有5個額外的私有寄存器(r8-r12)中斷處理必須保護其使用的非私有寄存器可以有多個IRQ中斷源,但是考慮到系統(tǒng)性能應避免嵌套。第7章串行通信接口串行通信的基本概念在通信領域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信和串行通信串口的數(shù)據(jù)傳輸是以串行方式進行的。串口在數(shù)據(jù)通信中,一次只傳輸一個比特的數(shù)據(jù)。串行數(shù)據(jù)的傳輸速度用bps或波特率來描述。串行通信涉及的常用術語單工、半雙工和全雙工單工(Simplex)特點:僅能進行一個方向的數(shù)據(jù)傳送半雙工(HalfDuplex)特點:數(shù)據(jù)可以在兩個方向上進行傳送,但是這種傳送絕不能同時進行全雙工(FullDuplex)特點:能夠在兩個方向同時進行數(shù)據(jù)傳送數(shù)據(jù)傳輸率每秒傳輸?shù)亩M制位數(shù),單位為bps(bitpersecond)也稱比特率串行通信涉及的常用術語異步方式與同步方式同步通信方式(Synchronous)所用的數(shù)據(jù)格式?jīng)]有起始位、停止位,一次傳送的字符個數(shù)可變。在傳送前,先按照一定的格式將各種信息裝配成一個包,該包包括供接收方識別用的同步字符一個或兩個,其后緊跟著要傳送的n個字符,再后就是校驗字符。異步方式(Asynchronous):也稱“起止同步式”。串行通信涉及的常用術語硬件流控制如果打開串口硬件流控制后,串口A只有在nCTS被(串口B的nRTS)激活后才能把數(shù)據(jù)發(fā)送出去;當串口A可以接收數(shù)據(jù)時,激活nRTSExynos4412UART接口功能模塊Exynos4412相關寄存器第8章PWM定時器PWM的概念PWM(PulseWidthModulation):脈沖寬度調(diào)制占空比:就是輸出的PWM中,高電平保持的時間與該PWM的時鐘周期的時間之比PWM應用它是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用于測量,通信,功率控制與變換等許多領域。脈沖寬度調(diào)制(PWM)是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼。常見應用有:電機控制,DAC輸出等Exynos4412PWM控制器特性在Exynos4412中,一共有5個32位的定時器,定時器0、1、2、3包含了脈沖寬度調(diào)制(PWM),并可驅(qū)動其外部的I/O口定時器0有可選的dead-zone功能,以支持大電流設備Exynos4412PWM控制器原理Exynos4412PWM控制器框圖第9章看門狗定時器看門狗的概念門狗定時器主要用來將受到外界干擾無法正常運行的芯片重新啟動,其在實際項目和產(chǎn)品中有重大意義對產(chǎn)品穩(wěn)定性的提高有很大幫助Exynos4412看門狗定時器原理啟動看門狗后,必須在看門狗復位之前向特定寄存器中寫入數(shù)值,不讓看門狗定時器溢出,這樣看門狗就會重新計時。當用戶程序溢出時在規(guī)定時間內(nèi)沒有向特定寄存器中依次寫入數(shù)值,看門狗定時器計數(shù)溢出,引起看門狗復位,看門狗產(chǎn)生一個強制系統(tǒng)復位。這樣可以使程序重新運行Exynos4412看門狗定時器相關寄存器第10章RTC定時器實時時鐘(RRTC)概念實時時鐘(REALTIMECLOCK)英文縮寫也叫RTC計算機系統(tǒng)通常需要一個能夠記錄時間的功能單元,在系統(tǒng)關閉后依然可以記錄時間,這個功能單元就叫實時時鐘單元。實時時鐘通??梢蕴峁┠辍⒃?、日、時、分、秒等信息。有些還可以提供定時等功能。Exynos4412實時時鐘單元BCD碼的年、月、日、星期、小時、分鐘、秒輸出功能Alarm定時喚醒功能獨立的電源供電管腳(RTCVDD)為RTOS提供毫秒級的定時時鐘晶振選取32.768HZExynos4412實時時鐘相關寄存器第11章AD轉(zhuǎn)換器A/D轉(zhuǎn)換的概念A/D轉(zhuǎn)換是將模擬信號轉(zhuǎn)換為數(shù)字信號,被廣泛應用于控制領域分辯率(Resolution)指數(shù)字量變化一個最小量時模擬信號的變化量轉(zhuǎn)換速率(Conversion

Rate)是指完成一次從模擬轉(zhuǎn)換到數(shù)字的AD轉(zhuǎn)換所需的時間的倒數(shù)量化誤差(Quantizing

Error)

由于AD的有限分辯率而引起的誤差線性度(Linearity)實際轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏移,不包括以上三種誤差。Exynos4412A/D轉(zhuǎn)換器特點Exy

溫馨提示

  • 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

提交評論