<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > U-Boot從NAND Flash啟動(dòng)的實(shí)現

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

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

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

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


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


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


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

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

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


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>