当前位置: 首页 > backend >正文

嵌入式系统内核镜像相关(五)

文章目录

  • 前言
  • 一、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和驱动相关的内容,提供了用于学习的重要链接。简简单单水一篇!开干!!!

http://www.xdnf.cn/news/14237.html

相关文章:

  • 33-Oracle Parallel 并行处理的选择和实践
  • 【论文阅读34】Attention-ResNet-LSTM(JRMGE2024)
  • 移动开发中边框1px的问题
  • AJAX——前后端传输数据场景下使用的技术
  • java设计模式[2]之创建型模式
  • 【无标题】【2025年软考中级】第三章数据结构3.2 栈与队列
  • 【0.0 漫画C语言计算机基础 - 从二进制开始认识计算机】
  • 纯 CSS 实现的的3种扫光效果
  • 记录lxml中的etree、xpath来定位、爬取元素
  • 清理 Docker 容器日志文件方法
  • YOLOv3 训练与推理流程详解-结合真实的数据样例进行模拟
  • 19.vue.js的style的lang=scss、less(2)
  • 荒原之梦:致力于考研数学实战
  • 大模型——Dify 与 Browser-use 结合使用
  • Spring AI Alibaba Graph 实践
  • 简历模板2——数据挖掘工程师5年经验
  • DataX Hive写插件深度解析:从数据写入到Hive表关联实战
  • 【Flutter】Widget、Element和Render的关系-Flutter三棵树
  • 写出优秀的 Git 提交信息:一份详尽指南(Angular 风格)
  • CS144 lab0: warmup
  • 嵌入式 STM32 开发问题:烧录 STM32CubeMX 创建的 Keil 程序没有反应
  • Flutter动画与交互:打造流畅用户体验的完整指南
  • 基于GNU Radio Companion搭建的AM信号实验
  • 项目拓展-Apache对象池,对象池思想结合ThreadLocal复用日志对象
  • 前端面试专栏-主流框架:7. React核心概念(组件、JSX、状态管理)
  • JAVA-了解网络编程
  • QNAP威联通NAS配置SFTP与内网穿透技术实现远程文件访问
  • Docker 部署 RomM 指南:打造私有戏库与即点即玩系统
  • 31-Oracle 23 ai-Unrestrict Parallel DML(无限制并行DML)
  • 支付宝转账怎么测试?