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

正文內容

從51到arm的華麗轉身-閱讀頁

2025-06-11 23:39本頁面
  

【正文】 oader的這種模式通常在第一次安裝內核與根文件系統(tǒng)時被使用;此外,以后的系統(tǒng)更新也會使用到這種工作模式。檢測系統(tǒng)內存映射,哪些是可用的RAM?在這一步之后,將檢測外部按鍵,有按鍵按下將進入下載模式,沒有按鍵的話將執(zhí)行下面的步驟,加載內核:將kenel和根文件系統(tǒng)從flash調入RAM為內核啟動設置參數(shù)調用內核。因為嚴重依賴硬件,一部分代碼需要用匯編編寫,程序難度較大,我們當然可以自己編寫代碼然后放在用戶程序中,但是既然有人編出來了,而且支持的硬件較多,而且多種協(xié)議,功能也比較全面。通過JTAG來下載,它是最底層的程序,沒有人引導它,靠硬件下載。ARM7 TDMI的系統(tǒng)上電復位后0x00000000處開始,而這個地址安排的就是bootloader。bootloader有不同的品牌 支持不同的CPU體系結構、vivi是韓國arm9的一個,現(xiàn)在拿用在2410上的VIVI來說:VIVI源碼包含的目錄:Documentation目錄:其下文件為VIVI使用指南。Driver目錄:存放的設備讀寫和控制文件和操作文件,對串口支持x modem和y modem協(xié)議。init目錄,script目錄,腳本文件menuconfig,能運行出一個界面,就有了這樣一條指令。連接描述文件屬于編譯器的描述文件,將目標代碼按照順序連接成可執(zhí)行程序,vivi也有自己的連接描述文件。有了內核和文件系統(tǒng),這就相當于兩臺PC機處于對等的位置,可以將應用程序文件,通過NFS網(wǎng)絡文件系統(tǒng)配合tftp協(xié)議像拷貝一樣將應用程序傳輸。amp。amp。amp。amp。而ARM的最小系統(tǒng)也是類似的:微控制器(例如2410,CPU+外設接口/外設控制器)電源、時鐘、復位、存儲器(SDRAM/FLASH(NOR8位、NAND8 16 32位)) FLASH:存放操作系統(tǒng)、用戶程序等需要掉電后保存的數(shù)據(jù) SDRAM:系統(tǒng)運行的主要區(qū)域,系統(tǒng)及用戶數(shù)據(jù)及堆棧,都在這個區(qū)域。這些并不都是必須的,1和2一般都是必須的,三星的芯片一般需要接外部存儲器,而STM32是不用的。STM32要選擇從FLASH啟動還是從固化代碼啟動。拿2410的最小系統(tǒng)制作舉例:與一般的ARM系統(tǒng)相同,都需要微處理器、電源、晶振、復位、存儲器(flash、SDRAM)、JTAG接口等,具體情況如下:電源設計:。晶振設計2410的時鐘控制邏輯可以產生系統(tǒng)所需要的時鐘,包括CPU的FCLK,和AHB總線的HCLK,APB的PCLK。主時鐘源(UPLL和MPLL的時鐘源)可以選擇是來自外部時鐘還是外部晶振,這是由OM2和OM3的管腳確定的,可以OM2和OM3同時接低電平,選擇外部晶振,12M晶振加上15pF起振電容(經過鎖相環(huán)倍頻可以達到203M)。JTAG接口設計有20針和14針兩種JTAG接口。開發(fā)板連線最復雜的電路部分是核心板,而核心板上最復雜的是flash 和RAM芯片的連接,但是DATASHEET里一般都說得比較清楚,地址線、控制線、數(shù)據(jù)線。關于核心板(最小系統(tǒng))有幾點要明確,有核心板就有外圍板一說,為什么要做成兩個部分,不直接設計在一個電路板上呢,最小系統(tǒng)是多層板,成本高一些。最小系統(tǒng)都固定的,都成熟的。即使底板上大多只有一些電平轉換芯片或者引腳的集合。首先根據(jù)系統(tǒng)需要進行編程,由piler將源文件成匯編代碼(在這個過程中可以想象編譯器要做很多事情,比如在我們的中斷程序前后加上保存現(xiàn)場和恢復現(xiàn)場的匯編語言)Assembler將匯編代碼生成二進制目標文件,Linker根據(jù)連接描述文件,將幾部分的目標文件生成一個可執(zhí)行文件。拿ARM來說,一上電,產生復位異常,強制PC為0x00000000(這也可以看做,PC指針復位,從開頭執(zhí)行),這個位置放的恰好是,在0X00000000地址放的代碼是 B handlereset ,在handlereset標號處放的就是復位異常的中斷處理函數(shù),然后在這個處理函數(shù)中,關掉中斷,關掉看門狗,跳轉到stackiinit,進行各個模式下的堆棧初始化,這是必須要進行的,因為各個模式下有各自的SP即R13,切換模式后只對自己的SP可見。初始化再將FLASH中的代碼程序全部拷貝到RAM中執(zhí)行,之后....(),最后一步是B MAIN 意思就是跳轉到用戶程序區(qū)執(zhí)行,然后就進入了你的main(),進入了一個while(1).然后在while(1)中樂此不疲的執(zhí)行著,然后突然有中斷,然后就觸發(fā)了IRQ異常,CPU就強制PC為0x000008(具體情況詳見ARM的異常處理,和2410的中斷處理),在這個地址上呢,向量表是這么寫的B handleIRQ,也就是跳到中斷處理程序那里了,執(zhí)行完了就返回,接著while(1)。像bootloader這樣的核心代碼都是用匯編語言寫的。就像老板和員工一樣,如果你能了解員工的心思,那么他就能更好地為你干活。其中31個通用寄存器(R0R15+異常模式的R,都是32位的)和6個狀態(tài)寄存器(CPSR、SPSR其中5個異常模式有各自的SPSR,只用了12位)。通用寄存器:不分組:R0R7 對誰都可見,真正的通用,沒有體系架構隱含的特殊功能分組。R13通常用作堆棧指針,稱為SP,被初始化為多個模式下的堆棧。CPSR程序狀態(tài)寄存器:32位用了12位條件碼標志,即結果狀態(tài)字,被兩類指令改變,比較指令CMN/CMP/TEQ/TST,一些算數(shù)運算指令,邏輯運算、傳送指令,要將指令置標志位,在指令后加S。N:結果為負數(shù),則N=1,否則為0;Z:指令結果為0(如比較相等)則置1,否則置0C:加法、比較指令CMM:進位溢出,C=1 減法、比較指令CMP:借位溢出,C=1 模式選擇位和總的中斷開關,可以通過軟件置位改變模式,但用戶模式下不可以切換。5個異常模式下均有各自的SPSR。管理(SVC);操作系統(tǒng)保護模式中止未定義系統(tǒng)除了USR之外,其它6種又稱為特權模式。在軟件控制下可以改變模式,外部中斷或異常處理也引起模式變化,用戶模式下不能改變模式。并根據(jù)異常向量跳轉至響應的子程序(執(zhí)行之前必須保存現(xiàn)場),即異常出現(xiàn)后強制跳轉至固定的存儲器地址執(zhí)行。ARM有7種異常。(異常出現(xiàn)時,異常模式分組的R14和SPSR用于保存下一條程序地址和CPSR。異常發(fā)生時,CPU會根據(jù)規(guī)定強制置PC,恰好去執(zhí)行我們設置好的跳轉指令,接著執(zhí)行服務程序。)根據(jù)異常類型,強制設置CPSR的運行模式位 在切換到的異常模式下,在當前的鏈接寄存器LR (r14)中保存上個模式的PC值4,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行 將上一個模式的CPSR復制到當前異常模式的SPSR中(注意1與3的矛盾,不能獨立執(zhí)行,但是是硬件實現(xiàn)的,無關代碼)強制PC。異常返回流程:(有指令)將LR寄存器中的值減去相應的偏移量(對于IRQ/FIQ是4)送到PC中2.、將 SPSR 復制回 CPSR(注意1與2的矛盾,不能獨立執(zhí)行,用一條帶∧的指令執(zhí)行,怎么著都是一條)清除禁止中斷標志,如果它被設置成使能所有修改過的用戶寄存器必須從處理程序的保護堆棧中恢復(即出棧)。當IRQ異常中斷產生時,程序計數(shù)器pc的值已經更新,它指向當前指令后面第3條指令(對于ARM指令,它指向當前指令地址加12字節(jié)的位置;當IRQ異常中斷產生時,處理器將值(pc4)保存到IRQ異常模式下的寄存器lr_irq中,它指向當前指令之后的第2條指令,因此返回操作可以通過下面指令實現(xiàn):subs pc, lr, 4 有兩種返回機制(1)當返回地址保存在當前異常模式的r14時使用其中一種機制(2)當返回地址保存在堆棧時使用另一種機制(進中斷的時候保存的)。 LDMFD R13!,{R0,R4R12,PC} ∧ ;將堆棧內容恢復到寄存器R0,R4到R12,PC,同時SPSR復制到CPSR {∧}為可選后綴,當指令為LDM且寄存器列表中包含R15,選用該后綴時表示:除了正常的數(shù)據(jù)傳送之外,還將SPSR復制到CPSR,一條指令實現(xiàn)。尋址方式:根據(jù)指令給出的地址碼來尋找真實的操作數(shù)的方法。 ADD R3,R3,1 R3R3+1ARM指令集特有的。 LDMIA R1,{R0,R2,R5} RO[R1] R2[R1+4] R5[R1+8]堆棧是一種按照特定順序進行存取的存儲區(qū):LIFO,FILO,堆棧尋址是隱含的 向上生長:(壓棧)向高地址方向生長 向下生長:(壓棧)向低地址方向生長把一塊數(shù)據(jù)從存儲器的某一位置復制到另一個位置。兩個角度都有自己專門的指令而且是一一對應的。對于一條塊復制指令,有三個關鍵元素:之前之后?地址增減?滿空?從塊復制角度:A之后 B之前,I地址增加,D地址減少 滿空隱性從堆棧角度:FA,對于壓棧,是向上生長,地址增加。 之前之后隱性。LDMFD 地址增加 后綴為FD FA ED EA的都是獨立堆棧操作指令。所以執(zhí)行STMIA R9!,{R0,R1,R5}R939。STMFD R13!,{R2R9}//入棧 LDMIA R0!,{R2R9} STMIA R1!,{R2R9} LDMFD R13!,{R2R9} 出棧記住寄存器的賦值指令。(1)LDR和STR(32位字或者8位無符號),STRB傳送低字節(jié) (2)...半字節(jié)、帶符號字節(jié),加SH:帶符號半字(僅LDR) 加H:無符號半字 加SB:帶符號字節(jié)(僅LDR) (3)雙字,加D (4)LDM和STM (5)PLD CACHE預加載 (6)SWP:內存與寄存器的值互換。R3[R1],[R1]R2 SWP R2,R2,[R1] 。寄存器傳送指令:MOV ,記住最多傳送12位常量。 MSR與MRS,配合使用用作更新PSR的讀修改寫。MRS R3,SPSR MSR 將通用寄存器中的值加載進入CPSR,或者SPSR。LDR....,=xxx 當常量超出MOV MVN的常量范圍。在匯編語言中要注意,無論是變量名還是數(shù)組名,還是函數(shù)名,還是標號。存儲空間對于CPU來說就是地址。函數(shù)名就是函數(shù)代碼所在存儲空間的首地址,數(shù)據(jù)就是一組數(shù)據(jù)所在空間的首地址。不同功能的指令要具體分析。而不是該標號地址內所存的地址。但有時候搞清楚什么是硬件機制,什么用戶需要用代碼實現(xiàn)的,哪些是編譯器加進去的,哪些又是外設控制器完成的,搞清楚這樣的責任劃分非常重要!對于你理解整個嵌入式系統(tǒng)工作,編寫代碼,設計系統(tǒng)都有非常奇妙的作用。從ARM初始化看硬件機制、初始化代碼作用上電,產生復位異常,CPU處理該異常時,會強制PC為0。即在異常入口處必須有跳轉至處理程序的跳轉指令。ARM處理異常時的硬件機制:只保存不壓棧。執(zhí)行服務程序之后,不同模式下有不同的返回指令(原理上應該是硬件機制,但是有指令實現(xiàn)了)。保存在中斷棧里,LR代表的是從哪跳過來的。中斷判別不是CPU機制,你沒寫,肯定在bootloader里。進入中斷寄存器壓棧指令和出中斷寄存器出棧指令你沒寫,編譯器肯定替你加上了。發(fā)生異常的時候,CPU要轉換模式,要保存CPSR。你可以說我可以先保存再切換模式,但是用戶模式下連SPSR都沒有,再說了就算你保存了,在異常模式下也看不到啊。CPU可以神奇得將上一個模式的CPSR放在當前的SPSR,把上一個狀態(tài)的PC+4放在當前的LR。因此,ARM提供了兩種返回處理機制,利用這些機制,可以使上述兩步作為一條指令的一部分同時完成。模式發(fā)生轉變時,SP的變化不算是硬件置位機制,SP只有一個,系統(tǒng)操作默認是R13,因為不同模式下13是不同的,不用置位也只對它一個可見。2410通過中斷控制器允許以優(yōu)先級的方式將幾十個中斷源共同用一個IRQ。然后跳轉到相應的中斷處理函數(shù),比如跳到串口中斷,還可以根據(jù)掛起位(即中斷標志位)再次判斷到底是接收中斷還是發(fā)送完成中斷。我們在編程的時候沒有寫的話,那也是編譯器加進去的。CPU的異常處理機制總是那些,很明確的。上一個中斷運行完,一返回就是返回發(fā)生異常前的狀態(tài)。但它是通用的,在硅片上做設計,大量的門電路閑置,發(fā)熱,所以用FPGA做實驗必然發(fā)熱。JTAG是國際標準測試協(xié)議,最初由JTAG組織提出來的,硬件及軟件功能描述,強大,所以現(xiàn)在很多CPU都集成了TAG接口,支持JTAG協(xié)議。其原理就是:通過CPU引腳上集成的邊界掃描器,捕獲輸入輸出信號,將這些信號通過移位寄存器串行輸出。JTAG協(xié)議定義了四根線:TMS 模式線,TCK時鐘線,TDI 數(shù)據(jù)入口,TDO數(shù)據(jù)輸出口。TCK為TAP的操作提供時鐘信號。JLINK可以很方便的讀寫內存,仿真、調試程序。但有這樣一個問題,開發(fā)環(huán)境如ADS /KEIL的調試接口是遵循RDI協(xié)議(硬件、軟件都不同),所以用JTAG調試之前需要進行協(xié)議轉換,JLINK是這樣做的:PCJLINK(協(xié)議轉換硬件實現(xiàn),有CPU、電平轉換)嵌還有一種方法叫HJTAGPC協(xié)議轉換HJTAG(電平轉換)嵌可見,JLINK使用是硬件轉換,h_JTAG使用軟件方法,硬件速度快,但是成本高,不需要專業(yè)軟件,JTAG則需要專業(yè)軟件,HJTAG SERVER調試軟件、HJTAG FLASHER 燒
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1