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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

该用户从未签到

2#
发表于 2021-11-4 13:34 | 只看该作者
                               修改uboot使之能保存环境变量  c" o; B7 U) v. |0 R  Y4 Y  z  ?8 o
思路与步骤:
8 e( D( N, c! x4 Q4 p- x- _
9 S" `  {7 t% P1 Q3 @$ C/ e        1.想要保存环境变量,就要使用saveenv命令0 F$ d% `. y+ g; A: W

- ^3 N- S6 U& u! l' l) Z        2.由uboot的命令体系可推测saveenv命令对应的函数是do_saveenv,可以在sourceinsight工程直接搜索此函数
4 A% a( D) u3 h7 }  g& ~5 U      
  m# e2 q, P/ P$ ?9 v7 t0 z3 I' p        3.找到函数int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]),发现真正做事的函数是saveenv()函数
( Z3 J& A  O  x8 P. Y+ O. F7 C      
% z' H" F: C7 `( O( x/ S        4.继续找saveenv()函数,发现有很多个,真正的在env_auto.c中
2 G! [5 m& M" N* m; _       7 e2 J( M- a( H  j& B6 n- L; G# _% N
        5.分析uboot,可知INF_REG3_REG的值,如果没记错INF_REG3_REG = 7的,所以走的是else这条路8 z; i7 ]" Z$ C7 I! \$ S
      
% P# D- i9 N4 s8 m* h        6.你会发现这里什么都没有做,只有 printf("Unknown boot device\n");
# g# f0 @5 h8 l) W' _1 J: v8 Z6 U      
: }, F% w" K  Q" O) j- ]        7.那我们就添加保存的函数,函数哪里来,就在前面,saveenv_movinand(),这个就是我们需要的函数2 u4 j! R3 o, [% {1 s" e; t
       - }/ V- \8 F3 H9 O5 e5 M
        8.你以为这就完了,不存在的,进去看看它做了什么6 X- I7 t% J& C1 p/ S% M2 q  E8 v& J
       ) o" ^1 A- I7 Y" W/ |) e  B' c8 Q
        9. mmc_init(find_mmc_device(0));检查mmc设备是否存在
' e+ d* j! h1 E3 ^       movi_write_env(virt_to_phys((ulong)env_ptr));把要保存的环境变量写进去,没毛病,这是我们想要的,可是这函数里面有个致命的错误) M' a/ ~9 ^% F. ~+ L; e$ ~
      
& y# ]- p. L# T! Q8 h        10.movi_write(raw_area_control.image[2].start_blk,/ m! i( e( P0 e- s3 ]
                raw_area_control.image[2].used_blk, addr);我们源码中把要保存的环境变量保存到raw_area_control.image[2]中,但实际上uboot的分区是" x* Z# u) b6 A. T; a$ N
                raw_area_control.image[3]保存的才是环境变量
. ~. _' R6 D1 s) d8 K: M) J. ]         o! }* N$ k9 ]* _2 a4 t
        11.在哪看分区信息?init_raw_area_table()函数中,可以直接由raw_area_control的定义间接找到
0 ^$ z! b4 B6 m% \       / ]+ B( i* p6 O8 {! b. H% n
        12.把raw_area_control.image[2]改成raw_area_control.image[3],大功告成。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 18:11 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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