minos/zynq
Шурупов Илья Викторович d97f0c0757 Add Zynq-7000 PS boot over JTAG (OpenOCD, no FSBL/bitstream)
Boot minos on the real Zynq-7020 PS (Cortex-A9) without Vivado, an FSBL,
a bitstream, or DDR init — loaded straight into on-chip RAM over JTAG.

- link-zynq-ocm.ld: link the ARM build into OCM (0x0, 192 KiB), which is
  alive from reset, so no FSBL/ps7_init and no DDR are needed.
- zynq/openocd-zynq.cfg: OpenOCD config for the on-board FT2232H. Its
  EEPROM reports a generic 0403:6010 ("Adapt Device"), which Xilinx
  hw_server refuses to auto-detect but OpenOCD drives directly; it sees
  the full chain (PL boundary-scan 0x23727093 + ARM DAP 0x4ba00477).
- Makefile: 'zynq' builds the OCM ELF; 'run-zynq' halts A9 core0, loads
  the image, and resumes.

The one non-obvious step: the on-board boot firmware leaves the core with
MMU + D-cache + I-cache enabled, which shadow the freshly loaded OCM and
make a plain resume run nothing. run-zynq clears SCTLR to 0x08C54C78 and
forces SVC mode before resuming. Halting (not resetting) keeps the
firmware's PS clock setup so the UART stays live.

Verified on hardware: banner once, then live keystroke echo over the
UART console (ttyUSB1 @115200). Same shared C core now boots on real
RISC-V (D1) and real ARM (Zynq) silicon, plus QEMU x86/riscv/arm.
2026-09-26 15:12:22 +03:00
..
openocd-zynq.cfg Add Zynq-7000 PS boot over JTAG (OpenOCD, no FSBL/bitstream) 2026-09-26 15:12:22 +03:00