MCU-PLUS-SDK

From Variscite Wiki
Revision as of 11:48, 4 May 2023 by Francesco (talk | contribs)
VAR-SOM-AM62 - MCU-PLUS-SDK 08.06.00.18

Overview

MCU-PLUS-SDK 08.06.00.18 for for AM62X

This SDK contains examples, libraries and tools to develop RTOS and no-RTOS based applications for ARM M4F CPU, ARM R5F CPU and related peripherals.

File:MCU-PLUS-SDK-block diagram am62x.png

The examples and demos supported from TI in this SDK are:
This page lists all the examples and demos supported in this SDK.

1. Empty Project
2. Hello World Project
3. Hello World C++ Project
4. OS Kernel and Driver Porting Layer (DPL)
5. SOC and Board Peripheral Drivers
6. Secondary Bootloader (SBL)
7. Reset Isolation - MCU Domain
8. Extended OTP Test
9. Software Diagnostics Library (SDL)

To more details please see https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08.06.00.18/exports/docs/api_guide_am62x/EXAMPLES.html

The examples are arranged as below

~/mcu-plus-sdk-am62x/examples/{component or module}/{optional sub-module or sub-component}/{example name}/{board on which this example can run}/{cpu}_{os}/{compiler toolchain}

Not all examples are supported by Variscite, the table "Available demos" details those supported.

Boot Flow

https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/08.06.00.18/exports/docs/linux/Foundational_Components/U-Boot/UG-General-Info.html#boot-flow

Installing required packages

Download and install TI CLANG Compiler Toolchain:

$ cd /tmp
$ wget https://dr-download.ti.com/software-development/ide-configuration-compiler-or-debugger/MD-ayxs93eZNN/2.1.2.LTS/ti_cgt_armllvm_2.1.2.LTS_linux-x64_installer.bin
$ chmod +x ti_cgt_armllvm_2.1.2.LTS_linux-x64_installer.bin
$ ./ti_cgt_armllvm_2.1.2.LTS_linux-x64_installer.bin and install to ~/ti/ti-cgt-armllvm_2.1.2.LTS
$ rm ti_cgt_armllvm_2.1.2.LTS_linux-x64_installer.bin

Download MCU-PLUS-SDK for the SOM:

$ mkdir ~/mcu-plus-sdk-am62x
$ cd ~/mcu-plus-sdk-am62x
$ git clone https://github.com/varigit/ti-mcu-plus-sdk -b mcu_plus_sdk_am62x_08_06_00_18_var01 ~/mcu-plus-sdk-am62x

Documentation

https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08.06.00.18/exports/docs/api_guide_am62x/index.html Original TI documentation is available at https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08.06.00.18/exports/docs/api_guide_am62x/EXAMPLES.html.
Available also locally at ~/mcu-plus-sdk-am62x/docs/api_guide_am62x/index.html.
Available also starting documentation server running "cd ~/mcu-plus-sdk-am62x" "python3 -m http.server 8080 &" and then open web browser to "http://<ip where documentation server is running>:8080/docs/api_guide_am62x/index.html"

Demos pins for M4F core

Default M4F pins used by the demos are:

Function SoC balls VAR-SOM-AM62 pins Symphony pins Notes
UART2 RXD/TXD R24/R25 J1.115/J1.171 J18.9 / J18.7 The UART2 is not an instance from the MCU domain so only the polling mode is supported.
To more details: Accessing main and wakeup domain peripherals from MCU domain

Don't use /dev/ttyS2 from linux while running M4F examples to avoid conflicts.

MCU_GPIO0_14 (Input) B3 J1.155 J13.16 (HDMI connector) HDMI to header connector adapter is required
MCU_GPIO0_13 (Output) D6 J1.157 J13.18 (HDMI connector) HDMI to header connector adapter is required
MCU_MCAN1 RX/TX D4/E5 J1.154/J1.156 J13.9/J13.11 (TTL levels, CAN transceiver not mounted!) HDMI to header connector adapter is required
MCU_SPI0 CLK/D0/D1/CS1 A7/D9/C9/B8 J1.150/J1.151/J1.152/J1.153 J13.17/J13.21/J13.15/J13.23 HDMI to header connector adapter is required
MCU_I2C0 SCL/SDA A8/D10 J1.146/J1.148 J13.22/J13.24 HDMI to header connector adapter is required

