新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在U-Boot中實現(xiàn)對Yaffs鏡像的支持

        在U-Boot中實現(xiàn)對Yaffs鏡像的支持

        作者: 時間:2018-09-12 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/201809/388999.htm

        2 具體實現(xiàn)
        在此,采用 1.1.6版,NAND FLASH使用三星公司的K9F1208UOM。該NAND FLASH每頁為512 B,外加16 B額外空間,整個芯片容量為64 MB。在此之前,已經(jīng)正確配置了相關(guān)的宏定義,并移植了相關(guān)NAND FLASH的驅(qū)動程序,使能夠正確操作該芯片。
        2.1 為添加新的命令
        實際上,U-Boot中已經(jīng)實現(xiàn)了所需的nand命令,只要編寫好正確的NAND FLASH驅(qū)動程序,并定義相應(yīng)的宏,就可實現(xiàn)對NAND FLASH的基本讀寫操作。欲添加對的支持,只要實現(xiàn)一個新的參數(shù)即可。為了給下述工作一個清晰的步驟,在此先簡述如何向U-Boot中添加一個新命令。以下所述的路徑均在U-Boot源碼目錄下。
        (1)在include/cmd_confdefs.h文件中定義相應(yīng)命令的宏,不能與已有的宏值重復。
        (2)在common/cmd_name.c中實現(xiàn)命令操作的具體代碼,文件名中的name即為相應(yīng)命令的名稱。在這個文件中,首先要編寫命令的實現(xiàn)函數(shù);此外還要使用一個U_BOOT_CMD()的宏函數(shù)來填寫該命令的cmd_tbl_t結(jié)構(gòu)體。該結(jié)構(gòu)體的原型是在include\command.h 中定義的,包含相應(yīng)命令的名稱、參數(shù)個數(shù)、實現(xiàn)函數(shù)、用法說明、幫助等信息。最后還要修改common/Makefile文件,將該文件添加為編譯的目標。
        (3)在相應(yīng)的開發(fā)板頭文件(位于include/con-figs/下)中的CONFIG_COMMANDS宏中添加(1)所定義的宏即可使用該命令。
        在實現(xiàn)以上步驟時,參照已有命令的相應(yīng)代碼作適當修改即可。
        2.2 為nand命令添加新參數(shù)
        根據(jù)以上分析,下面給nand命令添加write.yaffs參數(shù),從而實現(xiàn)對的支持。按照第2.1節(jié)中的步驟,由于nand命令已經(jīng)實現(xiàn),僅需要修改com-mon/cmd_nand.c文件即可。
        (1)在common/cmd_nand.c文件的U_BOOT_CMD()宏函數(shù)中仿照其他參數(shù),添加該參數(shù)的使用說明

        定義讀寫操作的結(jié)構(gòu)體原型中一部分參數(shù)沒有使用,這些參數(shù)與選擇ECC的方式有關(guān),由于文件系統(tǒng)已包含了OOB數(shù)據(jù),故不使用這些參數(shù)。另外, opts.skipfirstblk是向nand_write_options_t結(jié)構(gòu)體中新添加的變量,因此需要修改該結(jié)構(gòu)體。在 include/nand.h中,向struct nand_write_options結(jié)構(gòu)體添加如下變量定義:
        int skipfirstblk;
        此外,需要再修改nand_write_opts函數(shù),以增加對此變量的支持。
        2.3 修改nand_write_opts函數(shù)
        在drivers/nand/nand_util.c中,根據(jù)其代碼,在while(blockstart!=(mtdoffset(~erasesize_blockalign+1)))循環(huán)體之后添加如下代碼:



        關(guān)鍵詞: U-Boot Yaffs 鏡像

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 桃园县| 兰考县| 阿荣旗| 岳阳县| 招远市| 洱源县| 柳林县| 汉中市| 潞城市| 邵阳市| 延长县| 大洼县| 乌拉特中旗| 攀枝花市| 颍上县| 新干县| 台前县| 株洲县| 隆安县| 永泰县| 色达县| 南昌县| 故城县| 平谷区| 康马县| 崇仁县| 泽州县| 彭山县| 盖州市| 昭觉县| 延吉市| 留坝县| 舒城县| 遂宁市| 临城县| 岳西县| 上饶县| 诸城市| 珠海市| 炉霍县| 沾益县|