83 lines
4.3 KiB
Markdown
83 lines
4.3 KiB
Markdown
# 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](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]`; `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:
|
|
|
|
```dts
|
|
&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:
|
|
|
|
```text
|
|
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.
|
|
|