欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3964|回復: 0
收起左側

itop修改uboot使之能保存環境變量

[復制鏈接]
ID:337263 發表于 2018-5-24 14:01 | 顯示全部樓層 |閱讀模式
                                修改uboot使之能保存環境變量
思路與步驟:

        1.想要保存環境變量,就要使用saveenv命令

        2.由uboot的命令體系可推測saveenv命令對應的函數是do_saveenv,可以在sourceinsight工程直接搜索此函數
       
        3.找到函數int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]),發現真正做事的函數是saveenv()函數
       
        4.繼續找saveenv()函數,發現有很多個,真正的在env_auto.c中
       
        5.分析uboot,可知INF_REG3_REG的值,如果沒記錯INF_REG3_REG = 7的,所以走的是else這條路
       
        6.你會發現這里什么都沒有做,只有 printf("Unknown boot device\n");
       
        7.那我們就添加保存的函數,函數哪里來,就在前面,saveenv_movinand(),這個就是我們需要的函數
       
        8.你以為這就完了,不存在的,進去看看它做了什么
       
        9. mmc_init(find_mmc_device(0));檢查mmc設備是否存在
       movi_write_env(virt_to_phys((ulong)env_ptr));把要保存的環境變量寫進去,沒毛病,這是我們想要的,可是這函數里面有個致命的錯誤
       
        10.movi_write(raw_area_control.image[2].start_blk,
                raw_area_control.image[2].used_blk, addr);我們源碼中把要保存的環境變量保存到raw_area_control.image[2]中,但實際上uboot的分區是
                raw_area_control.image[3]保存的才是環境變量
       
        11.在哪看分區信息?init_raw_area_table()函數中,可以直接由raw_area_control的定義間接找到
       
        12.把raw_area_control.image[2]改成raw_area_control.image[3],大功告成。
       
        2018年5月23
        DGY(編)
       

       
       

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表