zynq_common.h和zynq_zed.h的宏分析

下面来分析,uboot_xlnx_2013.4默认的zynq_common.h的配置文件。大部分需要改动的内容,都在这个里面。

#define CONFIG_IPADDR	10.10.70.102

默认IP地址,修改成板子需要设置的地址。例如192.168.1.10

#define CONFIG_SERVERIP	10.10.70.101

默认SERVERIP地址,修改成板子需要的地址。例如192.168.1.11

#define CONFIG_SYS_SDRAM_BASE	0

SDRAM_BASE,保持为0.

#define CONFIG_SYS_SDRAM_SIZE	PHYS_SDRAM_1_SIZE

SDRAM_SIZE,保持为PHYS_SDRAM_1_SIZE。这个宏,在板子的配置文件里定义。

#define CONFIG_SYS_TEXT_BASE		0x04000000

UBOOT的执行地址,这是DDR的起始地址,表示将代码搬移到DDR中,并重定位到DDR中,从DDR执行。

#define CONFIG_ENV_SIZE			(128 << 10) /*128KB*/

定义ENV_SIZE的大小。

#define CONFIG_ENV_OVERWRITE

允许overwrite serial and ethaddr。

#define CONFIG_SYS_MALLOC_LEN		0x400000

定义Size of malloc() pool。

#define CONFIG_BAUDRATE			115200

定义串口波特率。

#define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 38400, 115200 }

定义串口波特率表。

#if defined(CONFIG_ZYNQ_SERIAL_UART0) || defined(CONFIG_ZYNQ_SERIAL_UART1)
#define CONFIG_ZYNQ_SERIAL
#endif

定义代码中包含了串口。CONFIG_ZYNQ_SERIAL_UART1这个宏,需要在板子配置文件中定义。

/* Ethernet driver */
#if defined(CONFIG_ZYNQ_GEM0) || defined(CONFIG_ZYNQ_GEM1)
#define CONFIG_NET_MULTI
#define CONFIG_ZYNQ_GEM
#define CONFIG_MII
#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
#define CONFIG_PHYLIB
#define CONFIG_PHY_MARVELL
#define CONFIG_SYS_ENET
#endif

定义代码中包含以太网。
CONFIG_ZYNQ_GEM0这个宏,需要在板子配置文件中定义。
另外,还需要定义CONFIG_ZYNQ_GEM_PHY_ADDR0这个宏。例如zed,定义为0.

#define CONFIG_ZYNQ_GEM_PHY_ADDR0	0

/* Miscellaneous configurable options */
#define CONFIG_SYS_PROMPT		"zynq-uboot> "

定义显示的提示字符。

#define CONFIG_SYS_HUSH_PARSER	/* use "hush" command parser */
#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "

#define CONFIG_CMDLINE_EDITING

支持命令行修改,为CMDLINE配置inputbuffer。

#define CONFIG_AUTO_COMPLETE

支持命令行自动完成。

#define CONFIG_SYS_LONGHELP

支持长篇帮助。

#define CONFIG_CLOCKS
#define CONFIG_CMD_CLK

支持时钟功能。

#define CONFIG_BOARD_LATE_INIT

支持BOARD_LATE_INIT。

#define CONFIG_SYS_MAXARGS		32

命令行最大参数数量。

#define CONFIG_SYS_CBSIZE		2048

命令行字符缓存区大小。

#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
					sizeof(CONFIG_SYS_PROMPT) + 16)

命令行打印字符缓冲区大小。

#define CONFIG_OF_LIBFDT

支持FDT。

