Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0-or-later |
| 2 | .. sectionauthor:: Marcel Ziswiler <marcel.ziswiler@toradex.com> |
| 3 | |
| 4 | Verdin AM62 Module |
| 5 | ================== |
| 6 | |
Marcel Ziswiler | 712d624 | 2023-08-07 01:44:46 +0200 | [diff] [blame] | 7 | - SoM: https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62 |
| 8 | - Carrier board: https://www.toradex.com/products/carrier-board/verdin-development-board-kit |
| 9 | |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 10 | Quick Start |
| 11 | ----------- |
| 12 | |
| 13 | - Get the binary-only SYSFW |
| 14 | - Get binary-only TI Linux firmware |
| 15 | - Build the ARM trusted firmware binary |
| 16 | - Build the OPTEE binary |
| 17 | - Build U-Boot for the R5 |
| 18 | - Build U-Boot for the A53 |
| 19 | - Flash to eMMC |
| 20 | - Boot |
| 21 | |
| 22 | For an overview of the TI AM62 SoC boot flow please head over to: |
| 23 | :doc:`../ti/am62x_sk` |
| 24 | |
| 25 | Sources: |
| 26 | -------- |
Marcel Ziswiler | 813070a | 2023-08-29 00:01:53 +0200 | [diff] [blame] | 27 | |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 28 | .. include:: ../ti/k3.rst |
| 29 | :start-after: .. k3_rst_include_start_boot_sources |
| 30 | :end-before: .. k3_rst_include_end_boot_sources |
| 31 | |
Dhruva Gole | 4a395e9 | 2024-08-05 19:59:32 +0530 | [diff] [blame] | 32 | .. include:: ../ti/k3.rst |
| 33 | :start-after: .. k3_rst_include_start_boot_firmwares |
| 34 | :end-before: .. k3_rst_include_end_tifsstub |
| 35 | |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 36 | Build procedure: |
| 37 | ---------------- |
Marcel Ziswiler | 813070a | 2023-08-29 00:01:53 +0200 | [diff] [blame] | 38 | |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 39 | 0. Setup the environment variables: |
| 40 | |
| 41 | .. include:: ../ti/k3.rst |
| 42 | :start-after: .. k3_rst_include_start_common_env_vars_desc |
| 43 | :end-before: .. k3_rst_include_end_common_env_vars_desc |
| 44 | |
| 45 | .. include:: ../ti/k3.rst |
| 46 | :start-after: .. k3_rst_include_start_board_env_vars_desc |
| 47 | :end-before: .. k3_rst_include_end_board_env_vars_desc |
| 48 | |
| 49 | Set the variables corresponding to this platform: |
| 50 | |
| 51 | .. include:: ../ti/k3.rst |
| 52 | :start-after: .. k3_rst_include_start_common_env_vars_defn |
| 53 | :end-before: .. k3_rst_include_end_common_env_vars_defn |
| 54 | .. code-block:: bash |
| 55 | |
| 56 | $ export UBOOT_CFG_CORTEXR=verdin-am62_r5_defconfig |
| 57 | $ export UBOOT_CFG_CORTEXA=verdin-am62_a53_defconfig |
| 58 | $ export TFA_BOARD=lite |
Marcel Ziswiler | 813070a | 2023-08-29 00:01:53 +0200 | [diff] [blame] | 59 | $ # we don't use any extra TFA parameters |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 60 | $ unset TFA_EXTRA_ARGS |
| 61 | $ export OPTEE_PLATFORM=k3-am62x |
| 62 | $ export OPTEE_EXTRA_ARGS="CFG_WITH_SOFTWARE_PRNG=y" |
| 63 | |
| 64 | .. include:: ../ti/am62x_sk.rst |
| 65 | :start-after: .. am62x_evm_rst_include_start_build_steps |
| 66 | :end-before: .. am62x_evm_rst_include_end_build_steps |
| 67 | |
| 68 | Flash to eMMC |
| 69 | ------------- |
| 70 | |
| 71 | .. code-block:: bash |
| 72 | |
| 73 | => mmc dev 0 1 |
| 74 | => fatload mmc 1 ${loadaddr} tiboot3.bin |
| 75 | => mmc write ${loadaddr} 0x0 0x400 |
| 76 | => fatload mmc 1 ${loadaddr} tispl.bin |
| 77 | => mmc write ${loadaddr} 0x400 0x1000 |
| 78 | => fatload mmc 1 ${loadaddr} u-boot.img |
| 79 | => mmc write ${loadaddr} 0x1400 0x2000 |
| 80 | |
Marcel Ziswiler | ef002e5 | 2023-08-29 00:01:54 +0200 | [diff] [blame] | 81 | As a convenience, instead of having to remember all those addresses and sizes, |
| 82 | one may also use the update U-Boot wrappers: |
| 83 | |
| 84 | .. code-block:: bash |
| 85 | |
| 86 | > tftpboot ${loadaddr} tiboot3-am62x-gp-verdin.bin |
| 87 | > run update_tiboot3 |
| 88 | |
| 89 | > tftpboot ${loadaddr} tispl.bin |
| 90 | > run update_tispl |
| 91 | |
| 92 | > tftpboot ${loadaddr} u-boot.img |
| 93 | > run update_uboot |
| 94 | |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 95 | Boot |
| 96 | ---- |
| 97 | |
Marcel Ziswiler | 813070a | 2023-08-29 00:01:53 +0200 | [diff] [blame] | 98 | Output:: |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 99 | |
Marcel Ziswiler | 712d624 | 2023-08-07 01:44:46 +0200 | [diff] [blame] | 100 | U-Boot SPL 2023.10-rc1-00210-gb678170a34c (Aug 03 2023 - 00:09:14 +0200) |
| 101 | SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.1--v09.00.01 (Kool Koala)') |
| 102 | SPL initial stack usage: 13368 bytes |
| 103 | Trying to boot from MMC1 |
| 104 | Authentication passed |
| 105 | Authentication passed |
| 106 | Authentication passed |
| 107 | Authentication passed |
| 108 | Authentication passed |
| 109 | Starting ATF on ARM64 core... |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 110 | |
Marcel Ziswiler | 712d624 | 2023-08-07 01:44:46 +0200 | [diff] [blame] | 111 | NOTICE: BL31: v2.9(release):v2.9.0-73-g463655cc8 |
| 112 | NOTICE: BL31: Built : 14:51:42, Jun 5 2023 |
| 113 | I/TC: |
| 114 | I/TC: OP-TEE version: 3.21.0-168-g322cf9e33 (gcc version 12.2.1 20221205 (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24))) #2 Mon Jun 5 13:04:15 UTC 2023 aarch64 |
| 115 | I/TC: WARNING: This OP-TEE configuration might be insecure! |
| 116 | I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html |
| 117 | I/TC: Primary CPU initializing |
| 118 | I/TC: SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.1--v09.00.01 (Kool Koala)') |
| 119 | I/TC: HUK Initialized |
| 120 | I/TC: Primary CPU switching to normal world boot |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 121 | |
Marcel Ziswiler | 712d624 | 2023-08-07 01:44:46 +0200 | [diff] [blame] | 122 | U-Boot SPL 2023.10-rc1-00210-gb678170a34c (Aug 03 2023 - 00:09:41 +0200) |
| 123 | SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.1--v09.00.01 (Kool Koala)') |
| 124 | SPL initial stack usage: 1840 bytes |
| 125 | Trying to boot from MMC1 |
| 126 | Authentication passed |
| 127 | Authentication passed |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 128 | |
| 129 | |
Marcel Ziswiler | 712d624 | 2023-08-07 01:44:46 +0200 | [diff] [blame] | 130 | U-Boot 2023.10-rc1-00210-gb678170a34c (Aug 03 2023 - 00:09:41 +0200) |
Marcel Ziswiler | 315deb3 | 2023-08-04 12:08:08 +0200 | [diff] [blame] | 131 | |
Marcel Ziswiler | 712d624 | 2023-08-07 01:44:46 +0200 | [diff] [blame] | 132 | SoC: AM62X SR1.0 HS-FS |
| 133 | DRAM: 2 GiB |
| 134 | Core: 136 devices, 28 uclasses, devicetree: separate |
| 135 | MMC: mmc@fa10000: 0, mmc@fa00000: 1 |
| 136 | Loading Environment from MMC... OK |
| 137 | In: serial@2800000 |
| 138 | Out: serial@2800000 |
| 139 | Err: serial@2800000 |
| 140 | Model: Toradex 0076 Verdin AM62 Quad 2GB WB IT V1.0A |
| 141 | Serial#: 15037380 |
| 142 | Carrier: Toradex Verdin Development Board V1.1A, Serial# 10754333 |
| 143 | am65_cpsw_nuss ethernet@8000000: K3 CPSW: nuss_ver: 0x6BA01103 cpsw_ver: 0x6BA81103 ale_ver: 0x00290105 Ports:2 mdio_freq:1000000 |
| 144 | Setting variant to wifi |
| 145 | Net: |
| 146 | Warning: ethernet@8000000port@1 MAC addresses don't match: |
| 147 | Address in ROM is 1c:63:49:22:5f:f9 |
| 148 | Address in environment is 00:14:2d:e5:73:c4 |
| 149 | eth0: ethernet@8000000port@1 [PRIME], eth1: ethernet@8000000port@2 |
| 150 | Hit any key to stop autoboot: 0 |
| 151 | Verdin AM62 # |