zoukankan      html  css  js  c++  java
  • norflash移植及uboot 保存环境变量实验

    一、实验环境

    实验板: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校验

  • 相关阅读:
    聊聊自动化的打开方式
    浅谈如何提高自动化测试的稳定性和可维护性 (pytest&allure)
    Jmeter做压力测试的心得
    为什么测试人员必须掌握Linux?
    数据结构与算法系列 目录
    高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备
    Fastdfs文件系统扩容
    Linux下FastDFS分布式存储-总结及部署记录
    How to setup a Alpine Linux mirror
    修改内核参数开启转发
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/3450302.html
Copyright © 2011-2022 走看看