/* NOR */
#ifndef CONFIG_SYS_NO_FLASH
#define CONFIG_SYS_FLASH_BASE		0xE2000000
#define CONFIG_SYS_FLASH_SIZE		(16 * 1024 * 1024)
#define CONFIG_SYS_MAX_FLASH_BANKS	1
/* max number of sectors/blocks on one chip */
#define CONFIG_SYS_MAX_FLASH_SECT	512
#define CONFIG_SYS_FLASH_ERASE_TOUT	1000
#define CONFIG_SYS_FLASH_WRITE_TOUT	5000
#define CONFIG_FLASH_SHOW_PROGRESS	10
#define CONFIG_SYS_FLASH_CFI
#undef CONFIG_SYS_FLASH_EMPTY_INFO
#define CONFIG_FLASH_CFI_DRIVER
#undef CONFIG_SYS_FLASH_PROTECTION /* don't use hardware protection */
/* use buffered writes (20x faster) */
#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
#define CONFIG_ZYNQ_M29EW_WB_HACK
#endif

定义是否包含NOR功能。CONFIG_SYS_NO_FLASH这个宏,需要在板子的配置文件里定义。

/* SPI */
#ifdef CONFIG_ZYNQ_SPI
#define CONFIG_SPI_FLASH
#define CONFIG_SPI_FLASH_SST
#define CONFIG_CMD_SPI
#define CONFIG_CMD_SF
#endif

定义是否包含SPI功能。

/* QSPI */
#ifdef CONFIG_ZYNQ_QSPI
#define CONFIG_SF_DEFAULT_SPEED	30000000
#define CONFIG_SPI_FLASH
#define CONFIG_SPI_FLASH_BAR
#define CONFIG_SPI_FLASH_SPANSION
#define CONFIG_SPI_FLASH_STMICRO
#define CONFIG_SPI_FLASH_WINBOND
#define CONFIG_CMD_SPI
#define CONFIG_CMD_SF
#endif

定义是否包含QSPI功能。CONFIG_ZYNQ_QSPI这个宏,需要在板子的配置文件里定义。

/* MMC */
#if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1)
#define CONFIG_MMC
#define CONFIG_GENERIC_MMC
#define CONFIG_SDHCI
#define CONFIG_ZYNQ_SDHCI
#define CONFIG_CMD_MMC
#define CONFIG_CMD_FAT
#define CONFIG_SUPPORT_VFAT
#define CONFIG_CMD_EXT2
#define CONFIG_DOS_PARTITION
#endif

定义是否包含MMC功能。CONFIG_ZYNQ_SDHCI0这个宏,需要在板子配置文件里定义。

/* NAND */
#ifdef CONFIG_NAND_ZYNQ
#define CONFIG_CMD_NAND
#define CONFIG_CMD_NAND_LOCK_UNLOCK
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_SYS_NAND_SELF_INIT
#define CONFIG_SYS_NAND_ONFI_DETECTION
#define CONFIG_MTD_DEVICE
#endif

定义是否包含NAND功能。

/* I2C */
#if defined(CONFIG_ZYNQ_I2C0) || defined(CONFIG_ZYNQ_I2C1)
#define CONFIG_CMD_I2C
#define CONFIG_SYS_I2C
#define CONFIG_SYS_I2C_ZYNQ
/* # define CONFIG_SYS_I2C */
#define CONFIG_SYS_I2C_ZYNQ_SPEED	100000
#define CONFIG_SYS_I2C_ZYNQ_SLAVE	1
#endif

定义是否包含I2C功能。

/* EEPROM */
#ifdef CONFIG_ZYNQ_EEPROM
#define CONFIG_CMD_EEPROM
#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN		1
#define CONFIG_SYS_I2C_EEPROM_ADDR		0x54
#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS	4
#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS	5
#define CONFIG_SYS_EEPROM_SIZE			1024 /* Bytes */
#endif

定义是否包含EEPROM功能。

/* For development/debugging */
#ifdef DEBUG
#define CONFIG_CMD_REGINFO
#define CONFIG_PANIC_HANG
#endif
定义是否支持DEBUG。DEBU

G这个宏,需要在板子配置文件里定义。

