嵌入式系统内核镜像相关(五)
文章目录
- 前言
- 一、U-Boot概述
- 二、Xilinx官方给出的U-Boot驱动程序
- 三、Xilinx官方给出的Linux驱动程序
- 总结
前言
介绍U-Boot
和驱动相关的内容。
一、U-Boot概述
U-Boot
是一个开源的通用引导加载器,Xilinx
提供了一个位于GitHub - Xilinx/u-boot-xlnx 的仓库,其中包含了在Xilinx
板上运行的U-Boot
。
U-Boot
也有自己的命令,感觉挺有意思的:
? - alias for 'help'
base - print or set address offset
bdinfo - print Board Info structure
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
date - get/set/reset date && time
echo - echo args to console
editenv - edit environment variable
erase - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fdt - flattened device tree utility commands
flinfo - print FLASH memory information
go - start application at address 'addr'
help - print command description/usage
iminfo - print header information for application image
imls - list all images found in flash
imxtract- extract a part of a multi-image
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
md - memory display
mm - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mtest - simple RAM read/write test
mw - memory write (fill)
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
run - run commands in an environment variable
setenv - set environment variables
sf - SPI flash sub-system
sleep - delay execution for some time
source - run script from memory
sspi - SPI utility commands
tftpboot- boot image via network using TFTP protocol
version - print monitor version
目前眼熟的命令可能也就是tftpboot
,在petalinux-package
时出现过!
U-Boot
提供了两条指令引导启动镜像,booti
命令用于引导传统的U-Boot镜像
或新的多组件镜像(FIT格式)
。bootm
命令则用于在引导前重新定位镜像,使其地址可能与内核看到的地址不同,并会修改设备树以指示内核ramdisk镜像
在内存中的位置。具体可以参考官网的信息。感觉还是挺实用的,但目前还没用到,先不管了!
二、Xilinx官方给出的U-Boot驱动程序
1、U-Boot Ethernet Driver
2、U-Boot GPIO Driver
3、U-Boot UART Driver
4、U-Boot I2C Driver
5、U-Boot USB Driver
6、U-Boot axi spi/qspi driver
7、U-boot axi uart-lite driver
8、U-boot axi ethernet
9、U-boot axi ethernet-lite driver
10、还有其他的驱动,可以翻翻!
以上大多数都附了设备树代码,可以拿来参考!我在博客简单做个链接汇总,便于后续查找!
另外,可以在项目文件中找到配置文件:
dention@ubuntu:~/petalinux_proj/test_peta/proj_peta$ grep -rl "CONFIG_ZYNQ_GEM" ./
./project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs/config.cfg
该文件内容如下:
dention@ubuntu:~/petalinux_proj/test_peta/proj_peta$ cat ./project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs/config.cfg
# CONFIG_SYS_NS16550 is not set
# CONFIG_XILINX_UARTLITE is not set
# CONFIG_XILINX_SPI is not set
# CONFIG_SYS_FLASH_USE_BUFFER_WRITE is not set
# CONFIG_SYS_FLASH_CFI is not set
# CONFIG_FLASH_CFI_DRIVER is not set
# CONFIG_CMD_FLASH is not set
# CONFIG_CMD_IMLS is not set
# CONFIG_MTD_NOR_FLASH is not set
# CONFIG_MTD_DEVICE is not set
# CONFIG_SYS_FLASH_PROTECTION is not set
# CONFIG_MTD_UBI_WL_THRESHOLD is not set
# CONFIG_MTD_UBI_BEB_LIMIT is not set
# CONFIG_SPI_GENERIC is not set
# CONFIG_CMD_UBI is not set
# CONFIG_ZYNQMP_GQSPI is not set
# CONFIG_RBTREE is not set
# CONFIG_CMD_UBIFS is not set
# CONFIG_LZO is not set
# CONFIG_SPI_FLASH_SST is not set
# CONFIG_ZYNQ_SPI is not set
# CONFIG_CMD_NAND is not set
# CONFIG_NAND is not set
# CONFIG_NAND_ARASAN is not set
# CONFIG_CMD_NAND_LOCK_UNLOCK is not set
# CONFIG_XILINX_AXIEMAC is not set
# CONFIG_PHY_XILINX is not set
# CONFIG_PHY_TI is not set
# CONFIG_XILINX_EMACLITE is not set
# CONFIG_PHY_VITESSE is not set
# CONFIG_PHY_FIXED is not set
# CONFIG_SATA_CEVA is not set
# CONFIG_DM_SCSI is not set
# CONFIG_AHCI is not set
# CONFIG_SCSI is not set
# CONFIG_CMD_SCSI is not set
# CONFIG_SCSI_AHCI is not set
# CONFIG_CMD_I2C is not set
# CONFIG_DM_I2C is not set
# CONFIG_SYS_I2C_CADENCE is not set
# CONFIG_ZYNQMP_USB is not set
# CONFIG_USB_XHCI_HCD is not set
# CONFIG_USB_XHCI_DWC3 is not set
# CONFIG_USB_XHCI_ZYNQMP is not set
# CONFIG_USB_DWC3 is not set
# CONFIG_USB_DWC3_GADGET is not set
# CONFIG_USB_DWC3_GENERIC is not set
# XILINX_FSL_LINKS is not set
# CONFIG_CMD_UNZIP is not set
# CONFIG_CMD_BOOTI is not set
# CONFIG_BOARD_EARLY_INIT_R is not setCONFIG_DM=y
CONFIG_SYS_MALLOC_F=y
CONFIG_SYS_GENERIC_BOARD=y
CONFIG_CMD_CACHE=y
CONFIG_SYS_L2CACHE_OFF=y
CONFIG_CMD_CLK=yCONFIG_ZYNQ_SERIAL=y
CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_ZYNQ=y
CONFIG_DEBUG_UART_ANNOUNCE=yCONFIG_DEBUG_UART_BASE=0xE0000000CONFIG_DEBUG_UART_CLOCK=100000000CONFIG_ZYNQ_GEM=y
CONFIG_NET_RANDOM_ETHADDR=yCONFIG_NET=y
CONFIG_PHY_GIGE=y
CONFIG_NETDEVICES=y
CONFIG_CMD_NET=y
CONFIG_DM_ETH=y
CONFIG_CMD_PING=y
CONFIG_CMD_DHCP=y
CONFIG_PHYLIB=y
CONFIG_CMD_TFTPPUT=y
CONFIG_CMD_NFS=y
CONFIG_CMD_MII=y
CONFIG_PHY_MARVELL=y
CONFIG_PHY_REALTEK=y
CONFIG_PHY_NATSEMI=yCONFIG_ZYNQ_QSPI=y
CONFIG_SF_DUAL_FLASH=yCONFIG_CMD_SPI=y
CONFIG_CMD_SF=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_BAR=y
CONFIG_DM_SPI_FLASH=y
CONFIG_DM_SPI=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_SPI_FLASH_MACRONIX=y
CONFIG_SPI=y
CONFIG_SPI_FLASH_ISSI=yCONFIG_MMC=y
CONFIG_DM_MMC=y
CONFIG_MMC_SDHCI_ZYNQ=y
CONFIG_CMD_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_DOS_PARTITION=y
CONFIG_FAT_WRITE=yCONFIG_ZYNQ_SDHCI_MAX_FREQ=52000000CONFIG_USB=y
CONFIG_CMD_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_ULPI_VIEWPORT=y
CONFIG_USB_ULPI=y
CONFIG_USB_STORAGE=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_CMD_THOR_DOWNLOAD=y
CONFIG_CMD_DFU=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_FAT=y
CONFIG_DFU_RAM=y
CONFIG_USB_FUNCTION_THOR=yCONFIG_USB_GADGET_MANUFACTURER="Xilinx"CONFIG_USB_GADGET_VENDOR_NUM=0x03FDCONFIG_USB_GADGET_PRODUCT_NUM=0x0300CONFIG_FPGA_XILINX=y
CONFIG_CMD_FPGA_LOADFS=y
CONFIG_FPGA=y
CONFIG_CMD_FPGA=yCONFIG_SYS_TEXT_BASE=0x00400000# CONFIG_BOOTARGS is not set# CONFIG_USE_BOOTARGS is not set# CONFIG_ENV_IS_IN_FLASH is not set# CONFIG_ENV_IS_NOWHERE is not set# CONFIG_ENV_IS_IN_NAND is not set# CONFIG_ENV_IS_IN_FAT is not setCONFIG_ENV_IS_IN_SPI_FLASH=yCONFIG_DFU_MMC=yCONFIG_BOOTDELAY=4CONFIG_SYS_CONFIG_NAME="platform-top"# CONFIG_SPL is not set# CONFIG_I2C_EEPROM is not set# CONFIG_CMD_EEPROM is not set# CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW is not set# CONFIG_SYS_I2C_EEPROM_ADDR is not set
三、Xilinx官方给出的Linux驱动程序
就放个链接吧!提供的内容有很多!
根据xilinx-wiki
的说法,由于历史原因,内核树中有许多驱动程序,它们可能可以工作,但以下列出的驱动程序是当前经过测试的,鼓励用户使用这些驱动程序而不是其他驱动程序。任何其他不在主线上的驱动程序,且仅在Xilinx
树中,可能已经过时,并且可能随时被移除。
所以,稳妥起见,Linux
官方的设备树和Xilinx
官方提供的设备树都需要参考!
另外也翻到一个线上查阅设备树的网址。
到这里,资料整理得差不多了,初步的上手实验也做了,需要进一步深化一下了!
总结
本文介绍U-Boot
和驱动相关的内容,提供了用于学习的重要链接。简简单单水一篇!开干!!!