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

正文內(nèi)容

arm嵌入式軟件開(kāi)發(fā)(編輯修改稿)

2025-06-16 16:09 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 22 66v06 Embedded Software Development __user_initial_stackheap( ) ? 可以用 C或匯編來(lái)寫(xiě),他要返回: ? Heap 基地址在 R0 ,STACK 的基地址在 R1. ? Heap 的限制地址在 R2,STACK的限制地址在 R3 EXPORT __user_initial_stackheap __user_initial_stackheap LDR r0, =0x80000 。HB LDR r1, =0x88000 。SB 。 r2 not used (HL) 。 r3 not used (SL) MOV pc, lr Heap Stack Heap 的限制地址在單一模式是不被使用的。 Stack 的限制地址只在軟件堆棧檢查許可的情況下才有效。 HB = 0x80000 SB = 0x88000 23 TM 23 66v06 Embedded Software Development 警告 ! ? 當(dāng)使用分散加載時(shí)你必須執(zhí)行 __user_initial_stackheap() ? 在 C庫(kù)初始化代碼內(nèi)的 __user_initial_stackheap() 的默認(rèn)執(zhí)行是在映像文件的 RW/ZI數(shù)據(jù)段后放置 HEAP。 ? 使用 Image$$RW$$Base / Image$$ZI$$Base 連接符號(hào) ? 這些符號(hào)對(duì) scatterloading是無(wú)效的。 ? 在 ADS : ? 符號(hào)被設(shè)置為 0X0, heap被定位在這 ! ? Heap的并發(fā)使用,無(wú)論是直接 (. with malloc())或間接 (by use of argc/argv)的都可能破壞向量表或其他代碼,典型的結(jié)果是不可預(yù)知的程序在運(yùn)行時(shí)出錯(cuò)了。 ? 在 ADS : ? 符號(hào)沒(méi)有定義,應(yīng)用程序不會(huì)聯(lián)接: Error: L6218E: Undefined symbol Image$$ZI$$Limit (referred from ). 24 TM 24 66v06 Embedded Software Development Agenda 一個(gè) PC軟件的構(gòu)造 裁減標(biāo)準(zhǔn) C庫(kù)函數(shù)到目標(biāo)板 定制 IMAGE的存儲(chǔ)器映射到目標(biāo)板 復(fù)位和初始化 深層次的存儲(chǔ)器器映象考慮 編譯和調(diào)試 IMAGE 25 TM 25 66v06 Embedded Software Development The Vector Table AREA Vectors, CODE, READONLY IMPORT Reset_Handler 。 import other exception handlers 。 … ENTRY B Reset_Handler B Undefined_Handler B SWI_Handler B Prefetch_Handler B Data_Handler NOP 。 Reserved vector B IRQ_Handler 。 FIQ_Handler will follow directly END 在使用 scatterloading+FIRST時(shí)直接定位在 0X0( 或 0xFFFF0000) ENTRY 直接告訴鏈接器這是一個(gè)入口點(diǎn),防止某些段被刪除 中斷向量表26 TM 26 66v06 Embedded Software Development 初始化步驟 C Library User Code __main copy code and data zero uninitialized data __rt_entry initialize library functions call toplevel constructors (C++) Exit from application main( ) tells linker to link in library initialization code Image Entry Point __user_initial_stackheap( ) set up stack amp。 heap reset handler initialize stack pointers configure MMU/MPU setup cache/enable TCM $Sub$$main( ) enable caches amp。 interrupts 27 TM 27 66v06 Embedded Software Development ROM or RAM at 0x0? ? 需要一個(gè)有效的地址在 0x0 這項(xiàng)功能可被編碼在像 RESET HANDLER 一樣的模塊中 在本章結(jié)束的時(shí)候,我們還會(huì)講到。 ROM 0x10000 0x18000 0x4000 0x0000 Aliased ROM Reset Handler ROM/RAM Remapping RAM 0x10000 0x18000 0x4000 0x0000 ROM ROM at 0x0 Reset Handler Vectors Reset Handler RAM Vectors 28 TM 28 66v06 Embedded Software Development ROM/RAM Remapping 下面的例子可像 Reset handler 一樣在源碼中編碼。 。 Integrator CM control reg CM_ctl_reg EQU 0x1000000C 。 Address of CM Control Register Remap_bit EQU 0x04 。 Bit 2 is remap bit of CM_ctl ENTRY 。 On reset, an alias of ROM is at 0x0, so jump to 39。real39。 ROM. LDR pc, =Instruct_2 Instruct_2 。 Remap by setting Remap bit of the CM_ctl register LDR r1, =CM_ctl_reg LDR r0, [r1] ORR r0, r0, Remap_bit STR r0, [r1] 。 RAM is now at 0x0. 。 The exception vectors must be copied from ROM to RAM (in __main) 。 Reset_Handler follows on from here 這個(gè)功能也可在有 mmu時(shí)使用 ROM/RAM的重定向29 TM 29 66v06 Embedded Software Development 初始化棧的指針 。 Amount of memory (in bytes) allocated for stacks Len_FIQ_Stack EQU 256 Len_IRQ_Stack EQU 256 … Offset_FIQ_Stack EQU 0 Offset_IRQ_Stack EQU Offset_FIQ_Stack + Len_FIQ_Stack … Reset_Handler LDR r0, stack_base 。 located by scatter file 。 Enter each mode in turn and set up the stack pointer MSR CPSR_c, Mode_FIQ:OR:I_Bit:OR:F_Bit 。 No interrupts SUB sp, r0, Offset_FIQ_Stack MSR CPSR_c, Mode_IRQ:OR:I_Bit:OR:F_Bit 。 No interrupts SUB sp, r0, Offset_IRQ_Stack … 。 System mode stack is set up
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1