好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[gmat]选择从nand或者nor启动的环境参数的设置.doc

3页
  • 卖家[上传人]:tian****1990
  • 文档编号:71721901
  • 上传时间:2019-01-21
  • 文档格式:DOC
  • 文档大小:63.68KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 关于u-boot同时支持nand启动和Nor启动环境变量的保存位置 收藏 -——华清远见 曹忠明 前面我们说过是u-boot同时支持nand flash启动和nor flash启动,可是这个时候就有个环境变量的保存位置的问题了假如我们设置为环境变量保存在nand上,nor启动时虽然保存环境变量的空间之前有一段空间浪费了,但不会有什么问题,但是假如我们设置为环境变量保存在nor上,nand启动就根本不能访问这段空间更谈何保存环境变量了,理想的情况是更加不同的flash启动把环境变量保存在相应的flash上那么这是如何实现的呢? 在说如何实现之前我们先把相关的文件列出来(以S3C2410为例): cpu/arm920t/start.S /*用来判断是那种方式启动并实现自搬移*/ include/configs/smdk2410.h /*smdk2410配置文件*/ common/env_flash.c/*nor flash环境变量相关文件*/ common/env_nand.c/*nand flash 环境变量相关文件*/ 1. 首先我们在include/configs/smdk2410.h中添加如下代码 #define CONFIG_ENV_IS_IN_NAND 1#define CONFIG_ENV_IS_IN_FLASH 1添加上面两句话是为了确保common/env_flash.c和common/env_nand.c中的内容被编译进uboot,并且添加这两种情况环境变量保存位置信息:#ifdef CONFIG_ENV_IS_IN_FLASH 1 #define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 0x30000)#endif#ifdef CONFIG_ENV_IS_IN_NAND 1#define CONFIG_ENV_SIZE 0x10000#define CONFIG_ENV_OFFSET 0x30000#endif 2. 标志位的设定在这里我们我们要设置一个标志位用来标识是nor启动还是nand启动。

      我们在common/nand.c中添加这个标志位的定义volatile int pbootflag=1; //add by lht 1->nor 0->nand然后我们在cpu/arm920t/start.S导入这个变量并判断是nor启动还是nand启动设置这个标志位的值# define BWSCON 0x48000000 dr r0,=BWSCONldr r0,[r0]ands r0,r0,#6beq nand_boot/***********/Nor 自搬移代码/***********/nand_boot: ldr r0, =pbootflag mov r1, #0x0 str r1, [r0] /*设置pbootflag的值为0表示为nand启动*//***********/Nand 自搬移代码/***********/3. 环境变量的保存通过第一步的操作后,我们的系统中就会有两个env_init函数、saveenv函数和env_relocate_spec函数在common/env_flash.c和common/env_nand.c中,在我们执行saveenv或者在uboot启动是环境变量重定位的时候就有问题了,为了解决这个问题我们做如下操作。

      首先我们把common/env_flash.c中的env_init函数、saveenv函数和env_relocate_spec函数分别改名为nor_env_init函数、nor_saveenv函数和nor_env_relocate_spec函数然后我们需要修改common/env_nand.c中的saveenv函数和env_relocate_spec函数为:修改int env_init(void)函数在函数开始添加如下内容: if(pbootflag==1){ env_name_spec = "NOR";env_ptr=(env_t *)CONFIG_ENV_ADDR; return nor_env_init(); } 修改int saveenv(void)函数,在函数开始添加如下内容 if(pbootflag==1) { env_name_spec = "NOR"; return nor_saveenv(); }修改void env_relocate_spec (void)函数,在函数开始添加如下内容 if(pbootflag==1) { return nor_env_relocate_spec(); }这个时候我们的uboot就能够同时支持nor flash启动和nand flash启动并能够把环境变量保存在相应的flash上。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.