在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 位置無(wú)關(guān)和位置相關(guān)

            位置無(wú)關(guān)和位置相關(guān)

            作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
            1、
            SECTIONS {
            firtst 0x00000000 : { head.o init.o nand.o}
            second 0x30000000 : AT(4096) { main.o }
            }
            對(duì)應(yīng)啟動(dòng)源碼:
            @將NAND Flash中地址4096開(kāi)始的1024字節(jié)代碼(main.c編譯得到)復(fù)制到SDRAM中
            @nand_read_ll函數(shù)需要3個(gè)參數(shù):
            ldr r0, =0x30000000 @1. 目標(biāo)地址=0x30000000,這是SDRAM的起始地址
            mov r1, #4096 @2. 源地址 = 4096,連接的時(shí)候,main.c中的代碼都存在NAND Flash地址4096開(kāi)始處
            mov r2, #2048 @3. 復(fù)制長(zhǎng)度= 2048(bytes),對(duì)于本實(shí)驗(yàn)的main.c,這是足夠了
            bl nand_read @調(diào)用C函數(shù)nand_read
            2、
            SECTIONS {
            . = 0x30000000;
            .text : {
            head.o(.text)
            init.o(.text)
            nand.o
            *(.text)
            }
            .rodata ALIGN(4) : {*(.rodata)}
            .data ALIGN(4) : { *(.data) }
            .bss ALIGN(4) : { *(.bss) *(COMMON) }
            }
            @將NAND Flash中地址4096開(kāi)始的1024字節(jié)代碼(main.c編譯得到)復(fù)制到SDRAM中
            @nand_read_ll函數(shù)需要3個(gè)參數(shù):
            ldr r0, =0x30000000 @1. 目標(biāo)地址=0x30000000,這是SDRAM的起始地址
            mov r1, #0 @2. 源地址 = 0
            mov r2, #4096 @3. 復(fù)制長(zhǎng)度= 4096
            bl nand_read @調(diào)用C函數(shù)nand_read
            總結(jié):S3C2440啟動(dòng)時(shí)硬件會(huì)強(qiáng)制的把nand flash中前4K的內(nèi)容復(fù)制到2440片內(nèi)的RAM中執(zhí)行,這4K的代碼的任務(wù)是初始化nand flash、SDRAM,然后把全部的代碼從nand flash中拷貝到SDRAM中,再跳到SDRAM中執(zhí)行。
            1、1中head.o init.o nand.o三個(gè)文件的鏈接地址是:0x00000000 即片內(nèi)內(nèi)存(RAM),當(dāng)硬件把前4K內(nèi)容拷貝到2440片內(nèi)的RAM中時(shí)head.o init.o nand.o三文件就在片內(nèi)執(zhí)行,實(shí)際運(yùn)行的地址和運(yùn)行時(shí)應(yīng)該在的地址相同,故這三段代碼中可以使用位置相關(guān)碼,即可以使用全局變量,當(dāng)初始化nand flash、SDRAM完成后只是拷貝了源地址=4096的main.o段;
            2、中head.o init.o nand.o三個(gè)文件的鏈接地址是:0x30000000,即片外SDRAM,說(shuō)明head.o(.text) 、init.o(.text) 、nand.o *(.text)這三段代碼運(yùn)行時(shí)應(yīng)該在0x30000000地址,但是S3C2440啟動(dòng)時(shí)硬件會(huì)強(qiáng)制的把nand flash中前4K的內(nèi)容復(fù)制到2440片內(nèi)的RAM中執(zhí)行時(shí)它們處于0x00000000 的地址,故只能使用位置無(wú)關(guān)碼,即不可以使用全局變量,當(dāng)初始化nand flash、SDRAM完成后程序拷貝了全部的代碼,拷貝過(guò)去以后head.o(.text) 、init.o(.text) 、nand.o *(.text)三文件才位于該在的地址:0x30000000。

            注:鏈接地址是程序運(yùn)行時(shí)應(yīng)該位于的地方,如果程序不在鏈接地址上運(yùn)行,那么訪(fǎng)問(wèn)全局變量的時(shí)候就會(huì)出錯(cuò)。

            本文引用地址:http://www.biyoush.com/article/201611/319487.htm




            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