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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

该用户从未签到

2#
发表于 2021-11-4 13:34 | 只看该作者
                               修改uboot使之能保存环境变量
& c' {: H4 ?4 Y  v, f思路与步骤:% D# @' W8 ^9 I: }1 L# U
: I6 J$ E/ m4 a6 B( R3 }  e
        1.想要保存环境变量,就要使用saveenv命令  B% u9 u. R; g: S  Y

& C( b- d$ w6 u. M( x! A        2.由uboot的命令体系可推测saveenv命令对应的函数是do_saveenv,可以在sourceinsight工程直接搜索此函数
! K* _% b- }! a* h) o" I8 V      
- x% N# w' s, z, I        3.找到函数int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]),发现真正做事的函数是saveenv()函数
9 `$ M5 E1 W! Y- V! N6 K       ; D- o( w. }# k5 K9 X! W  }
        4.继续找saveenv()函数,发现有很多个,真正的在env_auto.c中6 s. }8 M/ a) [4 G3 k6 C
       " C5 n/ q3 W3 U# P
        5.分析uboot,可知INF_REG3_REG的值,如果没记错INF_REG3_REG = 7的,所以走的是else这条路
9 K$ D  ?3 k, ]       0 Y# E  w( ?0 d7 p! T
        6.你会发现这里什么都没有做,只有 printf("Unknown boot device\n");3 e& w! S2 M! L7 _
       % o; y/ t5 K5 X. c, w
        7.那我们就添加保存的函数,函数哪里来,就在前面,saveenv_movinand(),这个就是我们需要的函数
7 m: `/ o* r( a+ x2 J* I      
9 I1 W* u. f% o0 W4 c3 ?$ ~5 ]        8.你以为这就完了,不存在的,进去看看它做了什么
" E: K+ f& q5 X3 a      
8 _" D5 b7 ]9 r. m9 M( p) L        9. mmc_init(find_mmc_device(0));检查mmc设备是否存在* V: K8 m  q) U2 z# h' z' f& A, H
       movi_write_env(virt_to_phys((ulong)env_ptr));把要保存的环境变量写进去,没毛病,这是我们想要的,可是这函数里面有个致命的错误/ O3 ^" z$ }% m2 v$ h7 y" E" w2 }
      
1 l6 z  c% |" i$ ]7 w+ [5 U2 h        10.movi_write(raw_area_control.image[2].start_blk,. U+ a* J/ }( f5 r: Z% r$ V
                raw_area_control.image[2].used_blk, addr);我们源码中把要保存的环境变量保存到raw_area_control.image[2]中,但实际上uboot的分区是' @$ O. k" x# @8 F+ J
                raw_area_control.image[3]保存的才是环境变量/ u0 v  u8 w+ g# A0 o- ?
      
+ C6 ]6 t& q! c/ t0 w& L# \% `$ U2 ^4 Y        11.在哪看分区信息?init_raw_area_table()函数中,可以直接由raw_area_control的定义间接找到2 H: `9 a* h3 y: D" T/ }9 o& x
       . i4 r) T/ f) f# Z/ P
        12.把raw_area_control.image[2]改成raw_area_control.image[3],大功告成。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-13 00:05 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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