|  | .. zephyr:board:: sk_am62 | 
|  |  | 
|  | Overview | 
|  | ******** | 
|  |  | 
|  | The SK-AM62 board configuration is used by Zephyr applications that run on | 
|  | the TI AM62x platform. The board configuration provides support for the ARM | 
|  | Cortex-M4F MCU core and the following features: | 
|  |  | 
|  | - Nested Vector Interrupt Controller (NVIC) | 
|  | - System Tick System Clock (SYSTICK) | 
|  |  | 
|  | The board configuration also enables support for the semihosting debugging console. | 
|  |  | 
|  | See the `TI AM62X Product Page`_ for details. | 
|  |  | 
|  | Hardware | 
|  | ******** | 
|  | The SK-AM62 EVM features the AM62x SoC, which is composed of a quad Cortex-A53 | 
|  | cluster and a single Cortex-M4 core in the MCU domain. Zephyr is ported to run on | 
|  | the M4F core and the following listed hardware specifications are used: | 
|  |  | 
|  | - Low-power ARM Cortex-M4F | 
|  | - Memory | 
|  |  | 
|  | - 256KB of SRAM | 
|  | - 2GB of DDR4 | 
|  |  | 
|  | - Debug | 
|  |  | 
|  | - XDS110 based JTAG | 
|  |  | 
|  | Supported Features | 
|  | ================== | 
|  |  | 
|  | .. zephyr:board-supported-hw:: | 
|  |  | 
|  | Devices | 
|  | ======== | 
|  | System Clock | 
|  | ------------ | 
|  |  | 
|  | This board configuration uses a system clock frequency of 400 MHz. | 
|  |  | 
|  | DDR RAM | 
|  | ------- | 
|  |  | 
|  | The board has 2GB of DDR RAM available. This board configuration | 
|  | allocates Zephyr 4kB of RAM (only for resource table: 0x9CC00000 to 0x9CC00400). | 
|  |  | 
|  | Serial Port | 
|  | ----------- | 
|  |  | 
|  | This board configuration uses a single serial communication channel with the | 
|  | MCU domain UART (MCU_UART0). | 
|  |  | 
|  | SD Card | 
|  | ******* | 
|  |  | 
|  | Download TI's official `WIC`_ and flash the WIC file with an etching software | 
|  | onto an SD-card. This will boot Linux on the A53 application cores of the EVM. | 
|  | These cores will then load the zephyr binary on the M4 core using remoteproc. | 
|  |  | 
|  | The default configuration can be found in | 
|  | :zephyr_file:`boards/ti/sk_am62/sk_am62_am6234_m4_defconfig` | 
|  |  | 
|  | Flashing | 
|  | ******** | 
|  |  | 
|  | The board can using remoteproc, and uses the OpenAMP resource table to accomplish this. | 
|  |  | 
|  | The testing requires the binary to be copied to the SD card to allow the A53 cores to load it while booting using remoteproc. | 
|  |  | 
|  | To test the M4F core, we build the :zephyr:code-sample:`hello_world` sample with the following command. | 
|  |  | 
|  | .. code-block:: console | 
|  |  | 
|  | # From the root of the Zephyr repository | 
|  | west build -p -b sk_am62/am6234/m4 samples/hello_world | 
|  |  | 
|  | This builds the program and the binary is present in the :file:`build/zephyr` directory as | 
|  | :file:`zephyr.elf`. | 
|  |  | 
|  | We now copy this binary onto the SD card in the :file:`/lib/firmware` directory and name it as | 
|  | :file:`am62-mcu-m4f0_0-fw`. | 
|  |  | 
|  | .. code-block:: console | 
|  |  | 
|  | # Mount the SD card at sdcard for example | 
|  | sudo mount /dev/sdX sdcard | 
|  | # copy the elf to the /lib/firmware directory | 
|  | sudo cp --remove-destination zephyr.elf sdcard/lib/firmware/am62-mcu-m4f0_0-fw | 
|  |  | 
|  | The SD card can now be used for booting. The binary will now be loaded onto the M4F core on boot. | 
|  |  | 
|  | To allow the board to boot using the SD card, set the boot pins to the SD Card boot mode. Refer to `EVM Setup Page`_. | 
|  |  | 
|  | After changing the boot mode, the board should go through the boot sequence on powering up. | 
|  | The binary will run and print Hello world to the MCU_UART0 port. | 
|  |  | 
|  | Debugging | 
|  | ********* | 
|  |  | 
|  | The board is equipped with an XDS110 JTAG debugger. To debug a binary, utilize the ``debug`` build target: | 
|  |  | 
|  | .. zephyr-app-commands:: | 
|  | :app: <my_app> | 
|  | :board: sk_am62/am6234/m4 | 
|  | :maybe-skip-config: | 
|  | :goals: debug | 
|  |  | 
|  | .. hint:: | 
|  | To utilize this feature, you'll need OpenOCD version 0.12 or higher. Due to the possibility of | 
|  | older versions being available in package feeds, it's advisable to `build OpenOCD from source`_. | 
|  |  | 
|  | References | 
|  | ********** | 
|  |  | 
|  | AM62x SK EVM TRM: | 
|  | https://www.ti.com/lit/ug/spruiv7/spruiv7.pdf | 
|  |  | 
|  | .. _TI AM62X Product Page: | 
|  | https://www.ti.com/product/AM625 | 
|  |  | 
|  | .. _WIC: | 
|  | https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-PvdSyIiioq/08.06.00.42/tisdk-default-image-am62xx-evm.wic.xz | 
|  |  | 
|  | .. _AM62x SK EVM TRM: | 
|  | https://www.ti.com/lit/ug/spruiv7/spruiv7.pdf | 
|  |  | 
|  | .. _EVM Setup Page: | 
|  | https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08_06_00_18/exports/docs/api_guide_am62x/EVM_SETUP_PAGE.html | 
|  |  | 
|  | .. _build OpenOCD from source: | 
|  | https://docs.u-boot.org/en/latest/board/ti/k3.html#building-openocd-from-source |