/* Default environment */
#ifndef CONFIG_EXTRA_ENV_SETTINGS
#define CONFIG_EXTRA_ENV_SETTINGS	\
	"ethaddr=00:0a:35:00:01:22\0"	\
	"kernel_image=uImage\0"	\
	"ramdisk_image=uramdisk.image.gz\0"	\
	"devicetree_image=devicetree.dtb\0"	\
	"bitstream_image=system.bit.bin\0"	\
	"boot_image=BOOT.bin\0"	\
	"loadbit_addr=0x100000\0"	\
	"loadbootenv_addr=0x2000000\0" \
	"kernel_size=0x500000\0"	\
	"devicetree_size=0x20000\0"	\
	"ramdisk_size=0x5E0000\0"	\
	"boot_size=0xF00000\0"	\
	"fdt_high=0x20000000\0"	\
	"initrd_high=0x20000000\0"	\
	"bootenv=uEnv.txt\0" \
	"loadbootenv=fatload mmc 0 ${loadbootenv_addr} ${bootenv}\0" \
	"importbootenv=echo Importing environment from SD ...; " \
		"env import -t ${loadbootenv_addr} $filesize\0" \
	"mmc_loadbit_fat=echo Loading bitstream from SD/MMC/eMMC to RAM.. && " \
		"mmcinfo && " \
		"fatload mmc 0 ${loadbit_addr} ${bitstream_image} && " \
		"fpga load 0 ${loadbit_addr} ${filesize}\0" \
	"norboot=echo Copying Linux from NOR flash to RAM... && " \
		"cp.b 0xE2100000 0x3000000 ${kernel_size} && " \
		"cp.b 0xE2600000 0x2A00000 ${devicetree_size} && " \
		"echo Copying ramdisk... && " \
		"cp.b 0xE2620000 0x2000000 ${ramdisk_size} && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"qspiboot=echo Copying Linux from QSPI flash to RAM... && " \
		"sf probe 0 0 0 && " \
		"sf read 0x3000000 0x100000 ${kernel_size} && " \
		"sf read 0x2A00000 0x600000 ${devicetree_size} && " \
		"echo Copying ramdisk... && " \
		"sf read 0x2000000 0x620000 ${ramdisk_size} && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"uenvboot=" \
		"if run loadbootenv; then " \
			"echo Loaded environment from ${bootenv}; " \
			"run importbootenv; " \
		"fi; " \
		"if test -n $uenvcmd; then " \
			"echo Running uenvcmd ...; " \
			"run uenvcmd; " \
		"fi\0" \
	"sdboot=if mmcinfo; then " \
			"run uenvboot; " \
			"echo Copying Linux from SD to RAM... && " \
			"fatload mmc 0 0x3000000 ${kernel_image} && " \
			"fatload mmc 0 0x2A00000 ${devicetree_image} && " \
			"fatload mmc 0 0x2000000 ${ramdisk_image} && " \
			"bootm 0x3000000 0x2000000 0x2A00000; " \
		"fi\0" \
	"nandboot=echo Copying Linux from NAND flash to RAM... && " \
		"nand read 0x3000000 0x100000 ${kernel_size} && " \
		"nand read 0x2A00000 0x600000 ${devicetree_size} && " \
		"echo Copying ramdisk... && " \
		"nand read 0x2000000 0x620000 ${ramdisk_size} && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"jtagboot=echo TFTPing Linux to RAM... && " \
		"tftp 0x3000000 ${kernel_image} && " \
		"tftp 0x2A00000 ${devicetree_image} && " \
		"tftp 0x2000000 ${ramdisk_image} && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"rsa_norboot=echo Copying Image from NOR flash to RAM... && " \
		"cp.b 0xE2100000 0x100000 ${boot_size} && " \
		"zynqrsa 0x100000 && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"rsa_nandboot=echo Copying Image from NAND flash to RAM... && " \
		"nand read 0x100000 0x0 ${boot_size} && " \
		"zynqrsa 0x100000 && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"rsa_qspiboot=echo Copying Image from QSPI flash to RAM... && " \
		"sf probe 0 0 0 && " \
		"sf read 0x100000 0x0 ${boot_size} && " \
		"zynqrsa 0x100000 && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"rsa_sdboot=echo Copying Image from SD to RAM... && " \
		"fatload mmc 0 0x100000 ${boot_image} && " \
		"zynqrsa 0x100000 && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0" \
	"rsa_jtagboot=echo TFTPing Image to RAM... && " \
		"tftp 0x100000 ${boot_image} && " \
		"zynqrsa 0x100000 && " \
		"bootm 0x3000000 0x2000000 0x2A00000\0"
