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

正文內(nèi)容

從51到arm的華麗轉(zhuǎn)身(參考版)

2025-05-30 23:39本頁面
  

【正文】 所以可用它下載程序、調(diào)試程序。JLINK是一個基于JTAG方法的一個產(chǎn)品。TMS可以使其tap controller復(fù)位,并且控制TAP狀態(tài)切換。通過內(nèi)部TAP接口及TAP控制器對寄存器進(jìn)行訪問。一個含,有JTAG接口模塊的CPU,只要時鐘正常就可以通過JTAG接口訪問CPU內(nèi)部寄存器,掛在CPU總線上的設(shè)備及內(nèi)置模塊的寄存器。它也有好處,比如不批量 做專用的,內(nèi)部的電路不可量。 一些知識點(diǎn) FPGA教學(xué)可以,做芯片驗(yàn)證可以。我正在執(zhí)行一個中斷服務(wù)程序,然后再次發(fā)生異常,保存,跳轉(zhuǎn)(CPU)、再次判斷是哪個中斷,進(jìn)去之后壓棧,運(yùn)行另一個中斷的服務(wù)程序,運(yùn)行完返回,這是就是返回到上一個中斷了。從2410對中斷嵌套處理看各方角色比起2410的處理流程不同的是,因?yàn)橛辛酥袛嗫刂破?,這就是實(shí)現(xiàn)高優(yōu)先級嵌套的硬件基礎(chǔ),因?yàn)槊恳淮芜M(jìn)入異常模式用戶都會保存環(huán)境,這就是中斷嵌套的軟件基礎(chǔ)。也就是說2410處理流程除了ARM對異常的響應(yīng)是硬件機(jī)制外,其余的都是代碼實(shí)現(xiàn)的。一個中斷申請?zhí)岢龊?,IRQ異常發(fā)生,切換模式、保存CPSR、保存PC,然后跳轉(zhuǎn)到handleIRQ函數(shù),然后跳轉(zhuǎn)到ISRIRQ(這只是一個大概流程,也許會定義更多的跳轉(zhuǎn))根據(jù)中斷源向量表的首地址和偏移量寄存器找出到底是哪個中斷發(fā)生了。從2410對中斷處理看硬件機(jī)制首先應(yīng)該明確2410與ARM內(nèi)核的異常處理系統(tǒng)的角色,根據(jù)之前的ARM異常處理流程,我們清楚明了了哪些是CPU的硬件機(jī)制。當(dāng)返回地址保存在當(dāng)前異常模式的r14時,使用其中一種機(jī)制,當(dāng)返回地址保存在堆棧時使用另一種機(jī)制。退出異常處理時,矛盾是假設(shè)如果先恢復(fù)CPSR,則保存返回地址的當(dāng)前異常模式的r14就不能再訪問了;如果先恢復(fù)PC,異常處理程序?qū)⑹χ噶盍鞯目刂疲沟肅PSR不能恢復(fù)。所以注定是要先轉(zhuǎn)換模式再保存。矛盾是,當(dāng)你轉(zhuǎn)到異常模式之后,PC的值可能不變,但CPSR的值肯定已經(jīng)發(fā)生改變了,怎么還能保存呢。在CPU進(jìn)行進(jìn)入中斷和返回中斷時,是有矛盾存在的,這種矛盾的存在也注定了不會讓用戶自己保存PC和CPSR。要注意CPU的硬件機(jī)制。SPSR保存的跳之前的狀態(tài)。返回時有一個比較囧的地方,一般進(jìn)中斷的時候要對所有的寄存器進(jìn)行壓棧保存,以防止中斷嵌套時破壞任務(wù)程序的狀態(tài),這個工作需要自己做。對于ARM來說,中斷前后環(huán)境的保存和恢復(fù)不是硬件機(jī)制,CPU負(fù)責(zé)模式的轉(zhuǎn)換、PCLR,CPSRSPSR,根據(jù)中斷向量表跳轉(zhuǎn),這是硬件機(jī)制。第二是要初始化各個模式下的堆棧,因?yàn)槎褩J浅绦蜻\(yùn)行時必須的,若是不初始化,SP操作相同的地址空間,將發(fā)生意想不到的錯誤。這就是硬件機(jī)制,那么CPU接下來要正常工作有兩部分是必須的,一個是有異常向量表。下面從三個角度來認(rèn)識責(zé)任劃分。 責(zé)任細(xì)分:ARM?2410?編譯器?我?ARM提供CPU、2410提供外設(shè)控制器、我提供代碼、編譯器負(fù)責(zé)編譯。B 標(biāo)號,就是直接跳到標(biāo)號所在地址。如地址傳送指令:LDR R0,=PLACe;就是把PLACE的的地址加載到寄存器。也就是說變量名就是地址的替代。它們都是一個或一片存儲空間的代表?;蛘哌M(jìn)行地址傳送的時候用到。MSR CPSR_F,R5(—f指示修改的區(qū)域)LDR偽指令。 MRS()將CPSR或者SPS傳送給寄存器。 MVN Rd,Operand2 將op按位邏輯非,送到Rd.CMP,除了將結(jié)果丟棄以外,與SUBS一樣CMN,除了將結(jié)果丟棄以外,與ADDS一樣TST....ANDSTEQ....EORSMUL乘:MUL R10,R2,R5MLA 乘加:MLA R10,R2,R1,R5(結(jié)果加上R5)無符號和帶符號,長整型乘、乘加UMULL UMLALSMULL SMLALB 轉(zhuǎn)移 BL 轉(zhuǎn)移并保存PC到LRSWI 引起SWI異常,變?yōu)楣芾砟J? CPSRSPSR,執(zhí)行SWI向量。R2[R1]注意靈活的第二操作數(shù)(結(jié)果寄存器、第一操作數(shù)、第二操作數(shù)) OP{cmd}{s} Rd,Rn,Operand2 (Rd結(jié)果寄存器,Rn第一操作數(shù),Operand2第二操作數(shù)) ADD:Rn與Operand2相加Rd SUB Rn與Operand2相減Rd RSB:Operand2RnRd ADC:(ADD with carry)Rn與Operand2相加,再加上進(jìn)位位 SBC:Rn與Operand2相減,若進(jìn)位清零,則結(jié)果減1; RSB類似 AND ORR EOR BIC 分別是按位與、或、異或。 SWP R3,R2,[R1] 。LDR R0,=GPHCONLDR R1,=0X2AFAAASTR R1,[R0]ARM指令集:(幾乎每一條指令都有條件碼,EQ,NE,HI,LS等;指令后加S表示要置標(biāo)志位)ARM存儲器訪問指令A(yù)RM數(shù)據(jù)處理指令A(yù)RM轉(zhuǎn)移指令A(yù)RM協(xié)處理器指令雜項(xiàng)ARM指令A(yù)RM偽指令。 R5 R1R9 R0LDMIA R0!,{R2R9} STMIA R1!,{R2R9} 將R0指向的位置復(fù)制到R1指向的位置,RO后加!自動尋址8個字節(jié),值增加32,R1不變。舉例:STMIA 分析:類壓棧、之后、地址增加,查詢之后是空。對于STMFD,地址減少。 FD,向下生長,對于壓棧,向下生長,地址減少。明確幾個重要的概念:ST store 出去(對于CPU內(nèi)部寄存器) 即保存寄存器,類似入棧LD LOAD 進(jìn)來 即給寄存器賦值,類似出棧向上還是向下生長是對于壓棧來說的,根據(jù)此,來判斷壓和入的地址變化情況之前之后:地址是在存儲一個值之前還是之后變化滿:SP停留在最后進(jìn)棧的元素 F空:SP停留在最后進(jìn)棧的元素的下一個位置 EA 向上生長D 向下生長M塊復(fù)制所以FD 遞減滿 FA 遞增滿 EA 遞增空 ED 遞減空。有堆棧操作和存儲區(qū)操作的角度。第二個寄存器操作數(shù)在與第一個結(jié)合之前先進(jìn)行移位操作 ADD R3,R2,R1,LSL 3 R3R2+R1*8 LSL LSR 邏輯左右移 ASR算術(shù)右移寄存器為地址指針(基址寄存器) LDR RO,[R1] R0[R1] STR R0,[R1] R0[R1]將基址寄存器的內(nèi)容與指令中給出的位移量相加,形成操作數(shù)的有效地址(最大加減4KB) LDR RO,[R1,4] R0[R1+4] 自動改變基址寄存器,很有用 LDR R0,[R1,4]! R0[R1+4] R1R1+4 LDR RO,[R1],4 R0[R1] R1R1+4 LDR RO,[R1+R2] R0[R1+R2]6,一次傳送幾個寄存器的值,允許指令傳送16個寄存器的任何子集或所有16個寄存器。ARM處理器支持的尋址方式:寄存器尋址立即尋址寄存器移位尋址寄存器間接尋址變址尋址多寄存器尋址堆棧尋址塊復(fù)制尋址詳細(xì)解釋如下:指令中地址碼給出的事寄存器編號,即寄存器的內(nèi)容是操作數(shù) ADD R0,R1,R2 ROR1+R2特殊的,不是給出操作數(shù)的地址碼,而是直接給出操作數(shù)本身。匯編語言ARM所支持的尋址方式。 PC,R14_fiq ,4 (不同模式有不同的指令,返回PC的同時返回CPSR,一條指令實(shí)現(xiàn))(2) SUB LR,LR,4 STMFD R13!,{R0,R4R12,LR};將寄存器列表中的寄存器R0,R4到R12,LR存入堆棧。 (1)SUBS注意: 保存在LR中的PC值,和該值返回時的處理過程。然后就到了執(zhí)行代碼的時候從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。異常處理流程:(硬件機(jī)制,只做這些,跟代碼無關(guān)。異常返回時,SPSRCPSR,R14PC)在啟動代碼中首先就是設(shè)置所謂的異常向量表,也就是在指定的位置放置異常處理程序(一般是跳轉(zhuǎn)指令)。包括復(fù)位 管理模式 0x00000000軟中斷SWI 管理模式 0x00000008IRQ IRQ模式 0x00000018FIQ FIQ模式 0x0000001c還包括預(yù)取中止、數(shù)據(jù)中止、未定義。異常是比中斷更大的概念。異常處理當(dāng)正常的程序執(zhí)行流程發(fā)生暫時的停止時,稱之為異常對異常的處理有優(yōu)先級,處理異常需要跳轉(zhuǎn)至異常模式。6中種除了系統(tǒng)模式又稱為異常模式(即處理異常時的工作模式)。工作模式ARM的7中處理器模式(不同的模式下有自己的行為準(zhǔn)則,有各自可見的寄存器組,導(dǎo)致了各自的堆??臻g(R13各自可見))USR;正常程序執(zhí)行模式FIQ;支持高速數(shù)據(jù)傳送和通道處理IRQ;用于通用中斷的處理。Spsr保存程序狀態(tài)寄存器,即發(fā)生異常時對CPSR進(jìn)行保存,保存當(dāng)前狀態(tài)。CPSR在所有模式下都可見。R14用作子程序連接寄存器LR,中斷異?;驁?zhí)行BL時得到PC即R15的備份。R8R14 異常模式下訪問時指定模式RX_mode R15 :即PCR13和R14每個異常組都有各自的。不同的模式?jīng)Q定了寄存器的可見性。ARM內(nèi)部寄存器(ARM9)ARM處理器有37個內(nèi)部寄存器。對底層工作方式的了解不但有助于搞明白整個嵌入式系統(tǒng)的運(yùn)行原理,也打開了視野,朝更高層次的開發(fā)邁進(jìn)。 ARM的心聲寄存器、工作模式、異常處理、匯編如果還像當(dāng)時開發(fā)51那樣,還會遭遇尷尬,只會用C語言寫代碼的話,根本不算是了解了這款處理器。若是不初始化,各個模式的堆棧都操作0X00000不久亂套了嗎。之后通過loader配合內(nèi)部引導(dǎo)代碼將程序燒寫到內(nèi)部flash。 從0到運(yùn)行我們的硬件從最小系統(tǒng)開始,軟件從bootloader開始,交叉開發(fā)環(huán)境也全部齊備,讓我們來簡單分析一下,我們的代碼怎么一步步走向運(yùn)行。底板電路設(shè)計(jì)才是技術(shù)核心,結(jié)合那句話,計(jì)算機(jī)只會做一樣工作計(jì)算,需要外部的接口發(fā)揮它的能力。而底板(接口板)一般為雙層板,與其工藝不同,采用兩部分結(jié)構(gòu)好處是成本、多次使用,方便升級。模式線配置:需要對OM0和OM1配置電平以決定啟動方式,對OM2和OM3配置電平以決定時鐘源。存儲器設(shè)計(jì)2410有自己的存儲器控制器,并且規(guī)定了哪些bank空間是RAM哪些是FLASH,存儲器芯片嚴(yán)格按照DATASHEET上的要求和標(biāo)明的引腳連接方式與存儲器控制器的存儲器接口相連就可以,控制器會根據(jù)地址產(chǎn)生讀寫存儲器芯片的時序,完成存取數(shù)據(jù)的操作。復(fù)位電路設(shè)計(jì)可以在nRESET端設(shè)計(jì)像51單片機(jī)那樣的阻容復(fù)位電路,但為了穩(wěn)定,可以使用復(fù)位芯片如MAX811或IMP811。內(nèi)部有兩個鎖相環(huán)PLL,MPLL提供前三個,UPLL給USB提供48MHZ的時鐘。課程實(shí)驗(yàn)中電源電壓5V。JTAG也不是必須的。4很多都要接,比如2410要通過4跟OM線的電平高低選擇時鐘源,選擇從哪個地方啟動。有時啟動模式選擇有時需要JTAG對芯片內(nèi)所有部件進(jìn)行訪問,通過該接口對系統(tǒng)調(diào)試、編程。loader,連接描述文件、下載引導(dǎo)代碼什么的都齊備,連用于程序也齊備了,那硬件方面應(yīng)該做些什么呢?硬件系統(tǒng)從最小系統(tǒng)開始,所謂最小系統(tǒng)就是微處理器能夠運(yùn)行的最小單元,在做51開發(fā)的時候我們知道最小系統(tǒng)是由:電源、晶振、復(fù)位,再接一個MAX232引出RS232串口用作下載和通信。debuggeramp。linkeramp。pileramp。 開發(fā)前的東風(fēng)現(xiàn)在有了編譯開發(fā)環(huán)境assembleramp。人編的VIVI起來之后,先是初始化,再從串口接受數(shù)據(jù)指令,并將信息反饋給超級終端(人機(jī)交互),然后對指令進(jìn)行分析,你是要下載內(nèi)核呢?還是要下載根文件系統(tǒng)?還是要啟動內(nèi)核?下載內(nèi)核可以有多種方式,如果選擇網(wǎng)口下載,那么配置好地址等數(shù)據(jù)后,vivi將從網(wǎng)口接受數(shù)據(jù),可以想象,vivi已經(jīng)有了這些協(xié)議棧,和相關(guān)的驅(qū)動可以進(jìn)行通信,把數(shù)據(jù)放在相應(yīng)的位置。VIVI移植:換CPU,改ARCH核心板一樣,外設(shè)變了,改DRIVERCPU外圍改變,即核心板變了,改include里配置。相當(dāng)于設(shè)備驅(qū)動include目錄:存放頭文件,包括2410和其開發(fā)板的頭文件。ARCH目錄:是與CPU相關(guān)的初始化代碼,此目錄包含了所用VIVI支持的CPU。一定要讀一下bootlloader。嵌入式中的它并沒有像BIOS那樣是固件程序,因?yàn)樵谇度胧降氖澜缋?,根本做不成通用的,?yán)重依賴硬件。直接用了。bootloader的必要性是由其內(nèi)容決定的,主要是啟動加載和下載兩個功能也是兩個模式。Bootloader啟動過程上電之后,(配置中斷、初始化堆棧、拷貝代碼等),然后進(jìn)行加載內(nèi)核的準(zhǔn)備至少初始化一個串口,以便向終端用戶反饋數(shù)據(jù)。從主機(jī)下載的文件通常首先被Bootloader保存到目標(biāo)機(jī)的RAM中,然后再被 Bootloader寫到目標(biāo)機(jī)上的FLASH 類固態(tài)存儲設(shè)備中。下載模式:目標(biāo)機(jī)上的Bootloader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件。啟動加載模式是 Bootloader的正常工作模
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1