久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: itop修改uboot使之能保存環境變量 [打印本頁]

作者: dgy6    時間: 2018-5-24 14:01
標題: itop修改uboot使之能保存環境變量
                                修改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(編)
       

       
       






歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 极品尤物一区二区三区 | www久久| 欧美日韩黄 | 久久精彩 | 亚洲视频一区二区三区四区 | 性色av网站 | 99久久综合 | 三级视频网站 | 在线免费观看黄 | 久久久久国产精品夜夜夜夜夜 | 成人在线免费观看视频 | av手机天堂网 | 97色婷婷| 91狠狠综合 | 国产精品久久久久久中文字 | 99中文字幕 | 国产a视频 | 成人在线免费视频观看 | 免费国产精品视频 | 亚洲欧美一区二区三区在线 | 99re在线观看视频 | 国产精品久久久一区二区三区 | www一级片| 国产理论在线观看 | 亚洲国产精品一区二区三区 | 天堂va蜜桃一区二区三区 | 国产区一区 | 欧美一级片在线播放 | 青草久久久 | 久久人人爽人人爽人人片 | 亚洲免费视频一区 | 伊人成人在线视频 | 亚洲第二页 | 亚洲激情在线播放 | 91网在线| 四虎在线免费视频 | 成人爱爱| www.九九热| 97视频在线观看免费 | 国产日韩欧美 | 日韩一区二区三区四区 |