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.
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
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
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
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
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
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.
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
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.
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
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+.