Demos pins for R5F core

Default R5F pins used by the demos are:

Function SoC balls VAR-SOM-AM62 pins Symphony pins Notes
WKUP_UART0 RXD/TXD B4/C5 J1.145/J1.147 JJ3.8/J3.9
MCU_GPIO0_14 (Input) B3 J1.155 J13.16 (HDMI connector) HDMI to header connector adapter is required
MCU_GPIO0_13 (Output) D6 J1.157 J13.18 (HDMI connector) HDMI to header connector adapter is required
MCAN0 RX/TX E15/C15 J1.46/J1.44 J16.18 / J16.20 (CANL/CANH levels, CAN transceiver mounted!)
MCU_SPI0 CLK/D0/D1/CS1 A7/D9/C9/B8 J1.150/J1.151/J1.152/J1.153 J13.17/J13.21/J13.15/J13.23 HDMI to header connector adapter is required
WKUP_I2C0 SCL/SDA B9/A9 J1.140/J1.141 J3.15/J3.5 HDMI to header connector adapter is required

Available demos

All examples are arranged as below

~/mcu-plus-sdk-am62x/examples/{component or module}/{optional sub-module or sub-component}/{example name}/{board on which this example can run}/{cpu}_{os}/{compiler toolchain}

All of the Variscite examples are located under the following folders

~/mcu-plus-sdk-am62x/examples/{component or module}/{optional sub-module or sub-component}/{example name}/var-som-am62/{cpu}_{os}/{compiler toolchain}

The available demos for VAR-SOM-AM62 are:

  • drivers/gpio/gpio_input_interrupt
  • drivers/gpio/gpio_led_blink
  • drivers/i2c/i2c_led_blink
  • drivers/i2c/i2c_read
  • drivers/i2c/i2c_temperature
  • drivers/ipc/ipc_notify_echo
  • drivers/ipc/ipc_rpmsg_echo
  • drivers/ipc/ipc_rpmsg_echo_linux
  • drivers/mcan/mcan_loopback_interrupt
  • drivers/mcan/mcan_loopback_polling
  • drivers/mcspi/mcspi_loopback
  • drivers/mcspi/mcspi_performance_32bit
  • drivers/mcspi/mcspi_performance_8bit
  • drivers/sciclient/sciclient_get_version
  • drivers/uart/uart_echo
  • drivers/uart/uart_echo_low_latency_polling
  • drivers/udma/udma_chaining
  • drivers/udma/udma_memcpy_interrupt
  • drivers/udma/udma_memcpy_polling
  • drivers/udma/udma_sw_trigger
  • empty
  • hello_world
  • hello_world_cpp
  • kernel/dpl/dpl_demo
  • kernel/freertos/posix_demo
  • kernel/freertos/task_switch

The folders "am62x-sk" and "am62x-sk-lp" are related to the examples for TI Starter Kit.

You can build and run the demos following official TI documentation:

https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08.06.00.18/exports/docs/api_guide_am62x/MAKEFILE_BUILD_PAGE.html
https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08.06.00.18/exports/docs/api_guide_am62x/GETTING_STARTED_BUILD.html

Building a demo

Building hello_world for MCU M4F

$ cd ~/mcu-plus-sdk-am62x
$ export PROJDIR=examples/hello_world/var-som-am62/m4fss0-0_freertos/ti-arm-clang/
$ make -s help
$ make -s -C ${PROJDIR} clean
$ make -s -C ${PROJDIR}
This produce the M4F binary ${PROJDIR}/am62-mcu-m4f0_0-fw for RTOS OS

To build for NO RTOS use:
$ export PROJDIR=examples/hello_world/var-som-am62/m4fss0-0_nortos/ti-arm-clang/

Building hello_world for WKUP R5F (DM R5)

$ cd ~/mcu-plus-sdk-am62x
$ export PROJDIR=examples/hello_world/var-som-am62/r5fss0-0_freertos/ti-arm-clang/
$ make -s help
$ make -s -C ${PROJDIR} clean
$ make -s -C ${PROJDIR}
This produce the R5F binary ${PROJDIR}/am62-wkup-r5f0_0-fw for RTOS OS

To build for NO RTOS use:
$ The hello_world NO RTOS is not available for R5F core