• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 在U-Boot中實現對Yaffs鏡像的支持

    在U-Boot中實現對Yaffs鏡像的支持

    作者: 時間:2009-08-26 來源:網絡 收藏

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

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



    關鍵詞: 支持 Yaffs 實現 U-Boot

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 孟津县| 绍兴县| 肇源县| 象山县| 建宁县| 衡水市| 澜沧| 彭州市| 泰顺县| 屯昌县| 揭阳市| 永善县| 弥渡县| 奉节县| 汨罗市| 柘城县| 湖北省| 台中县| 图木舒克市| 裕民县| 祁东县| 临漳县| 孟连| 平凉市| 伊通| 山阳县| 陆丰市| 宁津县| 尉氏县| 张家港市| 云浮市| 军事| 拉孜县| 韶山市| 昌宁县| 玛纳斯县| 成武县| 达孜县| 陇川县| 阿图什市| 扬州市|