freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

el-tab-arm-ii-2410說明書-資料下載頁

2025-05-29 22:01本頁面
  

【正文】 每一種狀態(tài)的堆棧指針寄存器(SP)都是獨(dú)立的。所以,對(duì)程序中需要用到的每一種模式都要給SP定義一個(gè)堆棧地址。方法是改變狀態(tài)寄存器內(nèi)的狀態(tài)位,使處理器切換到不同的狀態(tài),然后給SP賦值。注意:不要切換到User模式進(jìn)行User模式的堆棧設(shè)置,因?yàn)檫M(jìn)入U(xiǎn)ser模式后就不能再操作CPSR回到別的模式了,可能會(huì)對(duì)接下去的程序執(zhí)行造成影響。這是一段堆棧初始化的代碼示例:。// 預(yù)定義處理器模式常量USERMODE EQU 0x10FIQMODE EQU 0x11IRQMODE EQU 0x12SVCMODE EQU 0x13ABORTMODE EQU 0x17UNDEFMODE EQU 0x1bSYSMODE EQU 0x1fNOINT EQU 0xc0 // 屏蔽中斷位InitStacks mrs r0,cpsr bic r0,r0,MODEMASK orr r1,r0,UNDEFMODE|NOINT msr cpsr_cxsf,r1 。//未定義模式堆棧 ldr sp,=UndefStack orr r1,r0,ABORTMODE|NOINT msr cpsr_cxsf,r1 。//終止模式堆棧 ldr sp,=AbortStack orr r1,r0,IRQMODE|NOINT msr cpsr_cxsf,r1 。//中斷模式堆棧 ldr sp,=IRQStack orr r1,r0,FIQMODE|NOINT msr cpsr_cxsf,r1 。//快中斷模式堆棧 ldr sp,=FIQStack bic r0,r0,MODEMASK|NOINT orr r1,r0,SVCMODE msr cpsr_cxsf,r1 。//服務(wù)模式堆棧 ldr sp,=SVCStack mov pc,lr LTORG4. 初始化有特殊要求的硬件模塊比如,時(shí)鐘模塊,看門狗模塊等。5. 初始化應(yīng)用程序執(zhí)行環(huán)境映像一開始總是存儲(chǔ)在ROM/Flash里面的,其RO部分即可以在ROM/Flash里面執(zhí)行,也可以轉(zhuǎn)移到速度更快的RAM中執(zhí)行;而RW和ZI這兩部分是必須轉(zhuǎn)移到可寫的RAM里去。所謂應(yīng)用程序執(zhí)行環(huán)境的初始化,就是完成必要的從ROM到RAM的數(shù)據(jù)傳輸和內(nèi)容清零。下面是在ADS下,一種常用存儲(chǔ)器模型的直接實(shí)現(xiàn):LDR r0,=|Image$$RO$$Limit| 得到RW數(shù)據(jù)源的起始地址LDR r1,=|Image$$RW$$Base| RW區(qū)在RAM里的執(zhí)行區(qū)起始地址LDR r3,=|Image$$ZI$$Base| ZI區(qū)在RAM里面的起始地址CMP r0,r1 比較它們是否相等 BEQ %F10 CMP r1,r3 LDRCC r2,[r0],4 STRCC r2,[r1],4 BCC %B01 LDR r1,=|Image$$ZI$$Limit| MOV r2,02 CMP r3,r1 STRCC r2,[r3],4 BCC %B2程序?qū)崿F(xiàn)了RW數(shù)據(jù)的拷貝和ZI區(qū)域的清零功能。其中引用到的4個(gè)符號(hào)是由鏈接器輸出的。|Image$$RO$$Limit|:表示RO區(qū)末地址后面的地址,即RW數(shù)據(jù)源的起始地址|Image$$RW$$Base|:RW區(qū)在RAM里的執(zhí)行區(qū)起始地址,也就是編譯器選項(xiàng)RW_Base指定的地址|Image$$ZI$$Base|:ZI區(qū)在RAM里面的起始地址|Image$$ZI$$Limit|:ZI區(qū)在RAM里面的結(jié)束地址后面的一個(gè)地址程序先把ROM中|Image$$RO$$Limt|的地址開始的RW初始數(shù)據(jù)拷貝到RAM里面|Image$$RW$$Base|開始的地址,當(dāng)RAM這邊的目標(biāo)地址到達(dá)|Image$$ZI$$Base|后就表示RW區(qū)的結(jié)束和ZI區(qū)的開始,接下去就對(duì)這片ZI區(qū)進(jìn)行清零操作,直到遇到結(jié)束地址|Image$$ZI$$Limit|。6. 改變處理器模式因?yàn)樵诔跏蓟^程中,許多操作需要在特權(quán)模式下才能進(jìn)行(比如對(duì)CPSR的修改),所以要特別注意不能過早的進(jìn)入用戶模式。內(nèi)核級(jí)的中斷使能也可以考慮在這一步進(jìn)行。如果系統(tǒng)中另外存在一個(gè)專門的中斷控制器,比如三星的S3C2410,這么做總是安全的。7. 呼叫主應(yīng)用程序當(dāng)所有的系統(tǒng)初始化工作完成之后,就需要把程序流程轉(zhuǎn)入主應(yīng)用程序。最簡(jiǎn)單的一種情況是:IMPORT MainB Main直接從啟動(dòng)代碼跳轉(zhuǎn)到應(yīng)用程序的主函數(shù)入口,當(dāng)然主函數(shù)名字可以由用戶隨便定義。 在ARM ADS環(huán)境中,還另外提供了一套系統(tǒng)級(jí)的呼叫機(jī)制。IMPORT __main B __main__main()是編譯系統(tǒng)提供的一個(gè)函數(shù),負(fù)責(zé)完成庫函數(shù)的初始化和初始化應(yīng)用程序執(zhí)行環(huán)境,最后自動(dòng)跳轉(zhuǎn)到main()函數(shù)。但這要進(jìn)一步設(shè)置一些參數(shù),使用起來較復(fù)雜,隨著對(duì)ARM的進(jìn)一步的應(yīng)用,可以以后使用該種方式??梢詥尾綀?zhí)行工程文件, 認(rèn)真學(xué)習(xí)代碼的注釋,觀察各存儲(chǔ)器的變化。建議用實(shí)驗(yàn)程序\HARDWARE\ADS\實(shí)驗(yàn)四\ Debugger中運(yùn)行,運(yùn)行之前,首先配置options\configure target\ARMUL,選ARMUL是使用軟件仿真。實(shí)驗(yàn)五 ARM的I/O接口實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 了解S3C2410的通用I/O接口2. 掌握I/0功能的復(fù)用并熟練的配置,進(jìn)行編程實(shí)驗(yàn)二、實(shí)驗(yàn)內(nèi)容1. 在實(shí)驗(yàn)箱的CPU板上點(diǎn)亮LED燈LEDLED2,并輪流閃爍!三、實(shí)驗(yàn)設(shè)備1. ELARM830教學(xué)實(shí)驗(yàn)箱,PentiumII以上的PC機(jī),仿真調(diào)試電纜。2. PC操作系統(tǒng)WIN98或WIN2000或WINXP,仿真調(diào)試驅(qū)動(dòng)程序。四、實(shí)驗(yàn)原理S3C2410 CPU 共有117個(gè)多功能復(fù)用輸入輸出口,分為8組端口:l 4個(gè)16位的I/O端口 (PORT C、PORT D、PORT E、PORT G)l 2個(gè)11位的I/O端口 (PORT B 和PORT H)l 1個(gè)8位的I/O端口(PORT F)l 1個(gè)23位的I/O端口(PORT A)這些通用的GPI/O接口,是可配置的, PORTA除功能口外,它們僅用作輸出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作為輸入輸出口使用。配置這些端口,是通過一些寄存器來實(shí)現(xiàn)的,這些寄存器均有各自的地址,位長(zhǎng)32位。往該地址中寫入相應(yīng)的數(shù)據(jù),即可實(shí)現(xiàn)功能及數(shù)據(jù)配置。GPACON (0x56000000) //Port A controlGPADAT (0x56000004) //Port A dataGPBCON (0x56000010) //Port B controlGPBDAT (0x56000014) //Port B dataGPBUP (0x56000018) //Pullup control BGPCCON (0x56000020) //Port C controlGPCDAT (0x56000024) //Port C dataGPCUP (0x56000028) //Pullup control CGPDCON (0x56000030) //Port D controlGPDDAT (0x56000034) //Port D dataGPDUP (0x56000038) //Pullup control DGPECON (0x56000040) //Port E controlGPEDAT (0x56000044) //Port E dataGPEUP (0x56000048) //Pullup control EGPFCON (0x56000050) //Port F controlGPFDAT (0x56000054) //Port F dataGPFUP (0x56000058) //Pullup control FGPGCON (0x56000060) //Port G controlGPGDAT (0x56000064) //Port G dataGPGUP (0x56000068) //Pullup control GGPHCON (0x56000070) //Port H controlGPHDAT (0x56000074) //Port H dataGPHUP (0x56000078) //Pullup control H現(xiàn)用G口、H口舉例說明。對(duì)于G口如表25表25表253,表251表252表253也就是說,在地址0x0x56000060中,給32位的每一位賦值,那么,在CPU的管腳上就定義了管腳的功能值。當(dāng)G口某管腳配置成輸出端口,則在PDATG對(duì)應(yīng)的地址中的對(duì)應(yīng)位上,寫入1,則該管腳輸出為高電平,寫入0,則該管腳輸出為低電平。若配置為功能管腳,則該管腳變成具體的功能腳。對(duì)于H口見表25表25表25表257表254表255表256表257也就是說,在地址0x56000070中,給32位的每一位賦值,那么,在CPU的管腳上就定義了管腳的功能值。當(dāng)H口某管腳配置成輸入端口,則在GPHDAT對(duì)應(yīng)的地址中的對(duì)應(yīng)位上,得到1,則該管腳的輸入為高電平,得到0,則該管腳的輸入為低電平。當(dāng)H口某管腳配置成輸出端口,則在GPGDAT對(duì)應(yīng)的地址中的對(duì)應(yīng)位上,寫入1,則該管腳輸出為高電平,寫入0,則該管腳輸出為低電平。若配置為功能管腳,則該管腳變成具體的功能腳。其他端口配置請(qǐng)參見PDF文擋。在程序中對(duì)GPI/O各寄存器的讀寫實(shí)現(xiàn),是通過給宏賦值實(shí)現(xiàn)的。;具體如:。define rGPACON (*(volatile unsigned *)0x56000000) //Port A controldefine rGPADAT (*(volatile unsigned *)0x56000004) //Port A data define rGPBCON (*(volatile unsigned *)0x56000010) //Port B controldefine rGPBDAT (*(volatile unsigned *)0x56000014) //Port B datadefine rGPBUP (*(volatile unsigned *)0x56000018) //Pullup control B define rGPCCON (*(volatile unsigned *)0x56000020) //Port C controldefine rGPCDAT (*(volatile unsigned *)0x56000024) //Port C datadefine rGPCUP (*(volatile unsigned *)0x56000028) //Pullup control C define rGPDCON (*(volatile unsigned *)0x56000030) //Port D controldefine rGPDDAT (*(volatile unsigned *)0x56000034) //Port D datadefine rGPDUP (*(volatile unsigned *)0x56000038) //Pullup control D define rGPECON (*(volatile unsigned *)0x56000040) //Port E controldefine rGPEDAT (*(volatile unsigned *)0x56000044) //Port E datadefine rGPEUP (*(volatile unsigned *)0x56000048) //Pullup control E define rGPFCON (*(volatile unsigned *)0x56000050) //Port F controldefine rGPFDAT (*(volatile unsigned *)0x56000054) //Port F datadefine rGPFUP (*(volatile unsigned *)0x56000058) //Pullup control F define rGPGCON (*(volatile unsigned *)0x56000060) //Port G controldefine rGPGDAT (*(volatile unsigned *)0x56000064) //Port G datadefine rGPGUP (*(volatile u
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1