1.. _am62x_m4_sk:
2
3AM62x-SK M4F Core
4#################
5
6Overview
7********
8
9The AM62x-SK board configuration is used by Zephyr applications that run on
10the TI AM62x platform. The board configuration provides support for the ARM
11Cortex-M4F MCU core and the following features:
12
13- Nested Vector Interrupt Controller (NVIC)
14- System Tick System Clock (SYSTICK)
15
16The board configuration also enables support for the semihosting debugging console.
17
18See the `TI AM62X Product Page`_ for details.
19
20.. figure:: img/sk_am62_angled.webp
21   :align: center
22   :alt: TI AM62x-SK EVM
23
24   Texas Instruments AM62x SK EVM
25
26Hardware
27********
28The AM62x-SK EVM features the AM62x SoC, which is composed of a quad Cortex-A53
29cluster and a single Cortex-M4 core in the MCU domain. Zephyr is ported to run on
30the M4F core and the following listed hardware specifications are used:
31
32- Low-power ARM Cortex-M4F
33- Memory
34
35   - 256KB of SRAM
36   - 2GB of DDR4
37
38- Debug
39
40   - XDS110 based JTAG
41
42Supported Features
43==================
44
45The am62x_m4_sk configuration supports the following hardware features:
46
47+-----------+------------+-------------------------------------+
48| Interface | Controller | Driver/Component                    |
49+===========+============+=====================================+
50| NVIC      | on-chip    | nested vector interrupt controller  |
51+-----------+------------+-------------------------------------+
52| SYSTICK   | on-chip    | systick                             |
53+-----------+------------+-------------------------------------+
54| PINCTRL   | on-chip    | pinctrl                             |
55+-----------+------------+-------------------------------------+
56| UART      | on-chip    | serial                              |
57+-----------+------------+-------------------------------------+
58
59Other hardware features are not currently supported by the port.
60
61Devices
62========
63System Clock
64------------
65
66This board configuration uses a system clock frequency of 400 MHz.
67
68DDR RAM
69-------
70
71The board has 2GB of DDR RAM available. This board configuration
72allocates Zephyr 4kB of RAM (only for resource table: 0x9CC00000 to 0x9CC00400).
73
74Serial Port
75-----------
76
77This board configuration uses a single serial communication channel with the
78MCU domain UART (MCU_UART0).
79
80SD Card
81*******
82
83Download TI's official `WIC`_ and flash the WIC file with an etching software
84onto an SD-card. This will boot Linux on the A53 application cores of the EVM.
85These cores will then load the zephyr binary on the M4 core using remoteproc.
86
87The default configuration can be found in the defconfig file:
88
89.. code-block:: console
90
91   boards/arm/am62x_m4/am62x_m4_sk_defconfig
92
93Flashing
94********
95
96The board can using remoteproc, and uses the OpenAMP resource table to accomplish this.
97
98The testing requires the binary to be copied to the SD card to allow the A53 cores to load it while booting using remoteproc.
99
100To test the M4F core, we build the `hello_world` sample with the following command.
101
102.. code-block:: console
103
104   # From the root of the Zephyr repository
105   west build -p -b am62x_m4_sk samples/hello_world
106
107This builds the program and the binary is present in the `build/zephyr` directory as `zephyr.elf`.
108
109We now copy this binary onto the SD card in the `/lib/firmware` directory and name it as `am62-mcu-m4f0_0-fw`.
110
111.. code-block:: console
112
113   # Mount the SD card at sdcard for example
114   sudo mount /dev/sdX sdcard
115   # copy the elf to the /lib/firmware directory
116   sudo cp --remove-destination zephyr.elf sdcard/lib/firmware/am62-mcu-m4f0_0-fw
117
118The SD card can now be used for booting. The binary will now be loaded onto the M4F core on boot.
119
120To allow the board to boot using the SD card, set the boot pins to the SD Card boot mode. Refer to `EVM Setup Page`_.
121
122After changing the boot mode, the board should go through the boot sequence on powering up.
123The binary will run and print Hello world to the MCU_UART0 port.
124
125References
126**********
127
128AM62x SK EVM TRM:
129   https://www.ti.com/lit/ug/spruiv7/spruiv7.pdf
130
131.. _TI AM62X Product Page:
132   https://www.ti.com/product/AM625
133
134.. _WIC:
135   https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-PvdSyIiioq/08.06.00.42/tisdk-default-image-am62xx-evm.wic.xz
136
137.. _AM62x SK EVM TRM:
138   https://www.ti.com/lit/ug/spruiv7/spruiv7.pdf
139
140.. _EVM Setup Page:
141   https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08_06_00_18/exports/docs/api_guide_am62x/EVM_SETUP_PAGE.html
142