| .. SPDX-License-Identifier: GPL-2.0+ |
| |
| LS1046ARDB |
| ========== |
| |
| The LS1046A Reference Design Board (RDB) is a high-performance computing, |
| evaluation, and development platform that supports the QorIQ LS1046A |
| LayerScape Architecture processor. The LS1046ARDB provides SW development |
| platform for the Freescale LS1046A processor series, with a complete |
| debugging environment. The LS1046A RDB is lead-free and RoHS-compliant. |
| |
| LS1046A SoC Overview |
| -------------------- |
| Please refer arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc for LS1046A |
| SoC overview. |
| |
| LS1046ARDB board Overview |
| ------------------------- |
| - SERDES1 Connections, 4 lanes supporting: |
| |
| - Lane0: 10GBase-R with x1 RJ45 connector |
| - Lane1: 10GBase-R Cage |
| - Lane2: SGMII.5 |
| - Lane3: SGMII.6 |
| |
| - SERDES2 Connections, 4 lanes supporting: |
| |
| - Lane0: PCIe1 with miniPCIe slot |
| - Lane1: PCIe2 with PCIe x2 slot |
| - Lane2: PCIe3 with PCIe x4 slot |
| - Lane3: SATA |
| |
| - DDR Controller |
| |
| - 8GB 64bits DDR4 SDRAM. Support rates of up to 2133MT/s |
| |
| - IFC/Local Bus |
| |
| - One 512 MB NAND flash with ECC support |
| - CPLD connection |
| |
| - USB 3.0 |
| |
| - one Type A port, one Micro-AB port |
| |
| - SDHC: connects directly to a full SD/MMC slot |
| - DSPI: 64 MB high-speed flash Memory for boot code and storage (up to 108MHz) |
| - 4 I2C controllers |
| - UART |
| |
| - Two 4-pin serial ports at up to 115.2 Kbit/s |
| - Two DB9 D-Type connectors supporting one Serial port each |
| |
| - ARM JTAG support |
| |
| Memory map from core's view |
| --------------------------- |
| |
| ================== ================== ================ ===== |
| Start Address End Address Description Size |
| ================== ================== ================ ===== |
| ``0x00_0000_0000`` ``0x00_000F_FFFF`` Secure Boot ROM 1M |
| ``0x00_0100_0000`` ``0x00_0FFF_FFFF`` CCSRBAR 240M |
| ``0x00_1000_0000`` ``0x00_1000_FFFF`` OCRAM0 64K |
| ``0x00_1001_0000`` ``0x00_1001_FFFF`` OCRAM1 64K |
| ``0x00_2000_0000`` ``0x00_20FF_FFFF`` DCSR 16M |
| ``0x00_7E80_0000`` ``0x00_7E80_FFFF`` IFC - NAND Flash 64K |
| ``0x00_7FB0_0000`` ``0x00_7FB0_0FFF`` IFC - CPLD 4K |
| ``0x00_8000_0000`` ``0x00_FFFF_FFFF`` DRAM1 2G |
| ``0x05_0000_0000`` ``0x05_07FF_FFFF`` QMAN S/W Portal 128M |
| ``0x05_0800_0000`` ``0x05_0FFF_FFFF`` BMAN S/W Portal 128M |
| ``0x08_8000_0000`` ``0x09_FFFF_FFFF`` DRAM2 6G |
| ``0x40_0000_0000`` ``0x47_FFFF_FFFF`` PCI Express1 32G |
| ``0x48_0000_0000`` ``0x4F_FFFF_FFFF`` PCI Express2 32G |
| ``0x50_0000_0000`` ``0x57_FFFF_FFFF`` PCI Express3 32G |
| ================== ================== ================ ===== |
| |
| QSPI flash map |
| -------------- |
| |
| ================== ================== ================== ===== |
| Start Address End Address Description Size |
| ================== ================== ================== ===== |
| ``0x00_4000_0000`` ``0x00_400F_FFFF`` RCW + PBI 1M |
| ``0x00_4010_0000`` ``0x00_402F_FFFF`` U-Boot 2M |
| ``0x00_4030_0000`` ``0x00_403F_FFFF`` U-Boot Env 1M |
| ``0x00_4040_0000`` ``0x00_405F_FFFF`` PPA 2M |
| ``0x00_4060_0000`` ``0x00_408F_FFFF`` Secure boot header 3M |
| + bootscript |
| ``0x00_4090_0000`` ``0x00_4093_FFFF`` FMan ucode 256K |
| ``0x00_4094_0000`` ``0x00_4097_FFFF`` QE/uQE firmware 256K |
| ``0x00_4098_0000`` ``0x00_40FF_FFFF`` Reserved 6M |
| ``0x00_4100_0000`` ``0x00_43FF_FFFF`` FIT Image 48M |
| ================== ================== ================== ===== |
| |
| Booting Options |
| --------------- |
| |
| NB: The reference manual documents the RCW source with the *least-significant |
| bit first*. |
| |
| QSPI boot |
| ^^^^^^^^^ |
| |
| This is the default. ``{ SW5[0:8], SW4[0] }`` should be ``0010_0010_0``. |
| |
| SD boot and eMMC boot |
| ^^^^^^^^^^^^^^^^^^^^^ |
| |
| ``{ SW5[0:8], SW4[0] }`` should be ``0010_0000_0``. eMMC is selected only if |
| there is no SD card in the slot. |
| |
| .. _ls1046ardb_jtag: |
| |
| JTAG boot |
| ^^^^^^^^^ |
| |
| To recover a bricked board, or to perform initial programming, the ls1046 |
| supports using two hard-coded Reset Configuration Words (RCWs). Unfortunately, |
| this configuration disables most functionality, including the uarts and ethernet. |
| However, the SD/MMC and flash controllers are still functional. To get around |
| the lack of a serial console, we will use ARM semihosting instead. When |
| enabled, OpenOCD will interpret certain instructions as calls to the host |
| operating system. This allows U-Boot to use the console, read/write files, or |
| run arbitrary commands (!). |
| |
| When configuring U-Boot, ensure that ``CONFIG_SEMIHOSTING``, |
| ``CONFIG_SPL_SEMIHOSTING``, and ``CONFIG_SEMIHOSTING_SERIAL`` are enabled. |
| ``{ SW5[0:8], SW4[0] }`` should be ``0100_1111_0``. Additionally, ``SW4[7]`` |
| should be set to ``0``. Connect to the "console" USB connector on the front of |
| the enclosure. |
| |
| Create a new file called ``u-boot.tcl`` (or whatever you choose) with the |
| following contents:: |
| |
| # Load the configuration for the LS1046ARDB |
| source [find board/nxp_rdb-ls1046a.cfg] |
| # Initialize the scan chain |
| init |
| # Stop the processor |
| halt |
| # Enable semihosting |
| arm semihosting enable |
| # Load U-Boot SPL |
| load_image spl/u-boot-spl 0 elf |
| # Start executing SPL at the beginning of OCRAM |
| resume 0x10000000 |
| |
| Then, launch openocd like:: |
| |
| openocd -f u-boot.tcl |
| |
| You should see the U-Boot SPL banner followed by the banner for U-Boot proper |
| in the output of openocd. The CMSIS-DAP adapter is slow, so this can take a |
| long time. If you don't see it, something has gone wrong. After a while, you |
| should see the prompt. You can load an image using semihosting by running:: |
| |
| => load hostfs - $loadaddr <name of file> |
| |
| Note that openocd's terminal is "cooked," so commands will only be sent to |
| U-Boot when you press enter, and all commands will be echoed twice. |
| Additionally, openocd will block when waiting for input, ignoring gdb, JTAG |
| events, and Ctrl-Cs. To make openocd process these events, just hit enter. |
| |
| Using an external JTAG adapter |
| """""""""""""""""""""""""""""" |
| |
| The CMSIS-DAP adapter can be rather slow. To speed up booting, use an external |
| JTAG adapter. The following examples assume you are using a J-Link, though any |
| adapter supported by OpenOCD will do. Ensure that ``SW4[7]`` is ``1``. Attach |
| your jtag adapter to J22. Modify ``u-boot.tcl`` and replace the first two lines |
| with the following:: |
| |
| # Load the J-Link configuration (or whatever your adapter is) |
| source [find interface/jlink.cfg] |
| # Use JTAG, since the J-Link also supports SWD |
| transport select jtag |
| # The reset pin resets the whole CPU |
| reset_config srst_only |
| # Load the LS1046A config |
| source [find target/ls1046a.cfg] |
| |
| You can proceed as normal through the rest of the steps above. I got a speedup |
| of around 100x by using a J-Link. |
| |
| Debug UART |
| ---------- |
| |
| To enable the debug UART, enable the following config options:: |
| |
| CONFIG_DEBUG_UART_NS16550=y |
| CONFIG_DEBUG_UART_BASE=0x21c0500 |
| CONFIG_DEBUG_UART_CLOCK=300000000 |