Skip to content

Latest commit

 

History

History
225 lines (158 loc) · 9.49 KB

File metadata and controls

225 lines (158 loc) · 9.49 KB

Using Older SDKs with OpenPRU

As TI releases new SDKs, the OpenPRU projects will be updated so that the projects can be built with the latest SDK releases. Refer to the Release Notes for a list of Compatible SDKs that can build OpenPRU projects without changes.

Sometimes, backwards compatibility breaks between SDK releases. You can still use older SDKs with the OpenPRU code, but some modifications may be required.

Note

Older SDK releases may not have been tested with OpenPRU. Additional modifications may be required.

Modifications to use older SDK versions

There are several different kinds of modifications that may be required to use open-pru with an older SDK version. We will use a number to represent each kind of modification.

AM243x
AM243X SDK Mandatory modifications Optional modifications
MCU+ 8.6 - 9.2 [1] [2] [4]
MCU+ 10.0 [1]; either [2] or [7] [4]
MCU+ 10.1-11.0 Either [2] or [7]
AM261x
AM261x SDK Mandatory modifications Optional modifications
MCU+ SDK 10.0.1 Either [2] or [3]; [8]
MCU+ SDK 10.2 [8]
AM263Px
AM263Px SDK Mandatory modifications Optional modifications
MCU+ SDK 10.0 [1]; Either [2] or [3]; [8] [4]
MCU+ SDK 10.1 Either [2] or [3]; [8]
MCU+ SDK 10.2 [8]
AM263x
AM263x SDK Mandatory modifications Optional modifications
MCU+ 9.2 [1]; Either [2] or [3]; [8] [4]
MCU+ 10.0, 10.1 Either [2] or [3]; [8]
MCU+ 10.2 [8]
AM62x
SDK Mandatory modifications Optional modifications
Linux 9.0-10.1 [5]
Linux 11.0 [6]
AM64x
SDK Mandatory modifications Optional modifications
MCU+ 8.6 - 9.2 [1] [2] [4]
MCU+ 10.0 [1], either [2] or [7] [4]
MCU+ 10.1-11.0 Either [2] or [7]
Linux 9.0-10.1 [5]
Linux 11.0 [6]

1. Update SysConfig version. Affects: PRU code

2. Use MCU+ code from the SDK. Affects: MCU+ cores

3. Modify max-segment-size. Affects: AM26x MCU+ cores

4. Update MCU+ source/pru_io/firmware/common code. Affects: PRU code

5. Revert RPMsg channel name from rpmsg-raw to rpmsg-pru. Affects: PRU firmware w/ RPMsg code

6. Apply patch to enable PRU RPMsg. Affects: Linux RPMsg kernel driver

7. Revert MCU+ SDK 11.1 makefile updates. Affects: AM243x & AM64x MCU+ cores

8. Revert AM26x MCU+ SDK 11.0 makefile updates. Affects: AM26x MCU+ cores

1. Update SysConfig version

Affects: PRU code

By default, the OpenPRU project enforces a minimum SysConfig version of 1.21.0. This allows for building projects that modify the SysConfig infrastructure, like examples/pru_i2c_diagnostic.

This minimum SysConfig version does not matter if the OpenPRU project does not do anything custom to the SysConfig source code.

Update the minimum SysConfig version from 1.21.0 to the SysConfig version used by your MCU+ SDK version in these files:
.metadata/.tirex/package.tirex.json
.metadata/product.json

2. Use MCU+ code from the SDK

Affects: MCU+ cores

Sometimes, the MCU+ infrastructure changes significantly between SDK releases. In this case, it is probably easier to copy over an MCU+ project from the MCU+ SDK and modify that project, instead of using the MCU+ projects that are already in the OpenPRU repo.

For more information about adding MCU+ code to an OpenPRU project, refer to the PRU Academy > Getting Started Labs > Lab 1: How to Create a PRU Project > Creating an OpenPRU Project with MCU+ Code

Example: MCU+ SDK 9.1 Memory Configurator Tool