#endif

定义CONFIG_EXTRA_ENV_SETTINGS。用来配置默认的环境变量。这个宏需要修改。

#define CONFIG_BOOTDELAY		3 /* -1 to Disable autoboot */

定义BOOT时的读秒。

#define CONFIG_SYS_LOAD_ADDR		0 /* default? */

定义加载地址。

#define	CONFIG_ZERO_BOOTDELAY_CHECK	1

定义读秒检查。

/* Physical Memory map */
#define CONFIG_NR_DRAM_BANKS		1
#define PHYS_SDRAM_1			0

定义内存的使用与编号。

#define CONFIG_SYS_MEMTEST_START	PHYS_SDRAM_1

定义内存自检的起始地址。

#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + \
					PHYS_SDRAM_1_SIZE - (16 * 1024 * 1024))

定义内存自检的结束地址。

#define CONFIG_SYS_INIT_RAM_ADDR	0xFFFF0000
#define CONFIG_SYS_INIT_RAM_SIZE	0x1000
#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR + \
					CONFIG_SYS_INIT_RAM_SIZE - \
					GENERATED_GBL_DATA_SIZE)

定义初始化内存地址区间。

/* Enable the PL to be downloaded */
#define CONFIG_FPGA
#define CONFIG_FPGA_XILINX
#define CONFIG_FPGA_ZYNQPL
#define CONFIG_CMD_FPGA

定义包含PL下载功能。

/* FIT support */
#define CONFIG_FIT		1
#define CONFIG_FIT_VERBOSE	1 /* enable fit_format_{error,warning}() */

定义支持FIT。

/* Boot FreeBSD/vxWorks from an ELF image */
#if defined(CONFIG_ZYNQ_BOOT_FREEBSD)
#define CONFIG_API
#define CONFIG_CMD_ELF
#define CONFIG_SYS_MMC_MAX_DEVICE	1
#endif

定义包含FreeBSD。CONFIG_ZYNQ_BOOT_FREEBSD这个宏,需要在板子配置文件中定义。

再来分析zynq_test.h。

#define PHYS_SDRAM_1_SIZE	(1024 * 1024 * 1024)
#define CONFIG_ZYNQ_SERIAL_UART1
#define CONFIG_ZYNQ_GEM0
#define CONFIG_ZYNQ_GEM_PHY_ADDR0	0
#define CONFIG_SYS_NO_FLASH
#define CONFIG_ZYNQ_SDHCI0
#define CONFIG_ZYNQ_QSPI
#define CONFIG_ZYNQ_BOOT_FREEBSD

以上都和zynq_zed.h一样。

#define CONFIG_ZYNQ_USB

这里增加了对USB的支持。

#define CONFIG_ENV_OFFSET		0x080000
#define CONFIG_ENV_SIZE			(128*1024)
#define CONFIG_ENV_SECT_SIZE 	(4*1024) // W25Q128 is 4KB sector type

增加了对NOR FLASH的支持。

#define CONFIG_DEFAULT_DEVICE_TREE	zynq-test

定义了设备树的默认名称。但是旧版本不使用设备树。

#define CONFIG_IPADDR	192.168.1.55
#define CONFIG_SERVERIP	192.168.1.13

定义网络地址。这一步可以直接在zynq_common.h里面改,不需要在这里改。

#define CONFIG_EXTRA_ENV_SETTINGS	\
	........

定义默认环境变量。这一步可以直接在zynq_common.h里面改,不需要在这里改。

#include <configs/zynq_common.h>

最后一步,包含zynq_common.h。实现裁剪配置。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值