找回密码
 注册
关于网站域名变更的通知
查看: 332|回复: 1
打印 上一主题 下一主题

如何itop修改uboot使之能保存环境变量

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-11-4 13:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如何itop修改uboot使之能保存环境变量,希望各位能指点指点,谢谢!!

该用户从未签到

2#
发表于 2021-11-4 13:34 | 只看该作者
                               修改uboot使之能保存环境变量
. |9 C2 g* |: L思路与步骤:0 q$ _. J8 G2 P$ ]" ]3 O. d/ N
  q4 g9 w: Y1 U' q
        1.想要保存环境变量,就要使用saveenv命令& a; O8 Q) d- C9 q3 q: ?

7 Q5 v9 S7 Q: v0 w; w        2.由uboot的命令体系可推测saveenv命令对应的函数是do_saveenv,可以在sourceinsight工程直接搜索此函数, X  R0 U! O2 D; y
      
  {/ @- ]' L  Q        3.找到函数int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]),发现真正做事的函数是saveenv()函数9 u4 b6 |3 e9 I& P
       8 _: W. k) `$ b# T  g9 t
        4.继续找saveenv()函数,发现有很多个,真正的在env_auto.c中
8 [4 H% E& {/ q  p. {: f$ {1 S      
0 V2 C" I: Z! n$ o/ V# n& u        5.分析uboot,可知INF_REG3_REG的值,如果没记错INF_REG3_REG = 7的,所以走的是else这条路4 o, t! V7 B' i: ^
      
2 j, M* H! d" O6 D1 D        6.你会发现这里什么都没有做,只有 printf("Unknown boot device\n");
( C8 z( p6 ]8 s; C3 d       1 [  Q5 P4 T+ K) Y4 D% r' [
        7.那我们就添加保存的函数,函数哪里来,就在前面,saveenv_movinand(),这个就是我们需要的函数
# N6 F# `8 e8 t7 ]* `" X       . q+ R7 u/ e" `5 h+ M
        8.你以为这就完了,不存在的,进去看看它做了什么- Z+ G" }, o& i5 O
       4 ^9 f# q7 P  ^: ~' R
        9. mmc_init(find_mmc_device(0));检查mmc设备是否存在5 y( ]' ]6 m. j# t
       movi_write_env(virt_to_phys((ulong)env_ptr));把要保存的环境变量写进去,没毛病,这是我们想要的,可是这函数里面有个致命的错误6 ~5 u  }- Z+ {" ~1 r; r
      
, r3 e' L4 A4 D# `! ^        10.movi_write(raw_area_control.image[2].start_blk,1 w; [8 k( J4 d3 o& G
                raw_area_control.image[2].used_blk, addr);我们源码中把要保存的环境变量保存到raw_area_control.image[2]中,但实际上uboot的分区是: p3 k/ Y, x- N# T
                raw_area_control.image[3]保存的才是环境变量
( N% s- G, f5 k: c$ ]6 P, T$ a7 F      
  ?& k+ c8 ]" m3 ^! A/ [        11.在哪看分区信息?init_raw_area_table()函数中,可以直接由raw_area_control的定义间接找到
/ v3 ^. Z* i  \* y: q       6 v* X) O7 |* w0 F- d& E# r& d: p
        12.把raw_area_control.image[2]改成raw_area_control.image[3],大功告成。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 19:55 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表