




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章ARM基礎開發第一頁,共146頁。本章目標了解S3C2440的內核架構掌握ARM編程基本指令和使用掌握S3C2440的時鐘和電源系統掌握S3C2440的GPIO用法掌握S3C2440的存儲器控制器原理掌握S3C2440的中斷處理過程掌握S3C2440的ADC和觸摸屏的應用掌握S3C2440的定時器應用第2章ARM基礎開發2第二頁,共146頁。第2章ARM基礎開發2.1S3C2440概述2.2編程基礎2.3時鐘與電源體系2.4GPIO2.5存儲器控制器2.6異常系統2.7定時器2.8ADC與觸摸屏3第三頁,共146頁。2.1S3C2440概述
S3C2440是三星公司推出的一款基于ARM920T內核的16位/32位RISC微處理器。ARM920T實現了MMU(MemoryManagementUnit),AMBA(AdvancedMicrocontrollerBusArchitecture)總線和哈佛結構高速緩存體系,同時支持Thumb16位指令集。S3C2440除了低功耗、高性能外,還通過提供一套完整的通用系統外設,減少了整體系統成本,為手持設備等普通應用領域的的嵌入式開發提供了小型芯片微控制器的解決方案。
4第四頁,共146頁。2.1S3C2440概述1.系統結構:ARM920T內核外設
ARM9TDMI核心MMUCache5第五頁,共146頁。2.1S3C2440概述2.外設接口:ARM920T內核外設外設控制執行AMBA總線標準
AMBA:是ARM公司研發的一種標準,其中定義了三組總線,AHB、ASB和APB。AHB:用于高速外設ASB:系統總線APB:用于低速外設6第六頁,共146頁。2.1S3C2440概述開發板核心板:CPU,三星S3C2440A外部存儲器:2片SDRAM,64MNandFlash,256M3個RS232接口,COM0(UART0)用于與PC機相連;COM1(UART1)與RS485接口共用,跳線選擇;COM2(UART2)與Zigbee插座共用,跳線選擇。集成了網關項目中的Zigbee插座,插入Zigbee核心板,配備相關軟件,網關即可聯入Zigbee網絡。電位器用于模擬一個模擬信號輸入,旋轉旋鈕時輸入電壓發生變化,用于A/D轉換功能。40芯LCD接口引出了LCD全部信號;LCD為480*2724.3英寸TFT液晶屏,帶觸摸屏;
與Jlink相連,用于程序仿真調試
。四個USBHOST接口;一個USBDevice接口。一個100M網口,采用DM9000,帶連接和傳輸指示燈
4個LED,根據軟件功能要求實現亮和滅。7第七頁,共146頁。2.2編程基礎
2.2.1S3C2440體系結構
2.2.2匯編指令集
2.2.3匯編與C交互編程8第八頁,共146頁。2.2.1S3C2440體系結構
1.體系結構采用哈佛結構馮·諾依曼結構:單一存儲、統一編址、分時復用哈佛結構:分開存儲、獨立編址、兩倍帶寬、執行效率更高9第九頁,共146頁。2.2.1S3C2440體系結構
1.體系結構5級流水線技術10第十頁,共146頁。2.2.1S3C2440體系結構
1.體系結構兩套指令集:32位ARM、16位Thumb
Thumb為ARM的功能子集可節省30%-40%的存儲空間支持MMU,實現虛擬內存管理以及訪問權限的定義,使處理器可以支持操作系統中多任務的運行。支持16KB數據Cache和16KB指令Cache,極大的提高了處理器的運行速度。
11第十一頁,共146頁。2.2.1S3C2440體系結構
2.工作狀態:12第十二頁,共146頁。2.2.1S3C2440體系結構
2.工作狀態:切換
使用BX指令將內核的操作狀態在ARM狀態和Thumb狀態之間進行切換;從Arm狀態切換到Thumb狀態
LDRR0,=Lable+1BXR0;從Thumb狀態切換到ARM狀態
LDRR0,=LableBXR0地址最低位為1,表示切換到Thumb狀態地址最低位為0,表示切換到ARM狀態跳轉地址標號13第十三頁,共146頁。2.2.1S3C2440體系結構
3.運行模式:ARM920T有七種運行模式處理器模式說明備注
用戶(usr)正常程序工作模式不能直接切換到其它模式
系統(sys)用于支持操作系統的特權任務等可以直接切換到其它模式等特權
快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式
中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式
管理(svc)操作系統使用的保護模式系統復位和軟件中斷時進入此模式
中止(abt)用于虛擬存儲及存儲保護數據或指令預取中止時進入
未定義(und)用于軟件仿真的硬件協處理未定義指令執行時進入此模式14第十四頁,共146頁。2.2.1S3C2440體系結構
3.運行模式—特權模式處理器模式說明備注
用戶(usr)正常程序工作模式不能直接切換到其它模式
系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權
快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式
中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式
管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式
中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處
未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式
除用戶模式外,其它模式均為特權模式。
未定義(und)
中止(abt)
管理(svc)
外部中斷(irq)
快速中斷(fiq)
系統(sys)15第十五頁,共146頁。2.2.1S3C2440體系結構
3.
運行模式—異常模式處理器模式說明備注
用戶(usr)正常程序工作模式不能直接切換到其它模式
系統(sys)用于支持操作系統的特權任務等可以直接切換到其它模式等特權
快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式
中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式
管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式
中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處
未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式
未定義(und)
中止(abt)
管理(svc)
外部中斷(irq)
快速中斷(fiq)
這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。16第十六頁,共146頁。2.2.1S3C2440體系結構
4.
存儲器格式:根據數據的存儲順序分為大端格式和小端格式。低地址大端格式地址A地址A+1地址A+2地址A+3例:worda=0x12
34
56
7812345678低地址小端格式地址A地址A+1地址A+2地址A+31234567817第十七頁,共146頁。2.2.1S3C2440體系結構
5.寄存器組織:共37個32位寄存器,31個通用寄存器,6個狀態寄存器。同一時刻并不是所有的寄存器都可見。處理器的狀態和運行模式決定了寄存器的可見度
。18第十八頁,共146頁。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.2.1S3C2440體系結構
5.寄存器組織:19第十九頁,共146頁。2.2.1S3C2440體系結構寄存器寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR——SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R031個通用32位寄存器6個狀態寄存器。
5.寄存器組織:20第二十頁,共146頁。
5.寄存器組織:2.2.1S3C2440體系結構寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷21第二十一頁,共146頁。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.2.1S3C2440體系結構寄存器R0~R7為未分組的通用寄存器,它們在任何處理器模式都對應于相同的32位物理寄存器。22第二十二頁,共146頁。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.2.1S3C2440體系結構寄存器R8~R12有兩個分組的物理寄存器。一組用于除FIQ模式之外的所有寄存器模式,另一組用于FIQ模式。在發生FIQ中斷后,處理器不必為保護寄存器而浪費時間,從而加速了FIQ的處理速度。23第二十三頁,共146頁。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R13通常作為堆棧指針(SP),用于指向堆棧。2.2.1S3C2440體系結構24第二十四頁,共146頁。2.2.1S3C2440體系結構
寄存器組織:寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14為鏈接寄存器(LR),存放返回地址25第二十五頁,共146頁。程序BLableR14與子程序調用:
程序A執行過程中調用程序B;1
程序B執行完后,將R14寄存器的內容放入PC,返回程序A。3
程序跳轉至標號Lable,執行程序B,同時硬件將“BLLable”指令的下一條指令所在地址存入R14;2程序A地址ABLLable??????MOVPC,LRR14R14(地址A)2.2.1S3C2440體系結構26第二十六頁,共146頁。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.2.1S3C2440體系結構R15為程序計數器(PC),指向正在取指的地址,而不是正在執行的地址。27第二十七頁,共146頁。寄存器寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.2.1S3C2440體系結構
CPSR和SPSR反映了當前處理器的狀態,可以通過專用指令進行讀取和設置。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。28第二十八頁,共146頁。NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標志保留控制位溢出標志進位或借位擴展零負數IRQ禁止FIQ禁止狀態位模式位NZCVITFCPSR寄存器:
大多數“數值處理指令”可以選擇是否影響條件代碼標志位(指令帶S后綴);但有些指令執行總是影響條件代碼標志。
最低8位為控制位,當發生異常時,這些位被硬件改變。當處理器處于一個特權模式時,可用軟件操作這些位。
保留位被保留將來使用。為了提高程序的可移植性,當改變CPSR標志和控制位時,請不要改變這些保留位。另外,請確保您程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設置為1或者0。
2.2.1S3C2440體系結構29第二十九頁,共146頁。標志位含義II=1,表示禁止IRQ中斷;否則,表示允許IRQ中斷FF=1,表示禁止FIQ中斷;否則,表示允許FIQ中斷TT=0,表示執行ARM指令,否則,表示執行Thumb指令;M[4:0]M[4:0]10000100011001010011101111101111111處理器工作模式用戶模式快速中斷模式外部中斷模式管理模式中止模式未定義指令模式系統模式可訪問的寄存器PC,R0~R14,CPSRPC,R0~R7,R8_fiq~R14_fiq,CPSR,SPSR_fiqPC,R0~R12,R13_irq~R14_irq,CPSR,SPSR_irqPC,R0~R12,R13_svc~R14_svc,CPSR,SPSR_svcPC,R0~R12,R13_abt~R14_abt,CPSR,PSR_abtPC,R0~R12,R13_und~R14_und,CPSR,SPSR_undPC,R0~R14,CPSR2.2.1S3C2440體系結構注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M[4:0]中,處理器將進入一個無法恢復的模式。30第三十頁,共146頁。
尋址方式是根據指令中給出的地址碼字段來實現尋找真實操作數地址的方式。ARM處理器具有8種基本尋址方式。
1.寄存器尋址; 2.立即尋址;
3.寄存器移位尋址; 4.寄存器間接尋址;
5.基址尋址; 6.多寄存器尋址;
7.堆棧尋址; 8.相對尋址。2.2.2匯編指令集
1.ARM尋址方式:分類31第三十一頁,共146頁。
操作數的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執行時直接取出寄存器值來操作。寄存器尋址指令舉例如下:MOVR1,R2 ;將R2的值存入R1SUBR0,R1,R2;將R1的值減去R2的值,結果保存到R00xAA0x55R2R1MOVR1,R20xAA2.2.2匯編指令集
1.ARM尋址方式:寄存器尋址32第三十二頁,共146頁。
立即尋址指令中的操作碼字段后面的地址碼部分即是操作數本身,也就是說,數據就包含在指令當中,取出指令也就取出了可以立即使用的操作數(這樣的數稱為立即數)。立即尋址指令舉例如下:SUBS R0,R0,#1;R0減1,結果放入R0,并且影響標志位MOV R0,#0xFF000;將立即數0xFF000裝入R0寄存器
0x55R0MOVR0,#0xFF00程序存儲MOVR0,#0xFF000xFF00從代碼中獲得數據2.2.2匯編指令集
1.
ARM尋址方式:立即尋址33第三十三頁,共146頁。
寄存器移位尋址是ARM指令集特有的尋址方式。當第2個操作數是寄存器移位方式時,第2個寄存器操作數在與第1個操作數結合之前,選擇進行移位操作。寄存器移位尋址指令舉例如下:MOV R0,R2,LSL#3 ;R2的值左移3位,結果放入R0, ;即是R0=R2×8ANDS R1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相 ;“與”操作,結果放入R10x55R0R20x01MOVR0,R2,LSL#30x080x08邏輯左移3位2.2.2匯編指令集
1.ARM尋址方式:寄存器移位尋址34第三十四頁,共146頁。
寄存器間接尋址指令中的地址碼給出的是一個通用寄存器的編號,所需的操作數保存在寄存器指定地址的存儲單元中,即寄存器為操作數的地址指針。寄存器間接尋址指令舉例如下:LDR R1,[R2] ;將R2指向的存儲單元的數據讀出
;保存在R1中SWP R1,R1,[R2] ;將寄存器R1的值和R2指定的存儲
;單元的內容交換0x55R0R20x400000000xAA0x40000000LDRR0,[R2]0xAA2.2.2匯編指令集
1.ARM尋址方式:寄存器間接尋址35第三十五頁,共146頁。
基址尋址就是將基址寄存器的內容與指令中給出的偏移量相加,形成操作數的有效地址。基址尋址用于訪問基址附近的存儲單元,常用于查表、數組操作、功能部件寄存器訪問等。基址尋址指令舉例如下:LDR R2,[R3,#0x0C] ;讀取R3+0x0C地址上的存儲單元
;的內容,放入R2STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值
;保存到R0指定的存儲單元0x55R2R30x400000000xAA0x4000000CLDRR2,[R3,#0x0C]0xAA將R3+0x0C作為地址裝載數據2.2.2匯編指令集
1.ARM尋址方式:基址尋址36第三十六頁,共146頁。
多寄存器尋址一次可傳送幾個寄存器值,允許一條指令傳送16個寄存器的任何子集或所有寄存器。多寄存器尋址指令舉例如下:LDMIA R1!,{R2-R7,R12};將R1指向的單元中的數據讀出到
;R2~R7、R12中(R1自動加1)STMIA R0!,{R2-R7,R12};將寄存器R2~R7、R12的值保
;存到R0指向的存儲單元;
;(R0自動加1)0x40000000R1R20x??0x010x400000000x??R3R40x??R60x??0x020x030x040x400000040x400000080x4000000C存儲器LDMIAR1!,{R2-R4,R6}0x010x020x030x040x400000102.2.2匯編指令集
1.ARM尋址方式:多寄存器尋址37第三十七頁,共146頁。
堆棧是一個按特定順序進行存取的存儲區,操作順序為“后進先出”。堆棧尋址是隱含的,它使用一個專門的寄存器(堆棧指針)指向一塊存儲區域(堆棧),指針所指向的存儲單元即是堆棧的棧頂。存儲器堆棧可分為兩種:遞增堆棧(A):向高地址方向生長遞減堆棧(D):向低地址方向生長2.2.2匯編指令集
1.ARM尋址方式:堆棧尋址38第三十八頁,共146頁。棧底棧頂棧區SP堆棧存儲區棧頂棧底棧區SP向下增長向上增長0x123456780x12345678堆棧壓棧堆棧壓棧2.2.2匯編指令集
1.
ARM尋址方式:堆棧尋址39第三十九頁,共146頁。滿堆棧:堆棧指針指向最后壓入的堆棧的有效數據項。空堆棧:堆棧指針指向下一個待壓入數據的空位置。2.2.2匯編指令集
1.ARM尋址方式:堆棧尋址滿遞增,指令為LDMFA,STMFA。空遞增,指令為LDMEA,STMEA。滿遞減,指令為LDMFD,STMFD。空遞減,指令為LDMED,STMED。堆棧組合指令:40第四十頁,共146頁。
相對尋址是基址尋址的一種變通。由程序計數器PC提供基準地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數的有效地址。相對尋址指令舉例如下:2.2.2匯編指令集
1.
ARM尋址方式:相對尋址
BL SUBR1 ;調用到SUBR1子程序
BEQ LOOP
;條件跳轉到LOOP標號處
...LOOP MOV R6,#1 ...SUBR1 ...41第四十一頁,共146頁。2.2.2匯編指令集
2.ARM常用指令集:指令格式
ARM指令的基本格式如下:<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}
其中<>號內的項是必須的,{}號內的項是可選的。各項的說明如下:opcode:指令助記符; cond:執行條件;S:是否影響CPSR寄存器的值;Rd:目標寄存器;
Rn:第1個操作數的寄存器;operand2:第2個操作數;42第四十二頁,共146頁。2.2.2匯編指令集
2.ARM常用指令集:分類
ARM微處理器的指令集主要有六大類:跳轉指令數據處理指令程序狀態寄存器(PSR)處理指令存儲器訪問指令協處理器指令異常產生指令43第四十三頁,共146頁。B/BL指令編碼格式24位常數,跳轉目標地址無法實現4G(32位)范圍內的任意跳轉2.2.2匯編指令集
2.ARM常用指令集:跳轉指令B、BL、BX44第四十四頁,共146頁。
B指令為簡單的跳轉指令,不附帶其它功能。跳轉范圍限制在當前指令的±32M字節地址內。程序代碼Bmainxxmain2.2.2匯編指令集跳轉指令—B
2.ARM常用指令集:跳轉指令B、BL、BX45第四十五頁,共146頁。BL指令除了具有跳轉功能,還能在跳轉之前將下一條指令的地址拷貝到R14(即LR)鏈接寄存器中,它適用于子程序調用。跳轉范圍限制在當前指令的±32M字節地址內。2.2.2匯編指令集跳轉指令—BL跳轉指令—BX
BX指令除了具有跳轉功能,還能在跳轉的同時切換處理器狀態。46第四十六頁,共146頁。裝載指令:LDRx目標寄存器,源地址存儲指令:STRx源寄存器,目標地址存儲器源地址目標寄存器存儲器目標地址源寄存器存儲器訪問指令:LDR/STR搭配不同的后綴實現不同方式的寄存器存取操作,常用如下:LDRH/STRH:半字。LDR/STR:字。LDM/STM:多寄存器存取指令2.2.2匯編指令集47第四十七頁,共146頁。部分存儲器訪問指令:指令說明功能LDRRd,addr將存儲器字數據讀入寄存器Rd←[addr]STRRd,addr將寄存器數據保存到存儲器[addr]←RdLDMRn{!},reglist將存儲器數據批量讀入寄存器reglist←[Rn…]STMRn{!},reglist將批量寄存器數據保存到存儲器[Rn…]←reglist2.2.2匯編指令集48第四十八頁,共146頁。應用舉例:0x55R2R50x400000000x123456780x40000000存儲器地址0x12345678LDR R2,[R5]
;將R5指向地址的字數據存入R2STR R1,[R2,#0x10]
;將R1的數據存儲到R2+0x10地址0x12345678R1R20x400000000x??0x40000010存儲器地址0x12345678+0x102.2.2匯編指令集49第四十九頁,共146頁。數據處理指令:可分為4類:數據傳送、算術邏輯運算、比較和乘法指令。2.2.2匯編指令集指令說明功能MOVRd,operand2數據傳送指令Rd←operand2ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2CMPRn,operand2比較指令標志N/Z/V/C←Rn-operand2TEQRn,operand2相等測試指令標志N/Z/V/C←Rn^operand2MULRd,Rm,Rs32位乘法指令Rd=Rm*Rs50第五十頁,共146頁。應用舉例:2.2.2匯編指令集MOV R3,R1,LSL#3
;R3=R1×80x55R3R10x010x080x08邏輯左移3位ADD R3,R1,#0x08;R3=R1+80x000000050x08加法0x??R1第二操作數R30x0000000D51第五十一頁,共146頁。程序狀態寄存器訪問指令:MRS、MSR用于CPSR或SPSR的讀寫操作。2.2.2匯編指令集應用舉例:MRSR0,CPSR
;讀取CPSR狀態寄存器到R0MSRCPSR,R0
;復制R0內容到CPSR中
與MRS配合使用,實現對CPSR或SPSR寄存器的讀-修改-寫操作52第五十二頁,共146頁。協處理器指令:ARM可支持16個協處理器的操作,通過協處理指令來實現。2.2.2匯編指令集指令說明功能CDPcoprocopl,CRd,CRn,{,op2}協處理器數據操作指令取決于協處理器LDC{L}coproc,CRd<addr>協處理器數據讀取指令取決于協處理器STC{L}coproc,CRd<addr>協處理器數據寫入指令取決于協處理器MRCcoproc,op1,Rd,CRn,{,op2}寄存器到協處理器數據傳送取決于協處理器MCRcoproc,op1,Rd,CRn,{,op2}協處理器到寄存器數據傳送取決于協處理器53第五十三頁,共146頁。軟中斷指令SWI:SWI指令用于產生軟中斷,主要用于用戶程序調用操作系統。指令格式:
2.2.2匯編指令集切換到管理模式將CPSR的內容復制到SPSR寄存器程序跳轉到軟件中斷入口SWIimmed_24可以利用指令中的這個24位立即數向軟中斷服務程序傳遞參數,比如請求的服務類型執行SWI指令后,處理器完成以下動作:54第五十四頁,共146頁。偽指令:ARM偽指令不屬于ARM指令集中的指令,是為了編程方便而定義的。偽指令可以像其它ARM指令一樣使用,但在編譯時這些指令將被等效的ARM指令代替。2.2.2匯編指令集指令說明功能ADR{op}Rd,exper小范圍地址讀取指令Rd←exper.addrADRL{op}Rd,exper中范圍地址讀取指令Rd←exper.addrLDR{op}Rd,=exper/lable大范圍地址讀取指令Rd←exper.addrNOP空操作延時55第五十五頁,共146頁。偽指令:2.2.2匯編指令集ADR指令可以加載地址,可以用于查表等操作。地址非字對齊時,取值范圍是-255-255字節之間;地址字對齊時,取值范圍是-1024-1024之間;對于基于PC相對偏移的地址值時,取值是前后兩個字處。ADRL指令可以加載地址,實現程序跳轉等操作。若地址值是非字對齊時,取值范圍是-64K~64K字節之間;字對齊時,取值范圍是-256K~256K之間;LDR指令,可用于加載一個32位的立即數或地址值到指定寄存器,常用于加載芯片外圍功能部件的寄存器地址。
LDR標寄存器,=表達式與存儲器訪問指令LDR操作不同,偽指令的LDR參數必有“=”
56第五十六頁,共146頁。應用舉例:2.2.2匯編指令集
;查表
ADRR0,DISP_TAB
;加載轉換表地址
LDRBR1,[R0,R2] ;使用R2作為參數,進行查表
…DISP_TABDCB0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF857第五十七頁,共146頁。2.2.2匯編指令集
3.匯編程序模板:AREAReset,CODE,READONLY;聲明只讀代碼段ResetPRESERVE8;字節對齊關鍵字CODE32;ARM程序
ENTRY;程序入口START;標號頂格寫
LDRR3,=0x56000010;ARM指令
LDRR4,=0xddd7fcSTRR4,[R3].......LDRR1,=0x56000014MOVR2,#0x00000STRR2,[R1]
BSTARTEND;程序結束使用“;”進行注釋標號頂格寫實際代碼段聲明文件結束58第五十八頁,共146頁。2.2.3匯編與C交互編程
C程序:ARM開發中大部分程序使用C語言編寫,文件類型為“*.C”。
ARM程序:
匯編程序:涉及到硬件底層操作的代碼有時必須使用匯編語言編寫,文件類型為“*.S”。C與匯編混合編程采用三種方式:內嵌匯編,針對匯編代碼比較短的情況,可采用這種方式。匯編程序和C程序之間進行變量的互訪。利用ATPCS規則,實現匯編程序與C程序相互調用。59第五十九頁,共146頁。2.2.3匯編與C交互編程語法:
1.內嵌匯編:_asm{ 指令}舉例:voidenable_IRQ(void){ int tmp _asm//嵌入匯編代碼
{ mrs tmp,CPSR bic tmp,tmp,#0x80 msr CPSR_c,tmp }}注意:小心使用物理寄存器。不要使用寄存器代替變量。除了CPSR和SPSR,無需保存和恢復寄存器
60第六十頁,共146頁。2.2.3匯編與C交互編程使用IMPORT偽指令引入全局變量。利用LDR和STR指令根據全局變量的地址訪問。
2.全局變量:舉例:IMPORT globval
;IMPORT引入全局變量 ...fuc1
LDR R1,=globval
;采用LDR讀取內容
LDR R0,[R1] ADD R0,R0,#1
STR R0,[R1] MOV PC,LR61第六十一頁,共146頁。2.2.3匯編與C交互編程
4.C調用匯編:在匯編程序中用EXPORT偽指令聲明該子程序。在C程序中使用extern關鍵字聲明外部函數。5.匯編調用C:
3.ATPCS:規定了C程序與匯編程序間子程序間調用的基本規則。
寄存器的使用規則及其相應的名稱。堆棧的使用規則。參數傳遞的規則。在匯編程序中使用IMPORT偽指令聲明要調用的C程序函數。調用C程序中,要正確設置入口參數,然后使用BL調用。62第六十二頁,共146頁。2.2.3匯編與C交互編程
6.實例:任務描述2.D.2,實現匯編和c的相互調用。
AREAReset,CODE,READONLY PRESERVE8 ENTRY IMPORTledMain ;IMPORT聲明外部函數ledMain EXPORTledInit ;EXPORT聲明ledinit可被調用
blledMain ;調用外部函數ledMainledInit ;子函數
ldrr3, =0x56000010 ldrr4, =0xddd7fc strr4, [r3] ldrr1, =0x56000014 ldrr2, =0xffff strr2, [r1]
mov pc,lr ;子函數返回
END63第六十三頁,共146頁。2.2.3匯編與C交互編程
6.實例:任務描述2.D.2,實現匯編和c的相互調用。
#defineGPBCON(*(volatileunsigned*)0x56000010)#defineGPBDAT(*(volatileunsigned*)0x56000014)#defineGPBUP(*(volatileunsigned*)0x56000018)#defineucharunsignedchar#defineuintunsignedintexternledinit();//聲明外部函數voidDelay(intx);intledMain(void){
ledinit();//調用外部函數
while(1) //死循環
{ GPBDAT=~(1<<5); Delay(5); GPBDAT=~(1<<6); Delay(5); GPBDAT=~(1<<8); Delay(5); GPBDAT=~(1<<10); Delay(5); }}64第六十四頁,共146頁。2.2.3匯編與C交互編程
啟動代碼:ARM程序一般由匯編代碼和c代碼兩部分組成。匯編代碼,稱為啟動代碼。系統上電或復位以后運行的第一段代碼,它的作用是在用戶程序之前對系統硬件或軟件運行環境進行必要的初始化,并在最后使程序跳轉至用戶程序(c程序)。它直接面對ARM處理器內核以及硬件控制器進行,所執行的操作與具體的目標系統緊密相關。組成:
建立異常向量表; 初始化系統堆棧; 初始化硬件資源; 初始化軟件運行; 跳轉至主程序(c程序)。65第六十五頁,共146頁。
2.3.1時鐘體系
2.3.2電源模式2.3時鐘與電源體系66第六十六頁,共146頁。
S3C2440的時鐘體系可以產生系統必須的時鐘信號:FCLK、HCLK、PCLK、UCLK。其中:2.3時鐘與電源體系FCLK:用于CPU內核ARM920T。HCLK:用于AHB總線上設備,如:存儲器控制器,中斷控制器,LCD控制器,DMA,USB主機模塊等。
PCLK:用于APB總線的設備,如:WDT,IIS,I2C,PWM定時器,MMC/SD接口,ADC,UART,GPIO,RTC,SPI等。
UCLK:為USB設備的工作頻率48MHz。
S3C2440的電源體系則給出了各種電源管理方案用來保證系統各任務的最佳功耗。67第六十七頁,共146頁。2.3.1時鐘體系
1.時鐘源:晶振或外部時鐘,由芯片引腳OM[3:2]組合確定。OM[3:2]主時鐘源USB時鐘源00晶振晶振01晶振外部時鐘10外部時鐘晶振11外部時鐘外部時鐘開發板晶振為12MHz主頻HCLK達到400MHz功能:時鐘變換電路,實現倍頻功能鎖相環PLL?達到為什么要這么做呢?因為外部時鐘頻率太高,容易受到干擾。68第六十八頁,共146頁。2.3.1時鐘體系
2.鎖相環:兩個鎖相環UPLL和MPLLMPLL:產生FCLK,HCLK和PCLK。UPLL:產生48MHz的UCLK。Fin=12MHzMPLLCON寄存控制FCLK與Fin的關系,即設定倍頻因子CLKDIVN寄存器用于設置FCLK、HCLK、PCLK之間的比例MPLL鎖相環輸出三種頻率69第六十九頁,共146頁。2.3.1時鐘體系鎖相環
鎖相環工作原理:2.重新設置PLL時,時鐘邏輯先禁止FCLK,甚至使用PLL鎖定時間(LockTime)使PLL穩定輸出。
1.上電時,PLL沒有被啟動,此時FCLK=Fin,當復位信號變為高電平后,PLL按默認MPLLCON/CLKDIVN配置運行。3.鎖定時間過后,MPLL輸出正常,CPU工作在新的FCLK下
70第七十頁,共146頁。2.3.1時鐘體系FCLK與Fin關系:
MDIV、PDIV、SDIV由MPLLCON寄存器設定假設:
Fin=12MHz,MDIV=0x7f,PDIV=0x02,SDIV=0x01;則:FCLK=400MHzUPLL與Fin關系:71第七十一頁,共146頁。2.3.1時鐘體系
3.時鐘控制寄存器:寄存器R/W描述初值地址LOCKTIMER/WPLL鎖定時間寄存器0xFFFFFFFF0x4C000000MPLLCONR/WMPLL配置寄存器0x0005C0800x4C000004UPLLCONR/WUPLL配置寄存器0x000280800x4C000008CLKDIVNR/W時鐘比控制寄存器0x000000000x4C00001472第七十二頁,共146頁。鎖相環從啟動到正常工作所需的時間一般保持默認,即0xFFFF即可2.3.1時鐘體系
3.時鐘控制寄存器:PLL鎖定時間寄存器LOCKTIMELOCKTIME位描述初始值U_LTIME[31:16]UCLK的UPLL鎖定時間計數值(300μs)0xFFFFM_LTIME[15:0]FCLK的MPLL鎖定時間計數值(300μs)0xFFFF由LOCKTIME設定73第七十三頁,共146頁。2.3.1時鐘體系
3.時鐘控制寄存器:PLL控制寄存器MPLLCON、UPLLCONMPLLCON/UPLLCON位描述初始值MDIV[19:12]主分頻控制0x96/0x4dPDIV[9:4]預分頻控制0x03/0x03SDIV[1:0]后分頻控制0x0/0x0在設置完UPLLCON后,經過7個NOP后再設置MPLLCON用于設置倍頻因子MDIV、PDIV、SDIV74第七十四頁,共146頁。2.3.1時鐘體系
3.時鐘控制寄存器:時鐘控制比寄存器CLKDIVNCLKDIVN位描述初始值DIVN_UPLL[3]0:UCLK=UPLL時鐘,UPLL時鐘=48MHz1:UCLK=UPLL時鐘/2,UPLL時鐘=96MHzUCLK=48MHz0HDIVN[2:1]00:HCLK=FCLK01:HCLK=FCLK/210:HCLK=FCLK/4當CAMDIVN[9]=0時HCLK=FCLK/8當CAMDIVN[9]=1時11:HCLK=FCLK/3當CAMDIVN[9]=0時
HCLK=FCLK/6當CAMDIVN[9]=1時00PDIVN[0]0:PCLK=HCLK1:PCLK=HCLK/20用于控制HCLK、PCLK、FCLK之間的分頻比舉例:
DIVN_UPLL=1,HDIVN=10,PDIVN=1時,即CLKDIVN=0X0D時,FCLK:HCLK:PCLK=8:2:175第七十五頁,共146頁。2.3.1時鐘體系
4.系統頻率設置方法:任務描述2.D.3,編寫一段代碼實現系統時鐘FCLK為400MHz,HCLK為100MHz,PCLK為50MHz,UCLK為48MHz。設置鎖定時間寄存器LOCKTIME,使用默認值0xffffffff。設置時鐘控制比寄存器CLKDIVN,PCLK:HCLK:FCLK=1:2:8,所以值為0x0d。設置UPLLCON控制寄存器,根據倍頻公式和主頻要求計算或查表MDIV=0x38,PDIV=ox02,SDIV=0x01。延時等待7個NOP間隔。設置MPLLCON控制寄存器,根據倍頻公式和主頻要求計算或查表MDIV=0x7f,PDIV=ox02,SDIV=0x01。
ldr r0,=LOCKTIME ldr r1,=0xffffffff str r1,[r0]
ldr r0,=CLKDIVN ldr r1,=0x0000000d str r1,[r0]
ldr r0,=UPLLCON ldr r1,=0x00038021 str r1,[r0]
nop nop nop nop nop nop nop
ldr r0,=MPLLCON ldr r1,=0x0007f021
str r1,[r0]
76第七十六頁,共146頁。電源管理模塊可以通過軟件來控制時鐘以達到減少電源功耗的功能
。2.3.2電源模式普通模式:所有外設和基本模塊都可運行,此模式功耗最大。模式ARM920TAHB模塊電源管理GPIORTC時鐘APB模塊普通OOOSELOSEL空閑×OOSELOSEL慢速OOOSELOSEL睡眠OFFOFF等待喚醒先前狀態OOFF空閑模式:CPU不工作,外設工作,任何中斷請求都可喚醒CPU,并退出空閑模式。
慢速模式:PLL不工作,利用外部原始時鐘給CPU和外設工作。
睡眠模式:除一個電源供給喚醒電路,其他電源不工作,此模式功耗最低,可通過外部中斷EINT[15:0]或RTC中斷喚醒。77第七十七頁,共146頁。
2.4.1概述
2.4.2GPIO寄存器
2.4.3GPIO編程2.4GPIO78第七十八頁,共146頁。I/O口的劃分:根據傳輸方式不同:
并行、串行
并行:數據總線、片選信號、讀寫信號 串行:UART、SPI、IIC、USB等根據功能不同:通用型、專用型
通用型(GPIO):基本的信息輸入輸出 專用型:LCD驅動電路、SD卡驅動電路等根據傳送方向不同:輸入型、輸出型根據信號類型不同:模擬信號、數字信號
模擬信號:AD、DA、觸摸屏等
數字信號:外部中斷、存儲器交換數據2.4GPIO79第七十九頁,共146頁。
GPIO,通用輸入輸出(GeneralPurposeI/O)的簡稱,是I/O的一種。“通用”即該I/O口可以通過引腳外接不同種類的外部設備。在嵌入式系統中,經常需要控制許多結構簡單的外部設備,有時只需要CPU提供輸入高低電平信號即可,例如控制LED的亮或滅。
GPIO的使用在ARM開發中是最基礎的硬件操作,只有掌握了外部設備最基本的開發流程,才能以后的開發應用能夠舉一反三,縮短開發周期。2.4GPIO80第八十頁,共146頁。2.4GPIOCPUI/O開關量檢測
組合時序,進行串并行數據I/OLED、LCD等結果顯示片外數據存儲控制命令驅動功能其它特殊信號輸入、輸出81第八十一頁,共146頁。
S3C2440共有289個引腳,其中有130個多功能I/O口,特點如下:2.4.1概述共分為九組GPIO:GPA、GPB、GPC、GPD、GPE、GPF、GPG、GPH、GPJ,每組I/O接口外接引腳數不同大部分I/O是復用的,可以單獨被配置為輸入模式、輸出模式或者功能模式,但GPA除了用做功能模式外,只能用作輸出口。每組I/O接口都有獨立的數據寄存器、控制寄存器、上拉電阻寄存器來控制接口工作狀態和輸入輸出數據。82第八十二頁,共146頁。
S3C2440每組I/O都可以通過3個寄存器來控制和訪問,I/O寄存器的基地址為0x56000000。寄存器分別是:2.4.1GPIO寄存器控制寄存器GPxCON:定義每個引腳的功能是輸入、輸出還是第二功能。數據寄存器GPxDAT:用于讀寫引腳。上拉寄存器GPxUP:控制每個引腳是否使用上拉電阻。當引腳被設置為輸入時,可從此寄存器相應位讀取數據。當引腳被設置為輸出時,寫此寄存器可以寫到端口的相應位中。以GPB口為例,寄存器為:83第八十三頁,共146頁。寄存器GPBCON:2.4.1GPIO寄存器GPBCON位描述初始值GPB10[21:20]00=輸入01=輸出10=nXDREQ011=保留0GPB9[19:18]00=輸入01=輸出10=nXDACK011=保留0GPB8[17:16]00=輸入01=輸出10=nXDREQ111=保留0GPB7[15:14]00=輸入01=輸出10=nXDREQ111=保留0GPB6[13:12]00=輸入01=輸出10=nXBREQ11=保留0GPB5[11:10]00=輸入01=輸出10=nXBACK11=保留0GPB4[9:8]00=輸入01=輸出10=TCLK[0]11=保留0GPB3[7:6]00=輸入01=輸出10=TOUT311=保留0GPB2[5:4]00=輸入01=輸出10=TOUT211=保留0GPB1[3:2]00=輸入01=輸出10=TOUT111=保留0GPB0[1:0]00=輸入01=輸出10=TOUT011=保留0PA口功能設置不同:GPACON的每一位對應一個引腳:0-輸出;1-地址線或地址控制每個I/O口功能由兩位組合定義:00-輸入;01-輸出;10-功能;11-保留。應用舉例:設置GPB5為輸出 LDR R0,=0x56000010;GPBCON寄存器地址0x56000010 MOV R1,#0x00000400;[11:10]為0b01,輸出 STR R1,[R0];配置GPBCON,GPB5為輸出
84第八十四頁,共146頁。寄存器GPBDAT:2.4.1GPIO寄存器GPBDAT位描述初始值GPB[10:0][10:0]配置為輸入時,相應位為引腳狀態配置為輸出時0:低電平1:高電平0應用舉例:GPB5輸出高低電平LDR R0,=0x56000014;GPBDAT寄存器地址0x56000014MOV R1,#0x0020STR R1,[R0];GPB5輸出高電平MOV R1,#0x00000000STR R1,[R0];GPB5輸出低電平
85第八十五頁,共146頁。寄存器GPBUP:2.4.1GPIO寄存器GPBUP位描述初始值GPB[10:0][10:0]0:使能上拉1:禁止上拉0應用舉例:GPB上拉電阻禁止LDR R0,=0x56000018;GPBUP寄存器地址0x56000018MOV R1,#0xff;每位為1STR R1,[R0];上拉電阻禁止
86第八十六頁,共146頁。2.4.3GPIO編程1.根據需求分析端口功能
GPIO編程步驟:GPB5、6、8、10功能為為輸出。輸出為低電平時,LED被點亮,輸出為高電平時,LED被熄滅
。任務描述2.D.4:利用GPIO的編程實現跑馬燈程序
87第八十七頁,共146頁。2.4.3GPIO編程2.配置GPxCON和GPxUP寄存器
GPIO編程步驟:任務描述2.D.4:利用GPIO的編程實現跑馬燈程序
#defineGPBCON(*(volatileunsigned*)0x56000010)#defineGPBDAT(*(volatileunsigned*)0x56000014)#defineGPBUP(*(volatileunsigned*)0x56000018)intledMain(void){ //配置寄存器
GPBCON=0x1dd7fc;// GPB5、6、8、10功能為為輸出。
GPBDAT=((1<<5)|(1<<6)|(1<<8)|(1<<10));
GPBUP=0x00;//上拉電阻使能
...}88第八十八頁,共146頁。2.4.3GPIO編程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外傷急救培訓標準流程
- T/ZHCA 601-2020食品生產企業消毒技術規范
- 2025西南林業大學輔導員考試試題及答案
- 2025遼寧公安司法管理干部學院輔導員考試試題及答案
- 2025福建江夏學院輔導員考試試題及答案
- 異物窒息急救流程
- 好習慣講衛生
- 健康體育課件
- 中國石油集團長城鉆探工程公司招聘筆試題庫2025
- 2025年心理學基礎知識與應用考試試題及答案
- 《電機學》課程思政教學設計案例(一等獎)
- 浙江省大中型水庫控制運用計劃編制導
- 杯口基礎鋼柱安裝工法
- 本草綱目歌詞及曲譜
- 全國殯葬管理信息系統簡介
- 2014國家電纜橋架標準
- Office辦公軟件培訓教程課件
- 【圖文】做個受歡迎的人
- 逐月兇星總局
- 退伍軍人服役證明
- FRM真題及答案
評論
0/150
提交評論