• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺(jué)的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過(guò)程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛(ài)傳出去,很困難,也無(wú)法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時(shí)注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>
            好久沒(méi)動(dòng)開(kāi)發(fā)板了,終于把研考完了,可以安心的做自己的實(shí)驗(yàn)了,但發(fā)現(xiàn)放下手頭關(guān)于tq2440的實(shí)驗(yàn)兩個(gè)多月,發(fā)現(xiàn)生疏了許多,許多問(wèn)題都要想一下才能記起來(lái)是什么原理,真得抓緊時(shí)間好好弄了。

            又從uboot開(kāi)始弄,以前移植了uboot1.3.1,由于太多匆忙,沒(méi)有過(guò)多的注重細(xì)節(jié),今天發(fā)現(xiàn)了一個(gè)以前忽略的問(wèn)題,就是開(kāi)發(fā)板自己判斷是從何種flash介質(zhì)啟動(dòng)的問(wèn)題,首先說(shuō)一下為什么要判斷是哪種flash介質(zhì)啟動(dòng),因?yàn)檫@樣就沒(méi)有必要區(qū)分nor boot還是nand boot的bin文件了,bin文件燒到nor和nand都可以正常啟動(dòng)開(kāi)發(fā)板。

            在網(wǎng)上看了下別人關(guān)于nor boot或nand boot 的文章,發(fā)現(xiàn)Tekkaman Ninja寫的文章非常好,很值得推薦,附上地址,以便以后查找:http://blog.chinaunix.net/u1/34474/showart.php?id=2085212

            下面來(lái)分析下天嵌公司的uboot,據(jù)Tekkaman Ninja說(shuō),天嵌的uboot是從openJTAG的uboot 借鑒過(guò)來(lái)的,這個(gè)我們姑且不管他。貼下天嵌TQ2440的uboot中關(guān)于啟動(dòng)判斷的代碼:

            int bBootFrmNORFlash(void)
            {
            volatile unsigned int *pdw = (volatile unsigned int *)0;
            unsigned int dwVal;

            dwVal = *pdw;
            *pdw = 0x12345678;
            if (*pdw != 0x12345678)
            {
            return 1;
            }
            else
            {
            *pdw = dwVal;
            return 0;
            }
            }

            這段代碼的思想是這樣的,無(wú)論是從NOR Flash還是從NAND Flash啟動(dòng),地址0處為指令"b Reset", 機(jī)器碼為0xEA00000B,對(duì)于從NAND Flash啟動(dòng)的情況,其開(kāi)始4KB的代碼會(huì)復(fù)制到CPU內(nèi)部4K內(nèi)存中,對(duì)于從NOR Flash啟動(dòng)的情況,NOR Flash的開(kāi)始地址即為0。對(duì)于NOR Flash,必須通過(guò)一定的命令序列才能寫數(shù)據(jù),所以可以根據(jù)這點(diǎn)差別來(lái)分辨是從NAND Flash還是NOR Flash啟動(dòng):向地址0寫入一個(gè)數(shù)據(jù),然后讀出來(lái),如果沒(méi)有改變的話就是NOR Flash。

            我們?cè)谏钊氲姆治鱿拢紫瓤聪耼and boot 和nor boot 時(shí)物理地址分配情況:




            從NAND閃存啟動(dòng)U-BOOT的設(shè)計(jì)思路

            如果s3c2440被配置成從NAND閃存啟動(dòng),上電后,s3c2440的NAND閃存控制器會(huì)自動(dòng)把NAND閃存 中的前4K數(shù)據(jù)搬移到內(nèi)部RAM中, 并把0x00000000設(shè)置為內(nèi)部RAM的起始地址, CPU從內(nèi)部RAM的0x00000000位置開(kāi)始啟動(dòng)。因此要把最核心的啟動(dòng)程序放在NAND閃存的前4K中。

            當(dāng)nor boot時(shí),0x0000_0000是nor flash的起始地址,用語(yǔ)句*pdw = 0x12345678; 向0x0000_0000處寫0x12345678,是沒(méi)用的,因?yàn)閷?duì)于NOR Flash,必須通過(guò)一定的命令序列才能寫數(shù)據(jù),所以*pdw中存的數(shù)據(jù)仍然是"b Reset",但當(dāng)nand flash啟動(dòng)時(shí),cpu內(nèi)部的4KBbootSRAM被映射到0x0000_0000開(kāi)始的地址處,norflash這時(shí)無(wú)效了,這時(shí)用語(yǔ)句*pdw = 0x12345678; 向0x0000_0000處寫0x12345678時(shí),0x12345678會(huì)被寫入,因?yàn)檫@是對(duì)內(nèi)存的操作,不需要指令序列等,所以一旦發(fā)現(xiàn)寫入和讀出 的數(shù)據(jù)一致時(shí),則可判斷是nand boot,這時(shí)一定要把0x0000_0000處的數(shù)據(jù)還原,用*pdw = dwVal; 這句。

            明天看看,得重新移植uboot了,好好研究研究,uboot很高深啊!!

            http://blog.sina.com.cn/s/blog_52009a100100hcv1.html

            posted on 2010-08-09 14:04 小果子 閱讀(1274) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux
            精品久久久久久久久久久久久久久| 综合久久精品色| 久久久久亚洲av无码专区导航| 久久亚洲国产成人精品性色| 99久久99久久久精品齐齐| 久久99精品国产99久久6| 久久精品国产99久久久古代 | 国产精品久久自在自线观看| 青草影院天堂男人久久| 亚洲欧美久久久久9999| 久久精品无码专区免费青青| 久久久精品国产Sm最大网站| 久久99久久99精品免视看动漫| 久久精品亚洲欧美日韩久久| 久久久噜噜噜久久熟女AA片| 久久久久国产一区二区三区| 久久青青草原亚洲av无码app| 香蕉99久久国产综合精品宅男自| 久久精品国产精品亚洲毛片| 久久久久亚洲AV无码专区首JN | 久久精品国产亚洲一区二区三区 | 久久国产免费直播| 精品久久久久香蕉网| 少妇无套内谢久久久久| 久久久久这里只有精品| 91久久精品国产成人久久| 久久久久亚洲AV无码网站| A级毛片无码久久精品免费| 最新久久免费视频| 日韩欧美亚洲综合久久影院Ds| 91久久国产视频| 精品水蜜桃久久久久久久| 99久久99久久精品国产片果冻| 99国产欧美久久久精品蜜芽| 国产亚洲精品自在久久| 97r久久精品国产99国产精| 国产欧美久久久精品| 久久这里只有精品首页| 国产精品丝袜久久久久久不卡| AA级片免费看视频久久| 久久精品无码一区二区三区日韩|