uboot移植之mx6ull_alientek_nand.h文件详解二

一.  简介

mx6ull_alientek_nand.h文件是 开发板的 uboot的一个配置文件。每个开发板都有一个 .h的配置文件。

mx6ull_alientek_nand.h 文件其实是 之前针对正点原子ALPHA开发板移植的 Uboot配置文件。

本文继上一篇文章的学习,地址如下:

uboot移植之mx6ull_alientek_nand.h文件详解一-CSDN博客

本文继续分析一下 针对正点原子ALPHA开发板的 配置文件: mx6ull_alientek_nand.h。
 

二.  mx6ull_alientek_nand.h文件详解

1.   系统烧写到 NAND里时的环境变量。
#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"panel=TFT43AB\0" \
	"fdt_addr=0x83000000\0" \
	"fdt_high=0xffffffff\0"	  \
	"console=ttymxc0\0" \
	"bootargs=console=ttymxc0,115200 ubi.mtd=4 "  \
		"root=ubi0:rootfs rootfstype=ubifs "		     \
		CONFIG_BOOTARGS_CMA_SIZE \
		"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
	"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
		"nand read ${fdt_addr} 0x5000000 0x100000;"\
		"bootz ${loadaddr} - ${fdt_addr}\0"

#else

如果系统烧写到 NAND-Flash里时,从 Nand-Flash启动时,需要设置的环境变量。

2.  如果不从 NAND启动时设置的环境变量值。
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"script=boot.scr\0" \
...............
					"echo WARNING: Could not determine dtb to use; fi; " \
			"fi;\0" \

#define CONFIG_BOOTCOMMAND \
	   "run findfdt;" \
	   "mmc dev ${mmcdev};" \
	   "mmc dev ${mmcdev}; if mmc rescan; then " \
		   "if run loadbootscript; then " \
			   "run bootscript; " \
		   "else " \
			   "if run loadimage; then " \
				   "run mmcboot; " \
			   "else run netboot; " \
			   "fi; " \
		   "fi; " \
	   "else run netboot; fi"
#endif

通 过 条 件 编 译 来 设 置 宏 CONFIG_EXTRA_ENV_SETTINGS , CONFIG_EXTRA_ENV_SETTINGS宏 也是设置一些环境变量,此宏会设置 bootargs 这个环境变 量。

3.  内存设置命令,内核( DRAM 中)的加载地址,系统时钟频率,栈大小
#define CONFIG_CMD_MEMTEST
#define CONFIG_SYS_MEMTEST_START	0x80000000
#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + 0x8000000)

#define CONFIG_SYS_LOAD_ADDR		CONFIG_LOADADDR
#define CONFIG_SYS_HZ			1000

#define CONFIG_STACKSIZE		SZ_128K

第1~3行,设置命令 memtest 相关宏定义,比如使能命令 memtest ,设置 memtest 测试 的内存起 始地址和内存大小。
第 5 行,宏 CONFIG_SYS_LOAD_ADDR 表示 linux kernel 在 DRAM 中的加载地址,也就是 linux kernel 在 DRAM 中的存储首地址,CONFIG_LOADADDR=0X80800000。
第 6 行, CONFIG_SYS_HZ 为系统时钟频率,这里为 1000Hz

第8 行,CONFIG_STACKSIZE 为栈大小,这里为 128KB

4.  DDR(即DRAM)起始地址与 IMX6ULL内部ram
#define CONFIG_NR_DRAM_BANKS		1
#define PHYS_SDRAM			MMDC0_ARB_BASE_ADDR

#define CONFIG_SYS_SDRAM_BASE		PHYS_SDRAM
#define CONFIG_SYS_INIT_RAM_ADDR	IRAM_BASE_ADDR
#define CONFIG_SYS_INIT_RAM_SIZE	IRAM_SIZE
1 行,宏 CONFIG_NR_DRAM_BANKS DRAM BANK 的数量, I.MX6ULL 只有一 DRAM BANK ,我们也只用到了一个 BANK ,所以为 1
2 行,宏 PHYS_SDRAM I.MX6ULL DRAM 控制器 MMDC0 所管辖的 DRAM 围起始地址,也就是 0X80000000
4 行,宏 CONFIG_SYS_SDRAM_BASE DRAM 的起始地址。
5 行,IMX6ULL芯片内部有一个 128KB的 oc-ram,宏 CONFIG_SYS_INIT_RAM_ADDR I.MX6ULL 内部 IRAM 的起始地址 ( 就是 OCRAM 的起始地址 ) ,为 0X00900000
6 行,宏 CONFIG_SYS_INIT_RAM_SIZE I.MX6ULL 内部 IRAM 的大小 (OCRAM 的大小 ) ,为 0X00040000=128KB

5.  SP指针的初始地址与偏移地址
#define CONFIG_SYS_INIT_SP_OFFSET \
	(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
#define CONFIG_SYS_INIT_SP_ADDR \
	(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_INIT_SP_ADDR 初始 SP 有关,第一个为初始 SP 偏移,第二个为初始 SP 地址。

6.  从哪个设备启动:选择NAND启动、QSPI 或 EMMC启动?
#ifdef CONFIG_SYS_BOOT_QSPI
#define CONFIG_FSL_QSPI
#define CONFIG_ENV_IS_IN_SPI_FLASH
#elif defined CONFIG_SYS_BOOT_NAND
#define CONFIG_SYS_USE_NAND
#define CONFIG_ENV_IS_IN_NAND
#else
#define CONFIG_FSL_QSPI
#define CONFIG_ENV_IS_IN_MMC
#endif

我所使用的开发板是 ALPHA-NAND-Flash版本,所以,我的开发板是从 nand-Flash启动的。

你可能感兴趣的:(系统移植篇,uboot,linux,arm开发)