norflash移植及uboot 保存环境变量实验
2013-11-29 20:57
489 查看
一、实验环境
实验板:TQ2440开发板
SDRAM:64M
norflash:EN29LV160AB(2M)
nandflash:(256M)
二、移植
本文不详谈从smdk2410移植到TQ2440的详细过程,只把涉及本文的norflash移植详细阐述。
1、norflash移植
2、增加调试功能
在include/common.h中添加“#define DEBUG //调试模式”
3、说明:倘若保持原程序的“#define CFG_MAX_FLASH_SECT (19) "也即扇区数目不正确,将出现以下问题
三、实验
1、编译下载,第一次启动
现象:可以看到在执行完env_init()后,env_valid=0x0;在执行env_relocate()函数时,打印警告信息,选择了默认 环境变量。
原因:从flash中读取的环境变量crc校验错误(第一次上电flash中并没有保存环境变量)
2、查看flash信息并保存环境变量(把内存中环境变量保存到flash中)
现象:EN29LV160AB的39个扇区信息如图所示;saveenv命令成功被执行
3、重启(第二次启动)
现象:可以看到在执行完env_init()后,env_valid=0x1;在执行env_relocate()函数时,不再打印警告信息。
原因:从flash中读取的环境变量通过了crc校验
实验板:TQ2440开发板
SDRAM:64M
norflash:EN29LV160AB(2M)
nandflash:(256M)
二、移植
本文不详谈从smdk2410移植到TQ2440的详细过程,只把涉及本文的norflash移植详细阐述。
1、norflash移植
/*----------------------------------------------------------------------- * FLASH and environment organization */ #define CONFIG_AMD_LV800 1 /* EN29LV160AB与AMD_LV800相似 */ #if 0 #define CONFIG_AMD_LV400 1 /* 不使用AMD_LV400 */ #endif #define CFG_MAX_FLASH_BANKS 1 /* flash就一块 */ #ifdef CONFIG_AMD_LV800 #define PHYS_FLASH_SIZE 0x00200000 /* flash为2MB */ #define CFG_MAX_FLASH_SECT (35) /* EN29LV160AB有35个扇区*/ #define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0E0000) /* addr of environment */ #endif #ifdef CONFIG_AMD_LV400 #define PHYS_FLASH_SIZE 0x00080000 /* 512KB */ #define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */ #define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */ #endif /* timeout values are in ticks */ #define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */ #define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */ #define CFG_ENV_IS_IN_FLASH 1 /*环境变量存在flash中,而非其他*/ #define CFG_ENV_SIZE 0x10000 /* 通常取一个norflash扇区的大小 */
2、增加调试功能
在include/common.h中添加“#define DEBUG //调试模式”
3、说明:倘若保持原程序的“#define CFG_MAX_FLASH_SECT (19) "也即扇区数目不正确,将出现以下问题
三、实验
1、编译下载,第一次启动
现象:可以看到在执行完env_init()后,env_valid=0x0;在执行env_relocate()函数时,打印警告信息,选择了默认 环境变量。
原因:从flash中读取的环境变量crc校验错误(第一次上电flash中并没有保存环境变量)
2、查看flash信息并保存环境变量(把内存中环境变量保存到flash中)
现象:EN29LV160AB的39个扇区信息如图所示;saveenv命令成功被执行
3、重启(第二次启动)
现象:可以看到在执行完env_init()后,env_valid=0x1;在执行env_relocate()函数时,不再打印警告信息。
原因:从flash中读取的环境变量通过了crc校验
相关文章推荐
- mini2440开发板移植uboot后norflash环境变量保存
- 第一次移植uboot(2)(NAND中环境变量读写)
- uboot环境变量不能保存的调试
- UBoot支持双启动(Nor and Nand)及环境变量保存的实现
- 2013.10u-boot移植之SD保存环境变量
- 第一次移植uboot(2)(NAND中环境变量读写) .
- U-boot-2014.04移植到MINI2440(10) 移植nand flash保存环境变量、添加分区
- 2440超详细uboot移植笔记(十三)------设置环境变量保存地址
- s5pv210 uboot-2012-10移植(八) 之支持SD卡保存环境变量
- uboot nor flash驱动移植(基于am29lv160bt)之环境变量没法保存的办法 .
- U-Boot移植--环境变量保存位置
- uboot移植之环境变量在NandFlash
- s5pv210 uboot-2012-10移植(八) 之支持SD卡保存环境变量
- uboot移植,编译及环境变量,启动等方面---from README
- uboot移植到6410开发板的过程及环境变量的修改
- 2013.10u-boot移植之增加nand保存环境变量
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
- uboot环境变量
- U-BOOT环境变量的获取和保存的实现分析
- uboot——简介和常用命令及环境变量