Files
skills-win/petalinux-qspi/references/hjx9009.md
T

4.1 KiB

HJX9009 validated board profile

This profile comes from the HJX-ADRV9009-X2 schematic and a PetaLinux 2018.1 hardware run. Reconfirm the PCB revision and live probes for every target; schematic constants do not replace target identity.

Boot and QSPI

  • SoC: XC7Z100FF900.
  • Boot device straps are MIO[5:4:3]; 100 is QSPI and is the schematic default. The schematic implements resistor straps, not a user boot DIP. Boot mode is sampled at power-on reset.
  • MIO2=0 selects cascaded dual-QSPI mode by default.
  • U5 and U6 are S25FL128S-family serial flashes. Validated U-Boot probe: s25fl128s_64k, 32 MiB total, 128 KiB erase, 512-byte reported page. Treat the live sf probe result as mandatory before erase.
  • A TF card does not alter the QSPI boot selection. The transition U-Boot bootcmd must contain only sf probe, QSPI sf read, documented board fixups, and bootm; no implicit mmc fallback.

Validated transition layout:

Region Offset Size
boot 0x00000000 0x00500000
bootenv 0x00500000 0x00020000
kernel 0x00520000 0x01800000
spare 0x01D20000 0x002E0000

The transition BOOT.BIN contains FSBL and U-Boot only. It deliberately excludes the PL bitstream and image.ub. The kernel region stores a FIT image.ub.qspi containing kernel, DTB and initramfs rootfs. Calculate the actual image read and erase lengths for each build; never copy an old length.

J1 microSD/TF interface

HJX9009 has no soldered eMMC. J1 is removable microSD through U12 MAX13035E:

  • SD0 CLK/CMD/DAT0..3: MIO40..45;
  • card detect SDIO_SDDET: MIO13;
  • card side is 3.3 V and PS side is 1.8 V;
  • no UHS 1.8 V card-side switching and no write-protect signal;
  • MIO46..53 are occupied by Ethernet/UART/MDIO functions, so SD1 must remain disabled.

Required SD device-tree intent:

&sdhci0 {
    status = "okay";
    u-boot,dm-pre-reloc;
    bus-width = <4>;
    max-frequency = <50000000>;
    xlnx,has-cd = <1>;
    xlnx,has-power = <0>;
    xlnx,has-wp = <0>;
    no-1-8-v;
    disable-wp;
};

&sdhci1 {
    status = "disabled";
};

Do not add non-removable. On the validated Linux 4.14 native SDHCI path, card presence is read directly from the SDHCI Present State register; cd-inverted does not correct native detection and must not be used as a substitute for the proper CD selector.

SD0 card-detect selector

The validated HDF enabled SD0 on MIO40..45 but left PCW_SD0_GRP_CD_ENABLE=0, so generated FSBL selected EMIO 56 instead of schematic MIO13. Inspect the new HDF and generated ps7_init.c every time:

  • if generation selects MIO13 correctly, do not apply a workaround;
  • otherwise prefer correcting the Vivado PS7 configuration/HDF and rebuilding FSBL;
  • the validated transition-only fallback, applied immediately before bootm, is:
sd0_cd_fix=mw.l 0xF8000008 0x0000DF0D; mw.l 0xF8000830 0x000D0037; mw.l 0xF8000004 0x0000767B

Verify 0xF8000830=0x000D0037 in Linux. With no card inserted, the validated SDHCI Present State at 0xE0100024 was 0x01FA0000 (Card Present bit clear). Absence of /dev/mmcblk0 is expected only when the operator confirms no card is inserted.

Network and boot details

  • GEM0 uses an Atheros 8031 PHY at MDIO address 0 with rgmii-id.
  • Discover MAC and IP values from the target/project; do not reuse a prior board address.
  • The prior validated build needed a documented PHY register fix before networking. Re-evaluate it against the supplied HDF/U-Boot rather than applying it blindly.
  • The initramfs may need CONFIG_SYS_BOOTM_LEN=0x0F000000; confirm against the generated FIT and available DDR.

Acceptance markers

Cold-boot evidence must show, in order: U-Boot banner, SF: Detected s25fl128s_64k, exact device 0 offset 0x520000, size <current-size>, FIT loading, and the transition Linux login. In Linux require rootfs type rootfs, the four expected MTD regions, mmc0 on e0100000.sdhci, live network/TFTP, and storage tools.

If no TF card is present, finish at WAITING_FOR_MEDIA and power off. After insertion, prove QSPI boot again, then identify /dev/mmcblk0 and do read-only media checks before any partition or format operation.