在uboot 下初始化nand,一般需要做如下工作:

第一: 配置默认从NAND boot

Index: include/configs/am335x_evm.h
===================================================================
--- include/configs/am335x_evm.h (revision 8)
+++ include/configs/am335x_evm.h (revision 9)
@@ -17,9 +17,11 @@
#define __CONFIG_AM335X_EVM_H

#include <configs/ti_am335x_common.h>
-#define CONFIG_SD_BOOT
+/*#define CONFIG_SD_BOOT*/
+#define CONFIG_NAND_BOOT
#define CONFIG_PHY_MICREL
#define CONFIG_PHY_MICREL_KSZ8XXX

#ifndef CONFIG_SPL_BUILD
# define CONFIG_TIMESTAMP

第二,nand 相应的引脚做初始化

===================================================================
--- board/ti/am335x/mux.c (revision 8)
+++ board/ti/am335x/mux.c (revision 9)
@@ -422,4 +422,5 @@
configure_module_pin_mux(gpio0_7_pin_mux);
configure_module_pin_mux(rmii1_pin_mux);
configure_module_pin_mux(mmc0_pin_mux_sk_evm);
+ configure_module_pin_mux(nand_pin_mux);
}
第三:指定uboot变量何存至uboot-env分区

Index: Kconfig
===================================================================
--- Kconfig (revision 13)
+++ Kconfig (revision 14)
@@ -22,7 +22,7 @@
default ENV_IS_IN_SPI_FLASH if INTEL_QUARK
default ENV_IS_IN_SPI_FLASH if INTEL_QUEENSBAY
default ENV_IS_IN_FAT if ARCH_BCM283X
- default ENV_IS_IN_FAT if MMC_OMAP_HS && TI_COMMON_CMD_OPTIONS
+ default ENV_IS_IN_NAND if TI_COMMON_CMD_OPTIONS
default ENV_IS_NOWHERE
help
At present the environment can be stored in only one place. Use this

第四:指nand env的大小

Index: am335x_evm.h
===================================================================
--- am335x_evm.h (revision 15)
+++ am335x_evm.h (revision 16)
@@ -301,6 +301,7 @@
#define CONFIG_ENV_OFFSET_REDUND (768 << 10) /* 768 KiB */
#elif defined(CONFIG_ENV_IS_IN_NAND)
#define CONFIG_ENV_OFFSET 0x001c0000
+#define CONFIG_ENV_SIZE (128 << 10) /* 128 KiB */
/*#define CONFIG_ENV_OFFSET_REDUND 0x001e0000*/
#define CONFIG_SYS_ENV_SECT_SIZE CONFIG_SYS_NAND_BLOCK_SIZE
#endif

第五: 需要修改默认的bootcmd从nand启动

Index: am335x_evm_defconfig
===================================================================
--- am335x_evm_defconfig (revision 15)
+++ am335x_evm_defconfig (revision 16)
@@ -6,7 +6,7 @@
CONFIG_DISTRO_DEFAULTS=y
CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000
CONFIG_SPL_LOAD_FIT=y
-CONFIG_BOOTCOMMAND="if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd"
+CONFIG_BOOTCOMMAND="run nandboot"
CONFIG_LOGLEVEL=3
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_VERSION_VARIABLE=y

经过上述修改之后,便可以默认从NAND引导,uboot环境变量保存至uboot-env分区

boot log:

U-Boot SPL 2018.01-svn16 (Nov 22 2018 - 15:56:43)
Trying to boot from NAND

U-Boot 2018.01-svn16 (Nov 22 2018 - 15:56:43 +0800)

CPU : AM335X-GP rev 2.1
Model: TI AM335x EVM
DRAM: 256 MiB
NAND: 256 MiB
MMC: OMAP SD/MMC: 0
Net: cpsw
Hit any key to stop autoboot: 0

am335x system upgrade uboot nand boot(三)的更多相关文章

  1. am335x system upgrade uboot sd boot(一)

    由于上层应用的需求,需要运行arm docker,在kernel3.2上面还不支持,且编译器的glibc版本比较低的问题,故需要做系统升级 新的内核4.14.40驱动开发和以往有很大的不同,关键在于d ...

  2. am335x system upgrade uboot ethernet(二)

    系统可以通过SD卡引道之后,为了之后了调试方便 通过查看网卡的硬件设计 正常来说需要注意的有如下几点: 1) 网口 的接线方式: RMII 2) 网口的PHY地址两张网口,这里我们只需先初始化一张网卡 ...

  3. am335x system upgrade kernel tf(五)

    1      Scope of Document This document describes TF hardware design 2      Requiremen 2.1     Functi ...

  4. am335x system upgrade rootfs using yocto make rootfs(十二)

    1      Scope of Document This document describes how to make am335x arago rootfs using ycoto project ...

  5. am335x system upgrade set/get current cpufreq(二十一)

    1      Scope of Document This document describes am335x cpufreq technology insider. 2      Requireme ...

  6. am335x system upgrade kernel ethernet(四)

    1      Scope of Document This document describes ethernet hardware design and porting KZS8081 to ubo ...

  7. am335x system upgrade kernel can(八)

    1      Scope of Document This document describes can bus hardware design and can bus driver developm ...

  8. am335x system upgrade kernel uart(七)

    1      Scope of Document This document describes UART hardware design, uart driver porting 2      Re ...

  9. am335x system upgrade rootfs custom service using systemd script(十七)

    1      Scope of Document systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序.功能包括:支持并行化任务: ...

随机推荐

  1. Qt532.容器QMap&QMultiMap

    PS: QMap 一个Key 只能对应 一个Value (不是绝对的情况...内部都有 一个key对应多个value的机制) PS: QMultiMap 一个Key 可以对应 多个Value PS:  ...

  2. Thread.Sleep(0)妙用

    Thread.Sleep(0)妙用 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 假设现在是 2008-4-7  ...

  3. Spring的一个入门例子

    例子参考于:Spring系列教材 以及<轻量级JavaEE企业应用实战> Axe.class package com.how2java.bean; public class Axe { p ...

  4. vue中 父子组件的通讯

    1.父组件可以使用 props 把数据传给子组件. 2.子组件可以使用 $emit 触发父组件的自定义事件 实例: 父组件: layout.vue  子组件:logform.vue 子组件: < ...

  5. Lua和C++交互 学习记录之二:栈操作

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  6. Java 动态图片压缩

    今天收到领导的一个任务,说是图片太大导致服务器那边无法解析,要求图片大小大于102*126就压缩大小为102*126.同时文件是以Base64字符串的形式传过来的.具体压缩方法如下: /** * 图片 ...

  7. pandas更换index,column名称

    1)仅换掉index名称 df.index = list 2)调整index时,后面的项目也要跟着调整: df.reindex(list) 注意如果list中出现了df中没有的index,后面的项目会 ...

  8. LeetCode--441--排列硬币

    问题描述: 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围 ...

  9. Practical Node.js (2018版) 第4章: 模版引擎

    Template Engines: Pug and Handlebars 一个模版引擎是一个库或框架.它用一些rules/languages来解释data和渲染views. web app中,view ...

  10. HDOJ 1023 Train Problem II

    考虑第1个火车出站的时刻,从1到n都有可能,如果它是第i个出栈,那么前面有规模为i-1的子问题,后面有规模为n-i的子问题.累加.