4.3 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. Use hjx9009-profile.json, rather than this explanatory document, as the cache fingerprint's --board-profile input so editorial changes do not force a rebuild.
Boot and QSPI
- SoC: XC7Z100FF900.
- Boot device straps are
MIO[5:4:3];100is 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=0selects 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 livesf proberesult as mandatory before erase. - A TF card does not alter the QSPI boot selection. The transition U-Boot bootcmd must contain only
sf probe, QSPIsf read, documented board fixups, andbootm; no implicitmmcfallback.
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.