由于新唐 W25N01GVxxIGIT SPI NAND 的1 bit ECC 的鸡肋原因, 决定使用MKDV1GCL-NE SD NAND 作为启动盘
先进入UBOOT 源码, make menuconfig
关闭SPL启动( 不需要SPL启动, CPU 直接从SD NAND 加载UBOOT)

打开 MMC命令 并且关闭NAND 命令, 就是在UBOOT命令行,关闭掉NAND 操作命令,打开EMMC命令

在驱动菜单中开启EMMC

关闭不再使用的NAND 及SPI NAND 驱动


不是老莫有洁癖非得去掉这个2个NAND 模块。 但是去掉后UBOOT的体积由350多KB 减 少到 160多KB; 启动加载速度飞快,你还不心动么?
接下来需要修改/usr/nuc980/u-boot-2016.11/include/configs/nuc980_iot.h的配置文件
关闭NAND 的配置
/*#define CONFIG_NUC980_HW_CHECKSUM */
/*#define CONFIG_SYS_USE_SPIFLASH */
/*#define CONFIG_SYS_USE_NANDFLASH */
/*#define CONFIG_ENV_IS_IN_NAND */
下面的几行的支持EMMC 的环境变量;
#define CONFIG_SYS_MMC_ENV_DEV 0
#define CONFIG_ENV_IS_IN_MMC
#define CONFIG_ENV_OFFSET 0x80000
#define CONFIG_ENV_SIZE 0x20000
#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
特别说明下CONFIG_SYS_MMC_ENV_DEV 0
这个是MMC 设备, 这个是UBOOT 系统扫描出的MMC卡设备索引, MMC的硬件是挂载在MMC1上的, 不要想当然把设备定义为1;
人家UBOOT是根据实际硬件扫描出来,如果只有1个MMC卡,无论你硬件挂载在那个口, CONFIG_SYS_MMC_ENV_DEV都未0.
只有挂载了2个MMC设备时,才有机会设置为0 或者是1
这个不对的话,环境变量不能存储;
UBOOT 文件烧写
用新唐祖传的烧写软件烧写UBOOT文件Image execute address 要设置为e0000 这个是UBOOT编译的链接地址
/usr/nuc980/u-boot-2016.11/include/configs/nuc980_iot.h 有定义这个; 这个不能搞错,否则你写进入后电路板啥反应也没有,你就等着对住电路板发呆吧
Image start offset 是MMC卡烧写的地址,这个是固定的,CPU上电后从400处加载UBOOT;
QQ交流群:761781147