在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > U-Boot從NAND Flash啟動(dòng)的實(shí)現(xiàn)

            U-Boot從NAND Flash啟動(dòng)的實(shí)現(xiàn)

            作者: 時(shí)間:2010-08-05 來源:網(wǎng)絡(luò) 收藏

            在/board/smdk2410/中添加boot_init.c文件,在其中nand_reset(nand重置函數(shù))、wait_idle(等待即查詢?cè)O(shè)備是否讀寫就位)、nand_select_chip(片選使能)、nand_dleselect_chip(取消片選)、write_cmd(寫命令)、write_addr(寫地址)、read_data(讀數(shù)據(jù))、nand_init(nand控制器初始化)這些子函數(shù)和copy2ram函數(shù),同時(shí)在copy2ram中依據(jù) 的讀寫操作特點(diǎn)來調(diào)用這些子函數(shù)。具體操作流程如圖2所示。

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


            對(duì) 中的代碼復(fù)制操作函數(shù)已經(jīng)完成,接下來只要在start.S中調(diào)用copy2ram函數(shù)就完成工作。匯編文件start.S中,reloca-te、copy_loop段代碼為中原先的復(fù)制代碼過程,去掉這2段代碼,添加自己的代碼。由于編寫的是C代碼,所以在start.S中調(diào)用cop-y2ram函數(shù)前必須先設(shè)定好指針、堆棧,另外copy2ram要用到的參數(shù)是通過r0、r1、r2寄存器傳遞的。
            在stack_setup設(shè)置堆棧代碼后面添加如下代碼:


            上面第一段代碼主要是檢測(cè)程序是否已經(jīng)在內(nèi)存中運(yùn)行,如果已經(jīng)在內(nèi)存中,顯然代碼就無需復(fù)制,程序就會(huì)跳過復(fù)制階段往后執(zhí)行,第二段是設(shè)定參數(shù),把參數(shù)放入相應(yīng)寄存器,最后調(diào)用copy2ram函數(shù)。
            自此關(guān)于的主要代碼修改和添加已經(jīng)完成,但還有很重要的一處需要修改,關(guān)于環(huán)境參數(shù)的存放問題。環(huán)境參數(shù)緊隨著在NAND 中存放,在其之后是內(nèi)核鏡像文件。在的第二階段中有個(gè)名為env.relocate的函數(shù),它會(huì)把環(huán)境參數(shù)復(fù)制到RAM中,而環(huán)境參數(shù)中需要向Linux內(nèi)核傳遞的參數(shù)會(huì)在內(nèi)核前重新構(gòu)建成標(biāo)記列表,同時(shí)把該標(biāo)記列表放在跟內(nèi)核約定好的地址處。因此必須指明環(huán)境參數(shù)的存放位置,否則無法復(fù)制到內(nèi)存,從而需要傳遞到內(nèi)核的參數(shù)也就無法完成傳遞。修改如下:在/include/configs/smdk241-0.h中添加:


            第一行指定環(huán)境變量在NAND Flash中,后面2行分別指定其在NAND Flash中的大小和偏移量。關(guān)于NAND的部分全部完成。

            3 U-Boot其他部分修改
            由于所開發(fā)的開發(fā)板是基于S3C2440的,U-Boot中沒有S3C2440的配置文件,只能仍用SMDK2410模板來進(jìn)行修改。主要修改有兩處:1)在/include/s3c24xO.h中添加S3C2440_NAND結(jié)構(gòu)體;2)由于S3C2410和S3C2440的時(shí)鐘寄存器有些不一樣,所以需要修改時(shí)鐘獲得函數(shù),在/cpu/arm920t/s3c24xO/speed.c修改。特別要注意的是機(jī)器ID的問題,在/include/asm-arm/mach-types.h中定義了各個(gè)開發(fā)板的ID號(hào),必須要保證所定義的開發(fā)板的ID號(hào)跟內(nèi)核一致,否則內(nèi)核無法啟動(dòng)。

            4 結(jié)束語
            針對(duì)U-Boot不支持從NAND啟動(dòng)的缺點(diǎn),對(duì)其進(jìn)行修改。添加了關(guān)于NAND Flash的操作函數(shù)和支持從NAND啟動(dòng)的函數(shù)。本文詳細(xì)闡述了U-Boot從NAND肩動(dòng)的原理和修改過程。修改過后的U-Boot可以直接從NAND Flash啟動(dòng),這樣就可以摒棄傳統(tǒng)依賴NOR Flash啟動(dòng)的硬件設(shè)計(jì),使用只依賴NAND Flash作為存儲(chǔ)器的硬件設(shè)計(jì),從而簡(jiǎn)化電路,給應(yīng)用帶來極大方便。


            上一頁 1 2 3 下一頁

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