Starting in AM243x & AM64x MCU+ SDK 9.1, the MCU+ projects switched to using the SysConfig Memory configurator tool. Attempting to build unmodified OpenPRU projects with an AM243x/AM64x SDK from before 9.1 will lead to build errors like this:

Generating SysConfig files ...
Running script...
Error: Exception occurred calling scripting.addModule(): No such resource: /memory_configurator/default_linker.syscfg.js

3. Modify max-segment-size

Affects: AM26x MCU+ cores

For AM26x devices (AM261x, AM263Px, AM263x), MCU+ SDK 10.1 and earlier used flag --max_segment_size in the R5F makefiles. However, MCU+ SDK 10.2 and later change the flag to use hyphens: --max-segment-size.

In order to modify existing MCU+ projects in the open-pru repo to build with older versions of MCU+ SDK, modify the flag to use underscores. This is the commit where we originally updated the flag and broke backwards compatibility:
https://github.com/TexasInstruments/open-pru/commit/77c5c6eca5f4357a6874a3c6a9b03414a9b6ebc5

4. Update MCU+ source/pru_io/firmware/common code

Affects: PRU code

There have been bugfixes to the macros in MCU+ sdk source/pru_io/firmware/common over the last few years. If your project has a dependency on any macros in this directory, you may want to use the latest version of those files:
https://github.com/TexasInstruments/mcupsdk-core/commits/next/source/pru_io/firmware/common

NOTE: Starting with OpenPRU v2026.01.00, PRU projects use the macros and defines in the OpenPRU source/ folder & subfolders instead of the MCU+ SDK. If you use the OpenPRU version of macros or defines, there is no need to update the MCU+ SDK's version of this code.

5. Revert RPMsg channel name from rpmsg-raw to rpmsg-pru

Starting in Linux kernel 6.12, we removed the separate PRU RPMsg (RPMessage) driver[1], and use the generic RPMsg character driver for communication with PRU instead [2].

[1] linux-x.y.z/drivers/rpmsg/rpmsg_pru.c [2] linux-x.y.z/drivers/rpmsg/rpmsg_char.c

The generic Linux RPMsg character driver uses a different channel name (rpmsg-raw) than the previous PRU RPMsg driver (rpmsg-pru). In order to get PRU RPMsg firmware to work with Linux kernel 6.1 or 6.6, revert the PRU RPMsg firmware from using rpmsg-raw to use rpmsg-pru instead.

In other words, revert this patch from the earlier PRU Software Support Package: Linux kernel 6.12: update rpmsg-pru to rpmsg-raw

6. Apply patch to enable PRU RPMsg

Linux SDK 11.0 (Linux kernel 6.12) requires a Linux kernel patch in order to enable PRU RPMsg. The patch is not required if using SDK 10.1 or earlier, or SDK 11.1 or later.

For more details, refer to [FAQ] AM62x & AM64x: How to enable PRU RPMsg on Processor SDK Linux 11.0.

7. Revert MCU+ SDK 11.1 makefile updates

Affects: AM243x & AM64x MCU+ cores

Starting in AM243x & AM64x MCU+ SDK 11.1, the makefile infrastructure for MCU+ cores is updated. Changes include updating the OS value, renaming libraries, adding XML build infrastructure, and several other miscellaneous changes.

In order to undo these changes, revert the file changes that were done in OpenPRU commit AM243x & AM64x: Add support for MCU+ SDK 11.1&11.2

8. Revert AM26x MCU+ SDK 11.0 makefile updates

Affects: AM26x MCU+ cores (AM261x, AM263Px, AM263x)

Starting in AM26x MCU+ SDK 11.0, the makefile infrastructure for MCU+ cores is updated. Changes include adding the -DOS_FREERTOS define, renaming libraries to include a .freertos. infix, adding XML build infrastructure, updating the boot image format from appimage to MulticoreELF (MCELF), and several other miscellaneous changes.

In order to undo these changes, revert the file changes that were done in OpenPRU commit AM26x: Add support for MCU+ SDK 11.0 and AM26x: Update CCS project files for MCU+ SDK 11.0+.