Flash基础入门之u-boot-2014.10移植第23天----nand flash启动(一)
小标 2019-01-24 来源 : 阅读 1236 评论 0

摘要:本文主要向大家介绍了Flash基础入门之u-boot-2014.10移植第23天----nand flash启动(一),通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了Flash基础入门之u-boot-2014.10移植第23天----nand flash启动(一),通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

硬件平台:tq2440开发环境:Ubuntu-3.11u-boot版本:2014.10本文允许转载,请注明出处://blog.csdn.net/fulinus在Nand flash中保存环境变量u-boot中的环境变量可以通过pri命令可以查看,可以通过set(setenv)命令设置一个参数,设置之后的参数仅仅是保存在SDRAM中,掉电后丢失,使用save命令可以保存参数到Nor flash或Nand flash中去,但是u-boot默认是保存到Nor flash中去,下面修改u-boot,使其保存的环境变量保存到Nand flash中去。在include/configs/tq2440.h文件中修改:+ #if NONE_FLAG                  
#define CONFIG_ENV_ADDR         (CONFIG_SYS_FLASH_BASE + 0x070000)
#define CONFIG_ENV_IS_IN_FLASH 
#define CONFIG_ENV_SIZE         0x10000
+ #else                          
+ #define CONFIG_ENV_IS_IN_NAND  
+ #define CONFIG_ENV_OFFSET       0x40000 /* 256K for u-boot */
+ #define CONFIG_ENV_SIZE         0x20000 /* 128K for environment */
+ #endif编译、烧录到SDRAM中去,运行。演示:*** Warning - bad CRC, using default environment这条提示说明没有没有环境变量,使用默认的环境变量,使用pri查看有哪些环境变量:[TQ2440 #] pribaudrate=115200bootdelay=5ethact=dm9000ipaddr=10.0.0.110netmask=255.255.255.0serverip=10.0.0.1stderr=serialstdin=serialstdout=serial使用save命令保存默认的环境变量:[TQ2440 #] saveSaving Environment to NAND...Erasing NAND...Erasing at 0x5c000 -- 100% complete.Writing to NAND... OK[TQ2440 #] [TQ2440 #] nand dump 40000Page 00040000 dump:        fd 4a d7 7a 62 61 75 64  72 61 74 65 3d 31 31 35        32 30 30 00 62 6f 6f 74  64 65 6c 61 79 3d 35 00        65 74 68 61 63 74 3d 64  6d 39 30 30 30 00 69 70        61 64 64 72 3d 31 30 2e  30 2e 30 2e 31 31 30 00        6e 65 74 6d 61 73 6b 3d  32 35 35 2e 32 35 35 2e        32 35 35 2e 30 00 73 65  72 76 65 72 69 70 3d 31        30 2e 30 2e 30 2e 31 00  73 74 64 65 72 72 3d 73        65 72 69 61 6c 00 73 74  64 69 6e 3d 73 65 72 69        61 6c 00 73 74 64 6f 75  74 3d 73 65 72 69 61 6c        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00再次烧录运行,就没有上面的警告了。在tq2440.h头文件中设置环境变量:#define CONFIG_NETMASK      255.255.255.0
+ #define CONFIG_IPADDR       192.168.169.9
+ #define CONFIG_SERVERIP     192.168.169.8
+ #define CONFIG_ETHADDR      12:34:56:78:9A:BC添加mtd分区命令修改tq2440.h文件,使能该命令宏:/*
 * File system
 */
+ #if NONE_FLAG
#define CONFIG_CMD_FAT
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define CONFIG_MTD_PARTITIONS
#define CONFIG_YAFFS2
#define CONFIG_RBTREE
+ #else
+ #define CONFIG_CMD_MTDPARTS
+ define CONFIG_MTD_DEVICE
#endif编译、烧录到SDRAM中去,运行。演示:[TQ2440 #] mtd
mtdids not defined, no default present上述提示位于common/cmd_mtdparts.c文件1751行if (mtdids_default) {
            debug("mtdids variable not defined, using default\n");
            ids = mtdids_default;
            setenv("mtdids", (char *)ids);
        } else {
            printf("mtdids not defined, no default present\n");
            return 1;
        }mtdids_default为假时错误打印该条信息,mtdids_default变量在该文件中定义如下:/* default values for mtdids and mtdparts variables */
#if defined(MTDIDS_DEFAULT)
static const char *const mtdids_default = MTDIDS_DEFAULT;
#else
static const char *const mtdids_default = NULL;
#endif

#if defined(MTDPARTS_DEFAULT)
static const char *const mtdparts_default = MTDPARTS_DEFAULT;
#else
static const char *const mtdparts_default = NULL;
#endif
现在这里的mtdids_default=NULL,因为未定义MTDIDS_DEFAULT宏。下面定义MTDIDS_DEFAULT宏和MTDPARTS_DEFAULT宏,参考该文件中最上面注释部分内容: * Examples: * * 1 NOR Flash, with 1 single writable partition: * mtdids=nor0=edb7312-nor * mtdparts=mtdparts=edb7312-nor:- * * 1 NOR Flash with 2 partitions, 1 NAND with one * mtdids=nor0=edb7312-nor,nand0=edb7312-nand * mtdparts=mtdparts=edb7312-nor:256k(ARMboot)ro,-(root);edb7312-nand:-(home) * */在tq2440.h头文件中定义:#else
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
+ #define MTDIDS_DEFAULT "nand0=tq2440-0"
+ #define MTDPARTS_DEFAULT "mtdparts=tq2440-0:1m(u-boot)," +     "4m(kernel)," +     "-(rootfs)"
#endif编译、烧录到SDRAM中去,运行。演示:[TQ2440 #] pribaudrate=115200bootdelay=5ethact=dm9000ethaddr=12:34:56:78:9A:BCipaddr=192.168.169.9netmask=255.255.255.0serverip=192.168.169.8stderr=serialstdin=serialstdout=serial[TQ2440 #] mtdpartsmtdparts variable not set, see ‘help mtdparts‘no partitions defineddefaults:mtdids  : nand0=tq2440-0mtdparts: mtdparts=tq2440-0:1m(u-boot),4m(kernel),-(rootfs)[TQ2440 #] mtdparts default[TQ2440 #] save[TQ2440 #] mtdpartsdevice nand0 , # parts = 3 #: name                size            offset          mask_flags 0: u-boot              0x00100000      0x00000000      0 1: kernel              0x00400000      0x00100000      0 2: rootfs              0x03b00000      0x00500000      0active partition: nand0,0 - (u-boot) 0x00100000 @ 0x00000000

以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程