Files
skills-win/petalinux-qspi/references/emv9.3.md
T
2026-10-20 10:05:16 -05:00

6.0 KiB

emv9.3 board reference (EMV9.3 Zynq XC7Z100 exciter)

Created 2026-09-26 from the EMV9.3 schematic text (DVBT2_zynq/Notes/auto/emv93_sch.txt, line numbers below), the Vivado block design (DVBT2_zynq/src/bd/design_1_bd.tcl), the 2026-09-26 cold-boot console captures (Notes/auto/emv93_uboot_baseline_20260926.log and the old-image Linux boot log SMOD_DVBT2/ci_bram_tp13_wt/Notes/auto/emv93_boot_20260926/COM6.log), and machine memory M-0025..M-0028. Items marked UNVERIFIED must not be relied on for a destructive step. Machine-local values (COM ports, IPs, credentials) live in bmem / ~\skills_env.md.

Identity

Item Value Evidence
Board EMV9.3 (schematic EMV9.3_20231103.PDF), DVB-T2 exciter variant (prjID emv93-dvbt2) ref/, README
SoC XC7Z100FFG900-2, Silicon v3.1, JTAG idcode 03736093 (+ arm_dap 4ba00477) sch 7021, U-Boot banner, M-0028
Hardware handoff Vivado 2018.1 bitstream/emv93_t2_top.hdf (+ .bit, .bin) project
PetaLinux 2018.1 (VM /opt/pkg/petalinux/2018.1); board's previous image: PetaLinux 2018.1, kernel 4.14.0-xilinx-v2018.1, U-Boot 2018.01 boot logs
DRAM 1 GiB DDR3 (2 x MT41K256M16), 32-bit, ECC off, 533 MHz; bdinfo DRAM 0x0..0x3FFFFFFF U-Boot bdinfo, BD

Boot mode and QSPI

Item Value Evidence
Boot mode (current) QSPI: md.b 0xF800025C = 01 (BOOT_MODE[2:0]=001 = Quad-SPI, PLL enabled); U-Boot modeboot=qspiboot baseline log
Straps MIO2 R40 / MIO3 R41 20K to GND (sch 6973-6986); MIO4 R42/R43, MIO5 R23/R44 (6987-6999) also routed to switch SW1 (7059-7066); MIO6 R47 (7011-7020) sch; physical switch position UNVERIFIED (only the register readback is proven)
QSPI parts 2 x ISSI IS25WP256D (U4 sch 7144, U12 ~7161-7180, "QSPI 256M Bit X2" ~7150), 1.8 V sch
Topology dual parallel x8 (QSPI0 MIO 1..6, QSPI1 MIO 0,9..13): BD PCW_QSPI_GRP_IO1_ENABLE 1, PCW_DUAL_PARALLEL_QSPI_DATA_MODE x8; U-Boot SF: Detected is25wp256d with page size 512 Bytes, erase size 128 KiB, total 64 MiB; old Linux is25wp256d (65536 Kbytes); u-boot CONFIG_SF_DUAL_FLASH=y BD, baseline log
Geometry as seen by software total 64 MiB, page 512 B, erase 128 KiB (dual-parallel view) U-Boot
Layout (kept from ATSC3 image) boot 0x000000/0x500000 (BOOT.BIN), bootenv 0x500000/0x20000, kernel 0x520000/0x1800000 (image.ub), spare 0x1D20000/0x2E0000; total used 32 MiB, upper 32 MiB unused ATSC3 configs/config, U-Boot env
Env in QSPI at 0x500000, size 0x20000; the old image never saved it (*** Warning - bad CRC, using default environment) baseline log
RAM load netstart=loadaddr=clobstart=0x10000000, dtbnetstart=0x11800000; image.ub.qspi (<= 24 MiB) fits below 0x11800000+; CONFIG_SYS_BOOTM_LEN 0xF000000 env, platform-top.h
BOOT.BIN FSBL + U-Boot only (5 MiB partition; PL bit is 17.4 MB and is loaded by Linux through the FPGA manager) size arithmetic, ATSC3 precedent
Flash programmer Xilinx SDK 2018.1 program_flash (JTAG, Platform Cable USB II 00001d9a325a01, -flash_type qspi-x8-dual_parallel) — vendor tool, present at C:\Xilinx\SDK\2018.1\bin\program_flash; not yet exercised on this board M-0028
Recovery (a) JTAG: program_flash re-write of BOOT.BIN, or xsdb boot of FSBL+U-Boot from JTAG then sf commands; (b) old eMMC still holds the ATSC3 image.ub (FAT p1) + rootfs (ext4 p2) and U-Boot's default env boots it; (c) SD0 slot if the switch is moved to SD mode (UNVERIFIED) baseline log

