summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorUdit Kumar <u-kumar1@ti.com>2023-06-15 11:55:16 +0530
committerUdit Kumar <u-kumar1@ti.com>2023-06-15 12:38:21 +0530
commit23842a562c6ebff988057863e42b4a4bf0de6e96 (patch)
treea8fd2054cfb2226f8c64c38a9de56d9f939f8cb2 /doc
parenta96a0cb4bac5681294e44b3b97592c78e6969671 (diff)
doc: board: ti: add documenation for j7200
This patch adds documentation for j7200 SOC Acked-by: Nitin Yadav <n-yadav@ti.com> Signed-off-by: Udit Kumar <u-kumar1@ti.com> Reviewed-by: Judith Mendez <jm@ti.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/board/ti/j7200_evm.rst378
-rw-r--r--doc/board/ti/k3.rst1
2 files changed, 379 insertions, 0 deletions
diff --git a/doc/board/ti/j7200_evm.rst b/doc/board/ti/j7200_evm.rst
new file mode 100644
index 0000000000..ac70896c4b
--- /dev/null
+++ b/doc/board/ti/j7200_evm.rst
@@ -0,0 +1,378 @@
+.. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
+.. sectionauthor:: Udit Kumar <u-kumar1@ti.com>
+
+J7200 Platforms
+===============
+
+Introduction:
+-------------
+The J7200 family of SoCs are part of K3 Multicore SoC architecture platform
+targeting automotive applications. They are designed as a low power, high
+performance and highly integrated device architecture, adding significant
+enhancement on processing power, graphics capability, video and imaging
+processing, virtualization and coherent memory support.
+
+The device is partitioned into three functional domains, each containing
+specific processing cores and peripherals:
+
+1. Wake-up (WKUP) domain:
+ * Device Management and Security Controller (DMSC)
+
+2. Microcontroller (MCU) domain:
+ * Dual Core ARM Cortex-R5F processor
+
+3. MAIN domain:
+ * Dual core 64-bit ARM Cortex-A72
+
+More info can be found in TRM: https://www.ti.com/lit/pdf/spruiu1
+
+Boot Flow:
+----------
+Below is the pictorial representation of boot flow:
+
+.. code-block:: text
+
+ +------------------------------------------------------------------------+-----------------------+
+ | DMSC | MCU R5 | A72 | MAIN R5/C7x |
+ +------------------------------------------------------------------------+-----------------------+
+ | +--------+ | | | |
+ | | Reset | | | | |
+ | +--------+ | | | |
+ | : | | | |
+ | +--------+ | +-----------+ | | |
+ | | *ROM* |----------|-->| Reset rls | | | |
+ | +--------+ | +-----------+ | | |
+ | | | | : | | |
+ | | ROM | | : | | |
+ | |services| | : | | |
+ | | | | +-------------+ | | |
+ | | | | | *R5 ROM* | | | |
+ | | | | +-------------+ | | |
+ | | |<---------|---|Load and auth| | | |
+ | | | | | tiboot3.bin | | | |
+ | | Start | | +-------------+ | | |
+ | | TIFS |<---------|---| Start | | | |
+ | | | | | TIFS | | | |
+ | +--------+ | +-------------+ | | |
+ | : | | | | | |
+ | +---------+ | | Load | | | |
+ | | *TIFS* | | | system | | | |
+ | +---------+ | | Config data | | | |
+ | | |<--------|---| | | | |
+ | | | | +-------------+ | | |
+ | | | | : | | |
+ | | | | : | | |
+ | | | | : | | |
+ | | | | +-------------+ | | |
+ | | | | | *R5 SPL* | | | |
+ | | | | +-------------+ | | |
+ | | | | | DDR | | | |
+ | | | | | config | | | |
+ | | | | +-------------+ | | |
+ | | | | | Load | | | |
+ | | | | | tispl.bin | | | |
+ | | | | +-------------+ | | |
+ | | | | | Load R5 | | | |
+ | | | | | firmware | | | |
+ | | | | +-------------+ | | |
+ | | |<--------|---| Start A72 | | | |
+ | | | | | and jump to | | | |
+ | | | | | DM fw image | | | |
+ | | | | +-------------+ | | |
+ | | | | | +-----------+ | |
+ | | |---------|-----------------------|---->| Reset rls | | |
+ | | | | | +-----------+ | |
+ | | TIFS | | | : | |
+ | |Services | | | +-----------+ | |
+ | | |<--------|-----------------------|---->|*ATF/OPTEE*| | |
+ | | | | | +-----------+ | |
+ | | | | | : | |
+ | | | | | +-----------+ | |
+ | | |<--------|-----------------------|---->| *A72 SPL* | | |
+ | | | | | +-----------+ | |
+ | | | | | | Load | | |
+ | | | | | | u-boot.img| | |
+ | | | | | +-----------+ | |
+ | | | | | : | |
+ | | | | | +-----------+ | |
+ | | |<--------|-----------------------|---->| *U-Boot* | | |
+ | | | | | +-----------+ | |
+ | | | | | | prompt | | |
+ | | | | | +-----------+ | |
+ | | | | | | Load R5 | | |
+ | | | | | | Firmware | | |
+ | | | | | +-----------+ | |
+ | | |<--------|-----------------------|-----| Start R5 | | +-----------+ |
+ | | |---------|-----------------------|-----+-----------+-----|----->| R5 starts | |
+ | | | | | | Load C7 | | +-----------+ |
+ | | | | | | Firmware | | |
+ | | | | | +-----------+ | |
+ | | |<--------|-----------------------|-----| Start C7 | | +-----------+ |
+ | | |---------|-----------------------|-----+-----------+-----|----->| C7 starts | |
+ | | | | | | +-----------+ |
+ | | | | | | |
+ | +---------+ | | | |
+ | | | | |
+ +------------------------------------------------------------------------+-----------------------+
+
+- Here DMSC acts as master and provides all the critical services. R5/A72
+ requests DMSC to get these services done as shown in the above diagram.
+
+Sources:
+--------
+1. ATF:
+ Tree: https://github.com/ARM-software/arm-trusted-firmware.git
+ Branch: master
+
+2. OPTEE:
+ Tree: https://github.com/OP-TEE/optee_os.git
+ Branch: master
+
+3. Firmware:
+ Tree: git://git.ti.com/processor-firmware/ti-linux-firmware.git
+ Branch: ti-linux-firmware
+
+4. U-Boot:
+ Tree: https://source.denx.de/u-boot/u-boot
+ Branch: master
+
+Build procedure:
+----------------
+1. ATF:
+
+.. code-block:: bash
+
+ make CROSS_COMPILE=aarch64-linux-gnu- ARCH=aarch64 PLAT=k3 TARGET_BOARD=generic SPD=opteed
+
+2. OPTEE:
+
+.. code-block:: bash
+
+ make PLATFORM=k3-j7200 CFG_ARM64_core=y
+
+3. U-Boot:
+
+* 4.1 R5:
+
+.. code-block:: bash
+
+ make CROSS_COMPILE=arm-linux-gnueabihf- j7200_evm_r5_defconfig O=build/r5
+ make CROSS_COMPILE=arm-linux-gnueabihf- O=build/r5 BINMAN_INDIRS=<Path of Firmware>
+ <Path of Firmware> : Refer Source 3.Firmware
+
+* 4.2 A72:
+
+.. code-block:: bash
+
+ make CROSS_COMPILE=aarch64-linux-gnu- j7200_evm_a72_defconfig O=build/a72
+ make CROSS_COMPILE=aarch64-linux-gnu- ATF=<ATF dir>/build/k3/generic/release/bl31.bin TEE=<OPTEE OS dir>/out/arm-plat-k3/core/tee-pager_v2.bin BINMAN_IND IRS=<Path of Firmware> O=build/a72
+
+Target Images
+--------------
+Copy the below images to an SD card and boot:
+ - tiboot3.bin from step 1
+ - tispl.bin, u-boot.img from 4.2
+
+Image formats:
+--------------
+
+- tiboot3.bin:
+
+.. code-block:: console
+
+ +-----------------------+
+ | X.509 |
+ | Certificate |
+ | +-------------------+ |
+ | | | |
+ | | R5 | |
+ | | u-boot-spl.bin | |
+ | | | |
+ | +-------------------+ |
+ | | | |
+ | | FIT header | |
+ | | +---------------+ | |
+ | | | | | |
+ | | | DTB 1...N | | |
+ | | +---------------+ | |
+ | +-------------------+ |
+ | | | |
+ | | FIT HEADER | |
+ | | +---------------+ | |
+ | | | | | |
+ | | | sysfw.bin | | |
+ | | +---------------+ | |
+ | | | | | |
+ | | | board config | | |
+ | | +---------------+ | |
+ | | | | | |
+ | | | PM config | | |
+ | | +---------------+ | |
+ | | | | | |
+ | | | RM config | | |
+ | | +---------------+ | |
+ | | | | | |
+ | | | Secure config | | |
+ | | +---------------+ | |
+ | +-------------------+ |
+ +-----------------------+
+
+- tispl.bin
+
+.. code-block:: console
+
+ +-----------------------+
+ | |
+ | FIT HEADER |
+ | +-------------------+ |
+ | | | |
+ | | A72 ATF | |
+ | +-------------------+ |
+ | | | |
+ | | A72 OPTEE | |
+ | +-------------------+ |
+ | | | |
+ | | R5 DM FW | |
+ | +-------------------+ |
+ | | | |
+ | | A72 SPL | |
+ | +-------------------+ |
+ | | | |
+ | | SPL DTB 1...N | |
+ | +-------------------+ |
+ +-----------------------+
+
+
+Switch Setting for Boot Mode
+----------------------------
+
+Boot Mode pins provide means to select the boot mode and options before the
+device is powered up. After every POR, they are the main source to populate
+the Boot Parameter Tables.
+
+The following table shows some common boot modes used on J7200 platform. More
+details can be found in the Technical Reference Manual:
+https://www.ti.com/lit/pdf/spruiu1 under the `Boot Mode Pins` section.
+
+
+*Boot Modes*
+
+============ ============= =============
+Switch Label SW9: 12345678 SW8: 12345678
+============ ============= =============
+SD 00000000 10000010
+EMMC 01000000 10000000
+EMMC UDA FA 00000000 10000000
+OSPI 01000000 00000110
+UART 01110000 00000000
+USB DFU 00100000 10000000
+============ ============= =============
+
+For SW8 and SW9, the switch state in the "ON" position = 1.
+
+eMMC:
+-----
+ROM supports booting from eMMC raw read and UDA FS mode.
+
+Below is memory layout in case of booting from
+boot 0/1 partition in raw mode.
+
+Current allocated size for tiboot3 size is 1MB, tispl is 2MB.
+
+Size of u-boot.img is taken 4MB for refernece,
+But this is subject to change depending upon atf, optee size
+
+.. code-block:: console
+
+ boot0/1 partition (8 MB) user partition
+ 0x0+----------------------------------+ 0x0+------------------------+
+ | tiboot3.bin (1 MB) | | |
+ 0x800+----------------------------------+ | |
+ | tispl.bin (2 MB) | | |
+ 0x1800+----------------------------------+ | |
+ | u-boot.img (4MB) | | |
+ 0x3800+----------------------------------+ | |
+ | | | |
+ 0x3900+ environment | | |
+ | | | |
+ 0x3A00+----------------------------------+ +-------------------------+
+
+In case of UDA FS mode booting, following is layout.
+
+All boot images tiboot3.bin, tispl and u-boot should be written to
+fat formatted UDA FS as file.
+
+.. code-block:: console
+
+ boot0/1 partition (8 MB) user partition
+ 0x0+---------------------------------+ 0x0+-------------------------+
+ | | | tiboot3.bin* |
+ 0x800+----------------------------------+ | |
+ | | | tispl.bin |
+ 0x1800+----------------------------------+ | |
+ | | | u-boot.img |
+ 0x3800+----------------------------------+ | |
+ | | | |
+ 0x3900+ | | environment |
+ | | | |
+ 0x3A00+----------------------------------+ +-------------------------+
+
+
+
+In case of booting from eMMC, write above images into raw or UDA FS.
+and set mmc partconf accordingly.
+
+Below steps could be used to write images and boot from eMMC
+
+1. Case of raw write to boot0 or boot1 or UDA partition
+
+Boot to u-boot shell with SD card
+
+1.1 Select partition
+=> mmc dev 0 (0 or 1 or 2)
+0 for UDA, 1 for boot0 and 2 for boot1
+
+1.2 Read tiboot3 from SD card and write to eMMC
+=> fatload mmc 1 ${loadaddr} tiboot3.bin
+=> mmc write ${loadaddr} 0x0 0x400
+
+1.3 Read tispl from SD card and write to eMMC
+=> fatload mmc 1 ${loadaddr} tispl.bin
+=> mmc write ${loadaddr} 0x400 0x1000
+
+1.4 Read u-boot from SD card and write to eMMC
+=> fatload mmc 1 ${loadaddr} u-boot.img
+=> mmc write ${loadaddr} 0x1400 0x2000
+
+1.5 set mmc partconf and boot bus
+=> mmc partconf 0 1 (1 or 2 or 7) 1
+1 for boot0 and 2 for boot1, 7 for UDA
+=> mmc bootbus 0 2 0 0
+
+Power off the board and after changing the boot mode switch SW9 and SW8
+in eMMC mode, power on the board.
+
+2. Case of UDA FS write
+
+2.1 Boot the board to Linux shell
+
+2.2 Create 2 partitions on eMMC using fdisk command.
+
+2.3 Change type of partition 1 from 'Linux' to 'W95 FAT32 (LBA)(fdisk sub command t followed by c)
+
+2.4 Set bootable flag on partition 1. (fdisk sub command a)
+
+2.5 Create file system on partition 1 (mkfs.vfat -F 32 -n "boot" /dev/mmcblk0p1)
+
+2.6 Mount boot partition, and copy the tiboot3.bin, tispl.bin and u-boot.img into boot partition.
+
+2.7 On rootfs partition, install kernel, dtb and other file system for Linux.
+
+2.6 Reboot the board, and break at u-boot shell
+
+2.7 set mmc partconf and boot bus
+=> mmc partconf 0 1 7 1
+=> mmc bootbus 0 2 0 0
+
+Power off the board and after changing the boot mode switch SW9 and SW8
+in eMMC mode, power on the board.
diff --git a/doc/board/ti/k3.rst b/doc/board/ti/k3.rst
index 7aeb04b005..214a22b1ae 100644
--- a/doc/board/ti/k3.rst
+++ b/doc/board/ti/k3.rst
@@ -31,6 +31,7 @@ K3 Based SoCs
:maxdepth: 1
j721e_evm
+ j7200_evm
am62x_sk
Boot Flow Overview