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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

该用户从未签到

2#
发表于 2021-11-4 13:34 | 只看该作者
                               修改uboot使之能保存环境变量
) }$ S; x3 P6 m! A( J  Z; V0 ~4 `( g思路与步骤:
% ?  @/ q. ~/ y& p4 i& X. @# s  I7 o1 ~! [
        1.想要保存环境变量,就要使用saveenv命令0 S0 ]  a  H+ p( F+ i9 k5 m: ]: d

) Y) v6 X; v% F% I' L        2.由uboot的命令体系可推测saveenv命令对应的函数是do_saveenv,可以在sourceinsight工程直接搜索此函数
3 ]! y3 s( B" W% O5 ]0 X' k6 t# y      
1 w$ U& i$ t: z1 r        3.找到函数int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]),发现真正做事的函数是saveenv()函数
/ B/ u  ]& Y2 z& L+ x      
2 u- W5 p1 l6 C- _3 D        4.继续找saveenv()函数,发现有很多个,真正的在env_auto.c中
9 `* Q" y9 n! ^      
. y2 _& v$ [& Y4 i! x        5.分析uboot,可知INF_REG3_REG的值,如果没记错INF_REG3_REG = 7的,所以走的是else这条路
5 y* q, y. k. q5 x" }* m+ n      
/ ^  e' P" V$ \6 v6 y        6.你会发现这里什么都没有做,只有 printf("Unknown boot device\n");
$ s; L* [) H: W' u7 u% s      
' H: Y7 A6 W7 r& N7 [8 Z' c$ E        7.那我们就添加保存的函数,函数哪里来,就在前面,saveenv_movinand(),这个就是我们需要的函数
3 t; X  O/ J0 F2 N7 v3 L. G       : \$ p7 E3 s- ?/ B* H0 i& |& y
        8.你以为这就完了,不存在的,进去看看它做了什么
2 }- n% v" m# C% {2 g      
8 G- B; O" T: S! @7 m! }7 w. m) Y: M        9. mmc_init(find_mmc_device(0));检查mmc设备是否存在) R* f: {9 x1 b
       movi_write_env(virt_to_phys((ulong)env_ptr));把要保存的环境变量写进去,没毛病,这是我们想要的,可是这函数里面有个致命的错误
# x9 g; H" J3 |, F/ X  v       " g$ I% J0 S' g6 i, C# C  i3 ?
        10.movi_write(raw_area_control.image[2].start_blk,
) Y8 S) x0 T5 i) N( b                raw_area_control.image[2].used_blk, addr);我们源码中把要保存的环境变量保存到raw_area_control.image[2]中,但实际上uboot的分区是& V( p* s: ^, k7 ~/ t5 t* g
                raw_area_control.image[3]保存的才是环境变量- A$ E7 s8 i, x$ x: T
       7 o* w- P' V: Y$ p6 e) i' s3 P+ V. s
        11.在哪看分区信息?init_raw_area_table()函数中,可以直接由raw_area_control的定义间接找到, q, q/ `4 B7 Q) F
       " R& r1 w2 U( H7 k
        12.把raw_area_control.image[2]改成raw_area_control.image[3],大功告成。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 17:59 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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