Console, power, JTAG (machine bowei-us, 2026-09-26)

  • Console: PS UART1 (MIO 32/33) = ttyPS0 115200 = host COM6; i.MX6ULL console COM4.
  • Power: Modbus relay on COM3 (vivado-mcp power_on/power_off); USB-Blaster switch COM5. Rule: USB_Blast_off before any power change; keep >= 12 s off for a cold boot.
  • JTAG: Platform Cable USB II, needs tens of seconds of "loading firmware" after power-on.

Networking

Port Controller PHY MAC / IP plan
eth1 (silkscreen), Linux eth0 PS GEM0, MIO 16..27 RGMII-ID, MDIO MIO 52/53 YT8521 addr 0 ("ethernet-phy-id0000.011a", generic PHY driver) 00:0a:35:00:1e:53, static 192.168.1.200/24 (TS input)
eth2 (PL PHY), Linux eth1 PS GEM1 via EMIO GMII -> PL pins RTL8211EG U900 addr 3 ("ethernet-phy-id001c.c915") 00:0a:35:00:1e:54, static 192.168.2.200/24 (TP IQ source)
i.MX6ULL ports FEC (KSZ8081) — not part of the Zynq system

Host PC "Ethernet 2" carries 192.168.1.225 and 192.168.2.225 (re-check live each session). The VM is on a NAT network and cannot serve TFTP to the board; run the TFTP server on the Windows host.

Storage

Item Value Evidence
eMMC Samsung KLM8G1GETF-B041 on PS SD1 (MIO 46..51, 4-bit), no CD/WP; U-Boot mmc dev 1: MMC 5.1, "8GTF4", 7.3 GiB user, 4 MiB boot, 512 KiB RPMB sch 6852-6972, 7085-7129; baseline log
Current eMMC content DOS table: p1 sectors 16..250047 FAT (type 0b) with image.ub 3,828,924 B; p2 sectors 250048.. (15,019,840 sectors, type 83) ext4 root of the old ATSC3 image baseline log
Linux names old kernel: eMMC = /dev/mmcblk1; SD0 slot = mmc0 — re-verify on the stock 2018.1 kernel (system-user.dtsi marks e0101000 non-removable) old boot log
SD0 slot MIO 40..45, CD not routed (PCW_SD0_GRP_CD_ENABLE 0); empty slot gives U-Boot "Card did not respond to voltage select! ... probe failed: -95" (non-fatal) BD, baseline log

Hazards / stop conditions

  • Never program QSPI while the boot mode/recovery route is unproven: prove program_flash (or xsdb JTAG boot) once with a read-only operation (-blank_check is destructive-free? no — use xsdb connect + targets only) before the first erase, and keep the ATSC3 BOOT.BIN regenerable from emv9_atsc3_fpga/petalinux/project-spec-260926/hw-description.
  • The old eMMC image is the user's fallback until the new production system is accepted; do not repartition it in the QSPI-transition phase.
  • Two i.MX6ULL consoles/ports and a 4G modem share the board; they are outside this flow.