<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 網(wǎng)絡(luò)與存儲(chǔ) > 牛人業(yè)話 > ARM11 S3C6410系列教程之三:內(nèi)存使用

          ARM11 S3C6410系列教程之三:內(nèi)存使用

          —— ARM11S3C6410系列教程之三內(nèi)存使用
          作者:Machinnneee 時(shí)間:2013-12-24 來(lái)源:電子產(chǎn)品世界 收藏

            當(dāng)在S3C6410跑操作系統(tǒng)的時(shí)候,我們不太會(huì)注意S3C6410的使用情況,但是,當(dāng)我們做裸板測(cè)試時(shí),該處理器的8K的片內(nèi)的使用就不得不注意,一旦編寫的程序大小超過(guò)了片內(nèi)的大小,我們就不能得到正確的結(jié)果,究其原因,我們先看一下S3C6410的啟動(dòng)過(guò)程。

          本文引用地址:http://www.ex-cimer.com/article/203124.htm

            S3C6410如果選用啟動(dòng),在我們燒寫裸板程序是,先將程序燒寫至中,S3C6410通過(guò)硬件將中前8K的程序完整復(fù)制到S3C6410片內(nèi)內(nèi)存中。若裸板程序較小,程序可以正常運(yùn)行,若果程序超過(guò)了8K,那么裸板測(cè)試程序不能完整的復(fù)制到片內(nèi)內(nèi)存,使得程序出現(xiàn)未知的結(jié)果。這時(shí),我們需要關(guān)注S3C6410的各種內(nèi)存的使用情況了。

            我們知道,在一個(gè)程序文件中,擁有代碼段、數(shù)據(jù)段和bss段,而一個(gè)程序的bin文件中是沒(méi)有bss段,因此,在程序的bin文件中主要完成:

           ?、儆布某跏蓟?br />   ②的初始化
           ?、跾3C6410程序的重定位
           ?、芸截惓绦蛑?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/DDR">DDR
           ?、萸宄?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/DDR">DDR中bss段
           ?、蕹绦蜴溄又罝DR中

            為進(jìn)一步說(shuō)明啟動(dòng)過(guò)程,現(xiàn)在進(jìn)行詳細(xì)的說(shuō)明:

            S3C6410為NANDflash啟動(dòng),同時(shí)S3C6410外掛DDR,這樣,就能解決程序超過(guò)8K之后的正常運(yùn)行。三者之間的連接示意圖如下圖所示:

            我們知道,S3C6410啟動(dòng)的時(shí)候,將NANDflash中前8K的程序完整拷貝至S3C6410片內(nèi)內(nèi)存中,在這8K程序中,必須完成硬件初始化、DDR初始化和程序從NANDflash中拷貝到DDR中,這樣才能保證S3C6410cpu程序可以跳轉(zhuǎn)到DDR,保證程序的順利進(jìn)行。在這過(guò)程中會(huì)涉及到程序的鏈接地址和程序的重定位方面的知識(shí),如果你對(duì)這方面知識(shí)不熟悉,請(qǐng)查閱該方面的知識(shí)。

            三者之間的操作步驟如下:

            1、系統(tǒng)上電,S3C6410為NANDflash啟動(dòng),硬件自動(dòng)將NANDflash中前8k的程序復(fù)制到S3C6410片內(nèi)內(nèi)存中;

            2、系統(tǒng)從S3C6410片內(nèi)內(nèi)存0地址開始執(zhí)行,此時(shí)程序需要完成DDR初始化、將bin程序從S3C6410片內(nèi)內(nèi)存或者NANDflash拷貝到DDR鏈接地址起始位置;

            3、將NANDflash程序拷貝到DDR中,通過(guò)程序重定位和鏈接到DDR鏈接地址開始位置(此時(shí)注意,在程序的編寫中需要用位置無(wú)關(guān)跳轉(zhuǎn)指令進(jìn)行編寫,否則程序會(huì)因?yàn)樘D(zhuǎn)后找不到鏈接起始地址和變量而出現(xiàn)錯(cuò)誤)

            4、當(dāng)系統(tǒng)完成以上操作后,通過(guò)位置相關(guān)指令將PC值鏈接到DDR重定位位置,完成程序的運(yùn)行(注意此時(shí)應(yīng)使用位置相關(guān)指令完成PC值的跳轉(zhuǎn),若使用位置無(wú)關(guān)指令,則程序一直循環(huán)在S3C6410片內(nèi)內(nèi)存中)。



          關(guān)鍵詞: ARM11 DDR NANDflash 內(nèi)存

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();