From 84e6e9ef39ceb9eeba5e5ba1f2624749884556e5 Mon Sep 17 00:00:00 2001 From: Joris van Rantwijk Date: Sun, 7 Jan 2024 01:06:45 +0100 Subject: [PATCH] Rework U-Boot config and devicetree --- os/12_build_uboot.sh | 18 +-- os/config/uboot_redpitaya_puzzlefw_defconfig | 147 +++++++++++++++++++ os/devicetree/redpitaya_puzzlefw_uboot.dts | 92 ++++++++++++ os/script_env | 9 ++ 4 files changed, 256 insertions(+), 10 deletions(-) create mode 100644 os/config/uboot_redpitaya_puzzlefw_defconfig create mode 100644 os/devicetree/redpitaya_puzzlefw_uboot.dts diff --git a/os/12_build_uboot.sh b/os/12_build_uboot.sh index 63d4800..a9a46b4 100755 --- a/os/12_build_uboot.sh +++ b/os/12_build_uboot.sh @@ -2,16 +2,14 @@ set -e -BUILDDIR="$(realpath buildroot/output/host/bin)" +. script_env +setup_toolchain -if [ ! -x "$BUILDDIR/arm-linux-gcc" ]; then - echo "ERROR: Missing $BUILDDIR/arm-linux-gcc" >&2 - echo " Build buildroot to prepare the arm-linux toolchain" >&2 - exit 1 -fi +make -C "$UBOOT_DIR" CROSS_COMPILE=arm-linux- distclean -export PATH="$BUILDDIR:$PATH" +cp -a devicetree/redpitaya_puzzlefw_uboot.dts "$UBOOT_DIR/arch/arm/dts/redpitaya.dts" +cp -a config/uboot_redpitaya_puzzlefw_defconfig "$UBOOT_DIR/.config" + +make -C "$UBOOT_DIR" CROSS_COMPILE=arm-linux- olddefconfig +make -C "$UBOOT_DIR" CROSS_COMPILE=arm-linux- -make -C u-boot CROSS_COMPILE=arm-linux- distclean -make -C u-boot CROSS_COMPILE=arm-linux- xilinx_zynq_virt_config -make -C u-boot CROSS_COMPILE=arm-linux- diff --git a/os/config/uboot_redpitaya_puzzlefw_defconfig b/os/config/uboot_redpitaya_puzzlefw_defconfig new file mode 100644 index 0000000..d74db6d --- /dev/null +++ b/os/config/uboot_redpitaya_puzzlefw_defconfig @@ -0,0 +1,147 @@ +CONFIG_ARM=y +CONFIG_SPL_SYS_DCACHE_OFF=y +CONFIG_SYS_L2CACHE_OFF=y +CONFIG_ARCH_ZYNQ=y +CONFIG_TEXT_BASE=0x4000000 +CONFIG_SF_DEFAULT_SPEED=30000000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="redpitaya" +CONFIG_OF_LIBFDT_OVERLAY=y +CONFIG_SPL_STACK_R_ADDR=0x200000 +CONFIG_SPL_STACK=0xfffffe00 +CONFIG_SPL=y +CONFIG_CMD_FRU=y +CONFIG_CMD_ZYNQ_AES=y +CONFIG_SYS_LOAD_ADDR=0x0 +CONFIG_SYS_MEMTEST_START=0x00000000 +CONFIG_SYS_MEMTEST_END=0x00001000 +CONFIG_REMAKE_ELF=y +CONFIG_SYS_CUSTOM_LDSCRIPT=y +CONFIG_SYS_LDSCRIPT="arch/arm/mach-zynq/u-boot.lds" +CONFIG_FIT=y +CONFIG_FIT_SIGNATURE=y +CONFIG_FIT_VERBOSE=y +CONFIG_SPL_FIT_PRINT=y +CONFIG_SPL_LOAD_FIT=y +CONFIG_SPL_LOAD_FIT_ADDRESS=0x10000000 +CONFIG_LEGACY_IMAGE_FORMAT=y +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set +CONFIG_DISTRO_DEFAULTS=y +CONFIG_USE_PREBOOT=y +CONFIG_CLOCKS=y +CONFIG_SPL_MAX_SIZE=0x30000 +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y +CONFIG_SPL_BSS_START_ADDR=0x100000 +CONFIG_SPL_BSS_MAX_SIZE=0x100000 +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_STACK_R=y +CONFIG_SYS_SPL_MALLOC=y +CONFIG_SYS_SPL_MALLOC_SIZE=0x2000000 +CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img" +CONFIG_SPL_FS_LOAD_ARGS_NAME="system.dtb" +CONFIG_SPL_FPGA=y +CONFIG_SPL_OS_BOOT=y +CONFIG_SYS_SPL_ARGS_ADDR=0x10000000 +CONFIG_SPL_SPI_LOAD=y +CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 +CONFIG_SYS_MAXARGS=32 +CONFIG_SYS_PBSIZE=2071 +# CONFIG_BOOTM_NETBSD is not set +CONFIG_SYS_BOOTM_LEN=0x3c00000 +CONFIG_CMD_IMLS=y +CONFIG_CMD_THOR_DOWNLOAD=y +CONFIG_THOR_RESET_OFF=y +CONFIG_CMD_GREPENV=y +CONFIG_CMD_MEMTEST=y +CONFIG_SYS_ALT_MEMTEST=y +CONFIG_CMD_DFU=y +CONFIG_CMD_FPGA_LOADBP=y +CONFIG_CMD_FPGA_LOADFS=y +CONFIG_CMD_FPGA_LOADMK=y +CONFIG_CMD_FPGA_LOADP=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_MTD=y +CONFIG_CMD_NAND_LOCK_UNLOCK=y +CONFIG_CMD_SF_TEST=y +CONFIG_CMD_USB=y +CONFIG_BOOTP_MAY_FAIL=y +CONFIG_CMD_TFTPPUT=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_EFIDEBUG=y +CONFIG_CMD_TIME=y +CONFIG_CMD_TIMER=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_SQUASHFS=y +CONFIG_CMD_MTDPARTS=y +CONFIG_CMD_MTDPARTS_SPREAD=y +CONFIG_CMD_MTDPARTS_SHOW_NET_SIZES=y +CONFIG_CMD_UBI=y +CONFIG_OF_BOARD=y +CONFIG_OF_LIST="zynq-zc702 zynq-zc706 zynq-zc770-xm010 zynq-zc770-xm011 zynq-zc770-xm011-x16 zynq-zc770-xm012 zynq-zc770-xm013 zynq-cc108 zynq-microzed zynq-minized zynq-picozed zynq-zed zynq-zturn zynq-zturn-v5 zynq-zybo zynq-zybo-z7 zynq-dlc20-rev1.0 redpitaya" +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_NETCONSOLE=y +CONFIG_SYS_FAULT_ECHO_LINK_DOWN=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_DFU_TIMEOUT=y +CONFIG_DFU_MMC=y +CONFIG_DFU_RAM=y +CONFIG_DFU_SF=y +CONFIG_SYS_DFU_DATA_BUF_SIZE=0x600000 +CONFIG_FPGA_XILINX=y +CONFIG_FPGA_ZYNQPL=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_CADENCE=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_MISC=y +CONFIG_I2C_EEPROM=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ZYNQ=y +CONFIG_MTD=y +CONFIG_MTD_NOR_FLASH=y +CONFIG_FLASH_SHOW_PROGRESS=10 +CONFIG_CFI_FLASH=y +CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y +CONFIG_SYS_FLASH_CFI=y +CONFIG_SYS_FLASH_QUIET_TEST=y +CONFIG_MTD_RAW_NAND=y +CONFIG_NAND_ZYNQ=y +CONFIG_SYS_NAND_ONFI_DETECTION=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_PHY_MARVELL=y +CONFIG_PHY_MICREL=y +CONFIG_PHY_MICREL_KSZ90X1=y +CONFIG_PHY_REALTEK=y +CONFIG_PHY_XILINX=y +CONFIG_DM_ETH_PHY=y +CONFIG_MII=y +CONFIG_ZYNQ_GEM=y +CONFIG_ARM_DCC=y +CONFIG_ZYNQ_SERIAL=y +CONFIG_ZYNQ_SPI=y +CONFIG_ZYNQ_QSPI=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="Xilinx" +CONFIG_USB_GADGET_VENDOR_NUM=0x03fd +CONFIG_USB_GADGET_PRODUCT_NUM=0x0300 +CONFIG_CI_UDC=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_FUNCTION_THOR=y +CONFIG_SYS_TIMER_COUNTS_DOWN=y +CONFIG_SPL_GZIP=y +CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y +CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y +CONFIG_TOOLS_MKEFICAPSULE=y diff --git a/os/devicetree/redpitaya_puzzlefw_uboot.dts b/os/devicetree/redpitaya_puzzlefw_uboot.dts new file mode 100644 index 0000000..bd7b6b6 --- /dev/null +++ b/os/devicetree/redpitaya_puzzlefw_uboot.dts @@ -0,0 +1,92 @@ + +/dts-v1/; + +#include "zynq-7000.dtsi" + +/ { + model = "RedPitaya PuzzleFW"; + compatible = "xlnx,zynq-7000"; + + aliases { + ethernet0 = &gem0; + i2c0 = &i2c0; + serial0 = &uart0; + mmc0 = &sdhci0; + nvmem0 = &eeprom; + }; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; + + chosen { + bootargs = ""; + stdout-path = "serial0:115200n8"; + }; + +}; + +&clkc { + ps-clk-frequency = <33333333>; +}; + +&gem0 { + status = "okay"; + xlnx,ptp-enet-clock = <0x69f6bcb>; + phy-mode = "rgmii-id"; + phy-handle = <ðernet_phy>; + + ethernet_phy: ethernet-phy@1 { + reg = <1>; + device_type = "ethernet-phy"; + }; +}; + +&gpio0 { + emio-gpio-width = <24>; + gpio-mask-high = <0x0>; + gpio-mask-low = <0x5600>; +}; + +&i2c0 { + status = "okay"; + clock-frequency = <400000>; + + eeprom: eeprom@50 { + compatible = "24c64"; + reg = <0x50>; + pagesize = <32>; + }; +}; + +&qspi { + bootph-all; + status = "okay"; + num-cs = <1>; + flash@0 { + compatible = "n25q128a11", "jedec,spi-nor"; + reg = <0x0>; + spi-tx-bus-width = <1>; + spi-rx-bus-width = <4>; + spi-max-frequency = <50000000>; + }; +}; + +&sdhci0 { + bootph-all; + status = "okay"; +}; + +&uart0 { + status = "okay"; + device_type = "serial"; + cts-override; +}; + +&uart1 { + status = "okay"; + device_type = "serial"; + cts-override; +}; + diff --git a/os/script_env b/os/script_env index e1a530b..61bd05c 100644 --- a/os/script_env +++ b/os/script_env @@ -16,3 +16,12 @@ LINUX_DIR="$LINUX_VERSION" BOOTIMG_DIR="boot_img" SDCARD_DIR="sdcard_files" + +setup_toolchain () { + if [ ! -x "$TOOLCHAIN_DIR/arm-linux-gcc" ]; then + echo "ERROR: Missing $TOOLCHAIN_DIR/arm-linux-gcc" >&2 + echo " Build buildroot to prepare the arm-linux toolchain" >&2 + exit 1 + fi + export PATH="$TOOLCHAIN_DIR:$PATH" +}