SK-AM62 M4F Core

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

The sk_am62 board supports the hardware features listed below.

on-chip / on-board
Feature integrated in the SoC / present on the board.
2 / 2
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files.
vnd,foo
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
sk_am62
/
am6234/m4

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M4F CPU1

arm,cortex-m4f

Clock control

on-chip

Generic fixed-rate clock provider1

fixed-clock

GPIO & Headers

on-chip

GPIO Controller for Davinci and Keystone devices1

ti,davinci-gpio

I2C

on-chip

TI OMAP I2C Controller1

ti,omap-i2c

Interrupt controller

on-chip

ARMv7-M NVIC (Nested Vectored Interrupt Controller)1

arm,v7m-nvic

Mailbox

on-chip

TI OMAP MAILBOX1

ti,omap-mailbox

Pin control

on-chip

TI K3 Pin Controller1

ti,k3-pinctrl

Serial controller

on-chip

ns16550 UART1

ns16550

SRAM

on-chip

Generic on-chip SRAM description3

mmio-sram

Timer

on-chip

ARMv7-M System Tick1

arm,armv7m-systick

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 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 Hello World sample with the following command.

# 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 build/zephyr directory as zephyr.elf.

We now copy this binary onto the SD card in the /lib/firmware directory and name it as am62-mcu-m4f0_0-fw.

# 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:

west build -b sk_am62/am6234/m4 <my_app>
west 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