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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > U-boot1.1.6移植到TQ2440開(kāi)發(fā)板(下)

          U-boot1.1.6移植到TQ2440開(kāi)發(fā)板(下)

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          這兩天在移植u-boot,花了兩天完全是因?yàn)榭ㄔ趎andflash里了,關(guān)于nandflash下次再寫(xiě)吧,這次記錄一下剛剛遇到的一個(gè)問(wèn)題吧。。。呵呵。

          u-boot在引導(dǎo)linux啟動(dòng),需要傳遞環(huán)境變量等配置

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

          設(shè)置一些宏定義,在include/configs文件下的配置文件里添加


          #define CONFIG_SETUP_MEMORY_TAGS 1
          #define CONFIG_CMDLINE_TAG 1
          #define CONFIG_INITRD_TAG 1

          #defineCONFIG_BOOTARGS "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
          #defineCONFIG_BOOTCOMMAND "nand read0x32000000 0x200000 0x300000;bootm 0x32000000"

          這里說(shuō)明一下最后那個(gè)宏定義,在說(shuō)之前首先聲明一下,在nand分區(qū)為

          0~0x40000為u-boot區(qū),0x200000~0x500000為kernel區(qū),剩下的為文件系統(tǒng)了

          根據(jù)上面的分區(qū)我們可以很容易知道那個(gè)宏定義的意思了,首先用nand read命令將內(nèi)核從nandflash地址0x200000開(kāi)始復(fù)制,大小為0x300000,復(fù)制到sdram起始地址為0x32000000。執(zhí)行完后,再執(zhí)行命令bootm,啟動(dòng)

          還有很重要一個(gè)要設(shè)置math_type和內(nèi)核里設(shè)置的一樣,否則無(wú)法啟動(dòng)

          其在u-boot:include/asm-arm/mach_types.h里,在linux:arch/arm/tools的mach_types里

          如果u-boot引導(dǎo)內(nèi)核時(shí)出現(xiàn)錯(cuò)誤Bad Magic Number時(shí),那么說(shuō)明你的linux缺少64字節(jié)的頭信息??梢杂胾-boot/tools下的mkimage給它加入頭信息,具體操作如下:

          將zImage.bin文件拷到tools/目錄下,輸入命令:
          #mkimage -n linux-2.6.30 -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage.bin zImage.img

          就可以生成帶有頭信息的zImage.img了,將其燒寫(xiě)就可以正常啟動(dòng)了
          這里解釋一下參數(shù)的意義:
          -A==>setarchitecturetoarch
          -O==>setoperatingsystemtoos
          -T==>setimage typetotype
          -C==>setcompressiontypecomp
          -a==>setload addresstoaddr (hex)
          -e==>setentrypointtoep (hex)
          -n==>setimage nametoname
          -d==>useimage datafromdatafile
          -x==>setXIP(executein place)

          上面的方法是可行,但是卻很麻煩吖,不可能每次編譯好了內(nèi)核,還要去添加一次頭信息吧?所以,從linux 2.6版本開(kāi)始,就可以使用make uImage命令,直接生成帶有頭信息的uImage了,請(qǐng)到arch/arm/boot下查看呵呵。

          如果使用make uImage提示有錯(cuò)誤,那就自己百度吧。。。自學(xué),百度是必需的!

          好了,就到這里,現(xiàn)在的話,u-boot+linux+root都OK了,可能接下來(lái)是QT吧。。。嘿嘿,要讓LCD大放異彩,必需的。

          最后補(bǔ)充下,具體將這些燒寫(xiě)到NANDFLASH里的那里呢?這和你的分區(qū)有關(guān),前面已經(jīng)說(shuō)了分區(qū)了,所以,請(qǐng)將你的U-BOOT燒寫(xiě)到0地址,linux燒寫(xiě)到0x200000,root就到0x5000000吧



          評(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); })();