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

正文內(nèi)容

arm嵌入式軟件開發(fā)-文庫吧

2025-04-21 16:09 本頁面


【正文】 k scatter o 13 TM 13 66v06 Embedded Software Development Execute View RAM 0x10000 0x18000 0x4000 0x0000 ROM RO 分散加載 (簡單例子 ) 只讀代碼和數(shù)據(jù)保存在 ROM中 C庫函數(shù)初始化代碼 (在 __main) 將 : 從 ROM拷貝 RW數(shù)據(jù)到 RAM 在 RAM中的 ZI 數(shù)據(jù)初始化 RAM 0x10000 0x18000 0x4000 0x0000 ROM Load View RO RW Fill with zeros ZI Copy RW 14 TM 14 66v06 Embedded Software Development Execute View RAM 0x10000 0x18000 0x4000 0x0000 ROM RO LOAD_ROM 0x0000 0x4000 { } RAM 0x10000 0x18000 0x4000 0x0000 ROM Load View RO RW Scatter 描述文件 ? 通配符( *)語法允許簡單的對 CODE 和 DATA 進行分組 EXEC_ROM 0x0000 0x4000 { * (+RO) } RAM 0x10000 0x8000 { * (+RW,+ZI) } RW ZI 15 TM 15 66v06 Embedded Software Development RO RW ZI CODE RO DATA RO CODE A B 鏈接器放置規(guī)則 ? 在每個可執(zhí)行區(qū),鏈接器通過一些基本的規(guī)則來放置 CODE 和 DATA ? 基本的排序方法是通過屬性來安排的 : ? RO 領(lǐng)先于 RW , RW 領(lǐng)先于 ZI ? 有相同的屬性時, CODE 在 DATA之前放置。 ? 更多的排序方法決定于: ? 輸入的組名按字母排序 , ? 在 ARMLINK命令行中指定的順序。 ? eg: armlink … section A from section A from 16 TM 16 66v06 Embedded Software Development 在 SCATTOR 文件中的對象排序 ? 為了把特定的 CODE 和 DATA 放在指定的地址上,你可以不考慮標準的放置規(guī)則 ? 使用 +FIRST 和 +LAST , 直接把第一個和最后一個對象放在可執(zhí)行區(qū)。 ? 圖例:把 VECTOR表放在區(qū)的開始。 LOAD_ROM 0x0000 0x4000 { EXEC_ROM 0x0000 0x4000 { (Vectors, +FIRST) (+RO) (+RO) } : } 在可執(zhí)行區(qū)內(nèi), scattor 文件中要排序的對象對輸出 image沒有影響 鏈接器的標準放置規(guī)則仍然適用 17 TM 17 66v06 Embedded Software Development ROOT區(qū) LOAD_ROM 0x0000 0x4000 。 start address and length { EXEC_ROM 0x0000 0x4000 。 root (load = exec address) { (+RO) 。 copying code * (Region$$Table) 。 RO/RW addresses to copy * (ZISection$$Table) 。 ZI addresses to zero } RAM 0x10000 0x8000 { * (+RO) 。 All other RO areas * (+RW,+ZI) 。 program variables } } Must be in a root region outside root region 一個 root 區(qū)是一個可執(zhí)行區(qū),它的加載地址等于執(zhí)行地址。 18 TM 18 66v06 Embedded Software Development Root區(qū)要點 ? 一個 root 區(qū)是一個可執(zhí)行區(qū),它的加載地址等于執(zhí)行地址 . ? 每個 scatter描述文件必須最少包含一個 root區(qū),并且最少要包含下列內(nèi)容: ? – 含有拷貝 code/data的代碼 ? Region$$Table 和 ZISection$$Table – 含有將要拷貝的 code/data的地址,他是由鏈接器產(chǎn)生的,不是一個對象文件。(所以 *必須用) Error: L6202E: Section Region$$Table cannot be assigned to a nonroot region. Error: L6202E: Section ZISection$$Table cannot be assigned to a nonroot region. ? 注意 : 如果 * (+RO)被定位在 root 區(qū) ,在此之前的將被自動放置 ? Main應(yīng)用程序的入口點必須放在 root區(qū)。 Error: L6203E: Entry point (0x08000000) lies within nonroot region EXE_FLASH. 19 TM 19 66v06 Embedded Software Development Runtime 存儲器管理 Semihosting Support ANSI C Stack amp。 Heap Setup Stack amp。 Heap Setup ANSI C C Library User Code Debug Agent Target Hardware Retarget 如何設(shè)置 stack和 heap來滿足我們的目標存儲器 ? ? 我們已經(jīng)通過執(zhí)行 __user_initial_stackheap()把 C標準庫的運行存儲器模式修改到目標平臺上。 20 TM 20 66v06 Embedded Software Development Stack 和 Heap 初始化 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( ) cause linker to pull in library initialization code Image Entry Point __user_initial_stackheap( ) set up application stack and heap 21 TM 21 66v06 Embedded Software Development Runtime 存儲器模式 ? 你必須決定在放置 stack和 heap時所使用的區(qū)域是單一的區(qū) (oneregion model)或是不同的兩個區(qū) (tworegion model) Heap Stack Stack One region model Two region model HB SB SB HB HL 單一存儲器模式是默認方式 為了實現(xiàn)多區(qū)域模式,你可以使用 use_two_region_memory 在所有的模式下,軟件堆棧檢查要許可。 編譯開關(guān)是: apcs /swst 指定堆棧限制 (為 tworegion 模式 ) heap is checked against stack pointer Heap heap is checked against heap limit (SL) 22 TM
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1