Skip to content

Update all READMEs, port HW UART & MAC C code examples from PSSP#132

Open
nsaulnier-ti wants to merge 7 commits intomainfrom
a0226750_ai_import_pssp
Open

Update all READMEs, port HW UART & MAC C code examples from PSSP#132
nsaulnier-ti wants to merge 7 commits intomainfrom
a0226750_ai_import_pssp

Conversation

@nsaulnier-ti
Copy link
Copy Markdown
Collaborator

@nsaulnier-ti nsaulnier-ti commented Apr 4, 2026

Update all README files in the OpenPRU repository to align with the latest OpenPRU v2026.01.00.

Port the HW UART project from the PRU Software Support Package (PSSP) as well as the C code version of the MAC example.

The project ports were used to test the behavior of AI agents based on #130.

This pull request should be merged in before #128

Ported code has not been tested on silicon yet

The README updates are the first step to addressing #42

@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

Port UART and MAC C examples from PSSP and update all repository documentation

✨ Enhancement 📝 Documentation

Grey Divider

Walkthroughs

Description
• Port HW UART loopback project from PRU Software Support Package (PSSP) with C firmware
  implementation for AM62x processor
• Port MAC (Multiply-Accumulate) hardware accelerator C example from PSSP with support for AM62x and
  AM64x processors
• Add comprehensive build infrastructure including makefiles, linker configurations, and CCS project
  specifications for both new projects
• Standardize and update all README files across the repository to align with OpenPRU v2026.01.00
  documentation format
• Add "Training" section to main README with links to PRU Academy resources
• Standardize documentation format for academy examples and getting started labs with "Validated HW
  & SW" sections
• Update academy readme to include new mac_c and uart_loopback entries with processor support
  information
• Improve documentation consistency across examples with structured sections for Introduction,
  Supported Combinations, and Running instructions
Diagram
flowchart LR
  PSSP["PSSP Examples<br/>UART & MAC C"]
  PORT["Port to OpenPRU<br/>AM62x & AM64x"]
  BUILD["Build Infrastructure<br/>Makefiles & CCS Specs"]
  DOCS["Documentation Updates<br/>READMEs & Guides"]
  REPO["Updated Repository<br/>v2026.01.00"]
  
  PSSP -->|"Port firmware"| PORT
  PORT -->|"Add build config"| BUILD
  BUILD -->|"Standardize docs"| DOCS
  DOCS -->|"Integrate"| REPO
Loading

Grey Divider

File Changes

1. academy/uart/uart_loopback/firmware/main.c ✨ Enhancement +161/-0

PRU UART loopback firmware implementation in C

• New UART loopback firmware implementation in C for PRU cores
• Initializes PRU UART peripheral with 115200 baud rate configuration
• Implements loopback test by transmitting "Hello!" string and receiving echoed data
• Configures UART registers including divisor, mode, interrupts, FIFO, and protocol settings

academy/uart/uart_loopback/firmware/main.c


2. academy/mac/mac_c/firmware/main.c ✨ Enhancement +97/-0

PRU MAC hardware accelerator C firmware example

• New MAC (Multiply-Accumulate) hardware accelerator example in C
• Allocates 256 pairs of 32-bit operands in PRU Data RAM
• Performs 256 multiply-accumulate operations with 64-bit result accumulation
• Ported from PRU Software Support Package (PSSP) example

academy/mac/mac_c/firmware/main.c


3. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +100/-0

AM64x PRU1 linker configuration for C compilation

• Linker command file for AM64x PRU1 core compilation
• Defines memory map for PRU instruction RAM, data RAM, shared memory, and peripherals
• Configures section allocation for code, stack, BSS, and data segments
• Specifies constant register mappings for UART, IEP, INTC, and other peripherals

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/linker.cmd


View more (43)
4. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +99/-0

AM64x PRU0 linker configuration for C compilation

• Linker command file for AM64x PRU0 core compilation
• Defines memory map for PRU instruction RAM, data RAM, shared memory, and peripherals
• Configures section allocation for code, stack, BSS, and data segments
• Specifies constant register mappings for UART, IEP, INTC, and other peripherals

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/linker.cmd


5. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +90/-0

AM62x PRU0 linker configuration for C compilation

• Linker command file for AM62x PRU0 core compilation
• Defines memory map for 16KB instruction RAM and 8KB data RAM per PRU
• Configures section allocation for code, stack, BSS, and data segments
• Specifies constant register mappings for UART, IEP, and other peripherals

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd


6. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +90/-0

AM62x PRU0 linker configuration for C compilation

• Linker command file for AM62x PRU0 core compilation
• Defines memory map for 16KB instruction RAM and 8KB data RAM per PRU
• Configures section allocation for code, stack, BSS, and data segments
• Specifies constant register mappings for UART, IEP, and other peripherals

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd


7. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +90/-0

AM62x PRU1 linker configuration for C compilation

• Linker command file for AM62x PRU1 core compilation
• Defines memory map for 16KB instruction RAM and 8KB data RAM per PRU
• Configures section allocation for code, stack, BSS, and data segments
• Specifies constant register mappings for UART, IEP, and other peripherals

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/linker.cmd


8. README.md 📝 Documentation +50/-32

Update README with training resources and improved build documentation

• Added new "Training" section with links to PRU Academy resources for AM243x and AM64x
• Reorganized and simplified "Building With CCS" section with clearer step-by-step instructions
• Renamed "Information about using EVM boards" to "Using EVM boards" with improved formatting
• Updated documentation references to point to PRU Academy labs for build, load, and debug
 procedures

README.md


9. academy/getting_started_labs/c_and_assembly/solution/readme.md 📝 Documentation +24/-31

Standardize getting started lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed supported combinations table with reference to academy/readme.md
• Added "Validated HW & SW" table with TODO placeholders for processor/hardware/software versions
• Streamlined "Steps to Run the Example" to reference PRU Academy labs instead of detailed CCS
 instructions

academy/getting_started_labs/c_and_assembly/solution/readme.md


10. academy/getting_started_labs/c_and_inline_assembly/solution/readme.md 📝 Documentation +23/-29

Standardize getting started lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed supported combinations table with reference to academy/readme.md
• Added "Validated HW & SW" table with TODO placeholders for processor/hardware/software versions
• Streamlined "Steps to Run the Example" to reference PRU Academy labs instead of detailed CCS
 instructions

academy/getting_started_labs/c_and_inline_assembly/solution/readme.md


11. academy/getting_started_labs/assembly_code/solution/readme.md 📝 Documentation +24/-30

Standardize getting started lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed supported combinations table with reference to academy/readme.md
• Added "Validated HW & SW" table with TODO placeholders for processor/hardware/software versions
• Streamlined "Steps to Run the Example" to reference PRU Academy labs instead of detailed CCS
 instructions

academy/getting_started_labs/assembly_code/solution/readme.md


12. academy/getting_started_labs/c_code/solution/readme.md 📝 Documentation +23/-30

Standardize getting started lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed supported combinations table with reference to academy/readme.md
• Added "Validated HW & SW" table with TODO placeholders for processor/hardware/software versions
• Streamlined "Steps to Run the Example" to reference PRU Academy labs instead of detailed CCS
 instructions

academy/getting_started_labs/c_code/solution/readme.md


13. examples/empty/readme.md 📝 Documentation +23/-28

Standardize example project documentation format

• Replaced detailed supported combinations table with reference to examples/readme.md
• Added "Validated HW & SW" table with TODO placeholders for processor/hardware/software versions
• Added "Overview" section with reference to project creation documentation
• Simplified "Steps to Run the Example" to reference PRU Academy labs

examples/empty/readme.md


14. examples/empty_c/readme.md 📝 Documentation +21/-27

Standardize example project documentation format

• Replaced detailed supported combinations table with reference to examples/readme.md
• Added "Validated HW & SW" table with TODO placeholders for processor/hardware/software versions
• Added "Overview" section with reference to project creation documentation
• Simplified "Steps to Run the Example" to reference PRU Academy labs

examples/empty_c/readme.md


15. examples/spi_loopback/readme.md 📝 Documentation +31/-25

Standardize SPI loopback example documentation format

• Fixed markdown formatting for section headers and tables (inconsistent indentation)
• Replaced detailed supported combinations table with reference to examples/readme.md
• Added "Validated HW & SW" table with processor/hardware/software information
• Maintained existing timing parameters and macro documentation

examples/spi_loopback/readme.md


16. examples/LCD_interface/readme.md 📝 Documentation +36/-8

Standardize LCD interface example documentation format

• Added "Introduction" section header and reorganized content structure
• Added "Supported Combinations" section with reference to examples/readme.md
• Added "Validated HW & SW" table with processor/hardware/software information
• Improved "How to Run" section with clearer step-by-step formatting and explanations

examples/LCD_interface/readme.md


17. academy/mac/mac_c/makefile ⚙️ Configuration changes +106/-0

MAC C example project makefile and build configuration

• New makefile for MAC C example project supporting am62x and am64x processors
• Implements build system with PRU firmware and host code compilation targets
• Includes prebuild checks for processor support and dependency validation
• Defines device-specific build targets for AM62x and AM64x evaluation boards

academy/mac/mac_c/makefile


18. academy/mac/mac_c/README.md 📝 Documentation +52/-0

MAC C example project documentation and usage guide

• New README documenting MAC hardware accelerator C example
• Explains 256 multiply-accumulate operations with 64-bit result accumulation
• References PSSP origin and provides expected result calculation (0x555500)
• Includes supported combinations, validated hardware/software, and running instructions

academy/mac/mac_c/README.md


19. academy/uart/uart_loopback/makefile ✨ Enhancement +100/-0

UART loopback project makefile with build infrastructure

• Added comprehensive makefile for UART loopback project with support for AM62x processor
• Includes prebuild checks for device compatibility and dependency validation
• Defines build targets for PRU firmware and host code compilation
• Implements clean, pru, host, and all build targets with proper messaging

academy/uart/uart_loopback/makefile


20. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec ✨ Enhancement +83/-0

MAC C firmware CCS project spec for AM64x PRU0

• Created CCS project specification for MAC C firmware on AM64x PRU0
• Configured compiler and linker options for PRU0 with SOC_AM64X definitions
• Set up post-build step to generate hex array output for MCU+ integration
• Defined Debug and Release configurations with appropriate build settings

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec


21. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/example.projectspec ✨ Enhancement +83/-0

MAC C firmware CCS project spec for AM64x PRU1

• Created CCS project specification for MAC C firmware on AM64x PRU1
• Configured compiler and linker options for PRU1 with SOC_AM64X definitions
• Set up post-build step to generate hex array output for MCU+ integration
• Defined Debug and Release configurations with appropriate build settings

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/example.projectspec


22. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec ✨ Enhancement +81/-0

UART loopback firmware CCS project spec for AM62x

• Created CCS project specification for UART loopback firmware on AM62x
• Configured compiler and linker options for PRU0 with SOC_AM62X definitions
• Included necessary include paths and compiler flags for UART example
• Defined Debug and Release configurations with appropriate build settings

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec


23. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec ✨ Enhancement +81/-0

MAC C firmware CCS project spec for AM62x PRU0

• Created CCS project specification for MAC C firmware on AM62x PRU0
• Configured compiler and linker options for PRU0 with SOC_AM62X definitions
• Included necessary include paths and compiler flags for MAC example
• Defined Debug and Release configurations with appropriate build settings

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec


24. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/example.projectspec ✨ Enhancement +81/-0

MAC C firmware CCS project spec for AM62x PRU1

• Created CCS project specification for MAC C firmware on AM62x PRU1
• Configured compiler and linker options for PRU1 with SOC_AM62X definitions
• Included necessary include paths and compiler flags for MAC example
• Defined Debug and Release configurations with appropriate build settings

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/example.projectspec


25. examples/custom_frequency_generator/README.md 📝 Documentation +19/-3

Updated README with standard documentation sections

• Added Introduction section with project description
• Added Supported Combinations section with reference to parent readme
• Added Validated HW & SW section with hardware and software version table
• Fixed trailing whitespace and formatting issues

examples/custom_frequency_generator/README.md


26. examples/logic_scope/README.md 📝 Documentation +17/-1

Updated README with standard documentation sections

• Added Introduction section with project overview
• Added Supported Combinations section with reference to parent readme
• Added Validated HW & SW section with hardware and software version table
• Fixed trailing whitespace issues

examples/logic_scope/README.md


27. academy/mac/mac_multiply/readme.md 📝 Documentation +22/-11

Standardized MAC multiply example documentation format

• Removed duplicate Overview section header
• Reformatted Supported Combinations section from table to structured format
• Added Validated HW & SW section with processor and software version table
• Added Steps to Run the Example section with register inspection instructions

academy/mac/mac_multiply/readme.md


28. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile ✨ Enhancement +50/-0

UART loopback firmware makefile for AM62x PRU0

• Created makefile for UART loopback firmware build on AM62x PRU0
• Configured build output name and hex array generation settings
• Set PRU version to 3 for AM62x PRUSS architecture
• Included standard PRU build rules and optional compiler/linker flags

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile


29. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile ✨ Enhancement +50/-0

MAC C firmware makefile for AM62x PRU0

• Created makefile for MAC C firmware build on AM62x PRU0
• Configured build output name and hex array generation settings
• Set PRU version to 3 for AM62x PRUSS architecture
• Included standard PRU build rules and optional compiler/linker flags

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile


30. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile ✨ Enhancement +50/-0

MAC C firmware makefile for AM62x PRU1

• Created makefile for MAC C firmware build on AM62x PRU1
• Configured build output name and hex array generation settings for PRU1
• Set PRU version to 3 for AM62x PRUSS architecture
• Included standard PRU build rules and optional compiler/linker flags

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile


31. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile ✨ Enhancement +48/-0

MAC C firmware makefile for AM64x PRU0

• Created makefile for MAC C firmware build on AM64x PRU0
• Configured build output name and hex array generation for MCU+ projects
• Set PRU version to 4 for AM64x ICSSG architecture
• Included standard PRU build rules and optional compiler/linker flags

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile


32. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile ✨ Enhancement +48/-0

MAC C firmware makefile for AM64x PRU1

• Created makefile for MAC C firmware build on AM64x PRU1
• Configured build output name and hex array generation for MCU+ projects
• Set PRU version to 4 for AM64x ICSSG architecture
• Included standard PRU build rules and optional compiler/linker flags

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile


33. academy/uart/uart_loopback/README.md 📝 Documentation +47/-0

New UART loopback example documentation

• Created comprehensive README for UART loopback example
• Added Introduction, Overview, and Hardware sections describing the example
• Added Supported Combinations and Validated HW & SW sections with version information
• Added Running and Validating section with step-by-step instructions for testing

academy/uart/uart_loopback/README.md


34. academy/crc/crc/readme.md 📝 Documentation +22/-8

Standardized CRC example documentation format

• Reformatted Supported Combinations section from table to structured format
• Added Validated HW & SW section with processor and software version table
• Added Steps to Run the Example section with register inspection instructions
• Improved documentation consistency with other academy examples

academy/crc/crc/readme.md


35. academy/mac/mac/readme.md 📝 Documentation +22/-8

Standardized MAC example documentation format

• Reformatted Supported Combinations section from table to structured format
• Added Validated HW & SW section with processor and software version table
• Added Steps to Run the Example section with register inspection instructions
• Improved documentation consistency with other academy examples

academy/mac/mac/readme.md


36. academy/intc/intc_mcu/readme.md 📝 Documentation +22/-8

Standardized INTC MCU example documentation format

• Reformatted Supported Combinations section from table to structured format
• Added Validated HW & SW section with processor and software version table
• Added Steps to Run the Example section with register inspection instructions
• Improved documentation consistency with other academy examples

academy/intc/intc_mcu/readme.md


37. academy/gpio/gpio_toggle/readme.md 📝 Documentation +21/-8

Standardized GPIO toggle example documentation format

• Reformatted Supported Combinations section from table to structured format
• Added Validated HW & SW section with processor and software version table
• Added Steps to Run the Example section with hardware connection instructions
• Improved documentation consistency with other academy examples

academy/gpio/gpio_toggle/readme.md


38. academy/readme.md 📝 Documentation +10/-2

Updated academy readme with new MAC C and UART examples

• Added clarification that MAC and MAC multiply examples are assembly-based
• Added new mac/mac_c entry for C-based MAC example
• Added new uart/uart_loopback entry for UART peripheral example
• Updated supported processors table with mac_c and uart_loopback rows

academy/readme.md


39. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile_projectspec ✨ Enhancement +16/-0

MAC C firmware CCS project export makefile for AM64x PRU0

• Created makefile for CCS project export on AM64x PRU0
• Configured project build, clean, and export targets for Release profile
• Integrated with CCS Eclipse build system for automated project creation

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile_projectspec


40. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile_projectspec ✨ Enhancement +16/-0

MAC C firmware CCS project export makefile for AM64x PRU1

• Created makefile for CCS project export on AM64x PRU1
• Configured project build, clean, and export targets for Release profile
• Integrated with CCS Eclipse build system for automated project creation

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile_projectspec


41. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec ✨ Enhancement +16/-0

UART loopback firmware CCS project export makefile for AM62x

• Created makefile for CCS project export on AM62x
• Configured project build, clean, and export targets for Release profile
• Integrated with CCS Eclipse build system for automated project creation

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec


42. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec ✨ Enhancement +16/-0

MAC C firmware CCS project export makefile for AM62x PRU0

• Created makefile for CCS project export on AM62x PRU0
• Configured project build, clean, and export targets for Release profile
• Integrated with CCS Eclipse build system for automated project creation

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec


43. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile_projectspec ✨ Enhancement +16/-0

MAC C firmware CCS project export makefile for AM62x PRU1

• Created makefile for CCS project export on AM62x PRU1
• Configured project build, clean, and export targets for Release profile
• Integrated with CCS Eclipse build system for automated project creation

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile_projectspec


44. examples/fft/README.md 📝 Documentation +15/-0

Updated FFT example README with standard sections

• Added Supported Combinations section with reference to parent readme
• Added Validated HW & SW section with processor and software version table
• Improved documentation consistency with other examples

examples/fft/README.md


45. examples/pru_emif/readme.md 📝 Documentation +13/-0

Updated PRU EMIF example readme with standard sections

• Added Supported Combinations section with reference to parent readme
• Added Validated HW & SW section with processor, hardware, and software version table
• Improved documentation consistency with other examples

examples/pru_emif/readme.md


46. academy/makefile ✨ Enhancement +2/-1

Updated academy makefile with new project entries

• Added mac/mac_c to SUBDIRS list for building MAC C example
• Added uart/uart_loopback to SUBDIRS list for building UART loopback example
• Updated makefile to include new ported projects from PSSP

academy/makefile


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Apr 4, 2026

Code Review by Qodo

🐞 Bugs (2)   📘 Rule violations (9)   📎 Requirement gaps (1)   🎨 UX Issues (0)
🐞\ ≡ Correctness (2)
📘\ ☼ Reliability (2) ⚙ Maintainability (7) ⭐ New (4)
📎\ ⚙ Maintainability (1) ⭐ New (1)

Grey Divider


Action required

1. Validated HW & SW TODOs 📎
Description
Multiple project READMEs claim hardware validation but leave the tested hardware/software versions
as TODO, which does not document the actual tested SDK versions for the current changes. This can
mislead users about what environment was truly validated.
Code

academy/crc/crc/readme.md[R28-36]

+## Validated HW & SW
+
+This project was tested on hardware with these software versions:
+
+| Processor | Hardware | Software                                |
+| --------- | -------- | --------------------------------------- |
+| am261x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am263px   | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am263x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
Evidence
PR Compliance ID 1 requires each project README to list the SDK version(s) actually built and tested
on hardware. The updated READMEs add a validation section but leave the required version fields as
TODO (for example, MCU PLUS SDK TODO, OpenPRU TODO).

Project README lists tested SDK versions
academy/crc/crc/readme.md[28-36]
academy/getting_started_labs/c_code/solution/readme.md[13-24]
examples/fft/README.md[17-25]
examples/custom_frequency_generator/README.md[17-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Several project READMEs include a `Validated HW & SW` section but still contain `TODO` placeholders instead of the actual SDK/version(s) that were built and tested on real hardware.

## Issue Context
Compliance requires documenting the *actual* tested SDK versions for the current changes; placeholders are not acceptable.

## Fix Focus Areas
- academy/crc/crc/readme.md[28-36]
- academy/getting_started_labs/c_code/solution/readme.md[13-24]
- examples/fft/README.md[17-25]
- examples/custom_frequency_generator/README.md[17-24]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. OPEN_PRU_PATH CWD-dependent 📘
Description
The new makefiles derive OPEN_PRU_PATH using $(abspath ../../...), which depends on the caller's
working directory and can break includes when invoked from other locations. This violates the
portability requirement for computing repo root relative to the makefile directory.
Code

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile[R1-2]

+export OPEN_PRU_PATH?=$(abspath ../../../../../../..)
+include $(OPEN_PRU_PATH)/imports.mak
Evidence
PR Compliance ID 25 requires deriving the repository root from the makefile's directory (for example
via $(lastword $(MAKEFILE_LIST))). The added makefile sets OPEN_PRU_PATH using a relative
../../... expression wrapped in abspath, which is CWD-dependent.

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile[1-2]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`OPEN_PRU_PATH` is computed using `$(abspath ../../...)`, which can break if the makefile is invoked from a different working directory.

## Issue Context
Compliance requires computing repo-root paths relative to the current makefile location, not the invocation directory.

## Fix Focus Areas
- academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile[1-2]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. UART while loops unbounded 📘
Description
The new UART loopback firmware uses busy-wait while loops with no timeout, which can hang
indefinitely if UART state never changes. This violates the requirement that loops have explicit
termination conditions for deterministic PRU firmware.
Code

academy/uart/uart_loopback/firmware/main.c[R143-151]

+		/* Because we are doing loopback, wait until LSR.DR == 1
+		 * indicating there is data in the RX FIFO */
+		while ((CT_UART.LSR1_bit.DR == 0x0));
+
+		/* Read the value from RBR */
+		buffer[cnt] = CT_UART.RBR_bit.DATA;
+
+		/* Wait for TX FIFO to be empty */
+		while (!((CT_UART.IIR_bit.INTID) == 0x1));
Evidence
PR Compliance ID 4 requires loops to have explicit termination conditions/bounds. The new code polls
hardware status in while (...) ; loops without any timeout or max-iteration bound, creating a
potential infinite loop.

academy/uart/uart_loopback/firmware/main.c[143-151]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
UART polling uses unbounded busy-wait loops (`while (...) ;`) with no timeout.

## Issue Context
On PRU firmware, unbounded loops can break determinism and hang the core if the peripheral never reaches the expected state.

## Fix Focus Areas
- academy/uart/uart_loopback/firmware/main.c[143-151]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (7)
4. Docs use backslashes 📘
Description
Documentation includes Windows-style backslashes in a path example, which is not portable and
violates the requirement to use forward slashes for paths/links. This can confuse users and may
break copy/paste on non-Windows environments.
Code

examples/LCD_interface/readme.md[R57-60]

+1. Clocking, pin-mux configuration and interrupts are specified graphically using
+sysconfig tool and example.syscfg file located in folder
+"\path\to\open-pru\examples\LCD_interface\am243x-lp\r5fss0-0_freertos".
+
Evidence
PR Compliance ID 27 requires paths/links to be portable and use forward slashes. The updated README
includes a backslash-delimited path string.

examples/LCD_interface/readme.md[57-60]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The README uses Windows-style backslashes in an example path.

## Issue Context
Documentation paths must be portable across environments and use forward slashes.

## Fix Focus Areas
- examples/LCD_interface/readme.md[57-60]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. i.e. used 📘
Description
Documentation uses i.e. instead of the prescribed terminology that is. This violates the
required documentation terminology standard.
Code

examples/spi_loopback/readme.md[10]

+All cycle level frequency calculations are based on a 333MHz PRU System clock, which gives 3ns per instruction cycle, i.e $t_{f} = 3ns$
Evidence
PR Compliance ID 18 requires using that is instead of i.e.. The updated SPI loopback README
includes i.e in the timing description line.

examples/spi_loopback/readme.md[10-10]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The SPI loopback README uses `i.e.` which is disallowed terminology.

## Issue Context
Docs/comments must use prescribed terminology (`that is`, `for example`, `and so on`).

## Fix Focus Areas
- examples/spi_loopback/readme.md[10-10]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. TODO markers in READMEs 📘
Description
New documentation introduces multiple TODO placeholders, which violates the requirement to use
only FIXME markers for pending work. This reduces searchability/standardization of pending-work
annotations across the repo.
Code

academy/getting_started_labs/assembly_code/solution/readme.md[R18-25]

+| Processor | Hardware | Software                                |
+| --------- | -------- | --------------------------------------- |
+| am243x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am261x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am263x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am263px   | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am62x     | TODO     | OpenPRU TODO                            |
+| am64x     | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
Evidence
PR Compliance ID 25 forbids TODO markers and requires using only FIXME for pending work. The
added/updated READMEs include multiple TODO strings in the new “Validated HW & SW” tables.

academy/getting_started_labs/assembly_code/solution/readme.md[18-25]
academy/crc/crc/readme.md[32-36]
examples/empty/readme.md[20-25]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New/updated documentation contains `TODO` placeholders, but the repository standard requires using only `FIXME` markers for pending work.
## Issue Context
Several “Validated HW & SW” tables were added with placeholder values like `TODO` and `MCU PLUS SDK TODO`.
## Fix Focus Areas
- academy/getting_started_labs/assembly_code/solution/readme.md[18-25]
- academy/crc/crc/readme.md[32-36]
- examples/empty/readme.md[20-25]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. linker.cmd missing TI copyright 📘
Description
New linker command files include a filename header but omit the required Texas Instruments copyright
statement. This creates a licensing/traceability compliance gap for newly added source files.
Code

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[R1-6]

+/*
+ * AM62x_PRU0.cmd
+ *
+ * Example Linker command file for linking programs built with the C compiler
+ * on AM62x PRU0 cores
+ */
Evidence
PR Compliance ID 20 requires new source files to include a file-name header and a TI copyright
statement. The added linker.cmd files have a brief header but no TI copyright statement.

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New `linker.cmd` files lack the required Texas Instruments copyright statement.
## Issue Context
These files were added as part of new example ports and should carry the standard TI copyright header.
## Fix Focus Areas
- academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
- academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


8. main.c header missing filename 📘
Description
New C firmware files include a TI copyright/license block but do not include a file-name header as
required. This reduces traceability and violates the mandated header format.
Code

academy/uart/uart_loopback/firmware/main.c[R1-4]

+/*
+ * Copyright (C) 2024-2024 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ *
Evidence
PR Compliance ID 20 requires a header that denotes the file name plus the TI copyright statement.
The new main.c files start with a copyright/license block but do not denote the file name in the
header.

academy/uart/uart_loopback/firmware/main.c[1-4]
academy/mac/mac_c/firmware/main.c[1-4]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New C sources include the TI license but not a file-name header line.
## Issue Context
The compliance checklist requires both (1) a file name header and (2) a TI copyright statement.
## Fix Focus Areas
- academy/uart/uart_loopback/firmware/main.c[1-4]
- academy/mac/mac_c/firmware/main.c[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


9. Tabs in main.c 📘
Description
New C source files include tab characters in the header/comment formatting, violating the whitespace
standard that disallows tabs. This can lead to inconsistent formatting across tooling and editors.
Code

academy/mac/mac_c/firmware/main.c[R8-14]

+ *
+ *	* Redistributions of source code must retain the above copyright
+ *	  notice, this list of conditions and the following disclaimer.
+ *
+ *	* Redistributions in binary form must reproduce the above copyright
+ *	  notice, this list of conditions and the following disclaimer in the
+ *	  documentation and/or other materials provided with the
Evidence
PR Compliance ID 19 requires using spaces (no tabs) for indentation/whitespace. The newly added
firmware C files contain tab characters (for example in the license bullet formatting).

academy/mac/mac_c/firmware/main.c[8-15]
academy/uart/uart_loopback/firmware/main.c[8-15]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Tab characters are present in new C source files, violating the whitespace standard.
## Issue Context
The standard requires spaces-only indentation/whitespace for source and documentation.
## Fix Focus Areas
- academy/mac/mac_c/firmware/main.c[8-15]
- academy/uart/uart_loopback/firmware/main.c[8-15]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


10. Broken AM263x link 🐞
Description
README.md’s AM263x MCU+ SDK documentation link is missing the closing ')', breaking the markdown
link rendering for that bullet (and potentially affecting subsequent markdown parsing in some
renderers).
Code

README.md[R123-127]

+  - [AM64x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/CCS_PROJECTS_PAGE.html)
+  - [AM243x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/CCS_PROJECTS_PAGE.html)
+  - [AM261x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM261X/latest/exports/docs/api_guide_am261x/CCS_PROJECTS_PAGE.html)
+  - [AM263Px](https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/CCS_PROJECTS_PAGE.html)
+  - [AM263x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/CCS_PROJECTS_PAGE.html
Evidence
The AM263x link line is syntactically incomplete (no closing parenthesis), unlike the other links in
the same list, so it will not render as a clickable link.

README.md[121-129]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The AM263x markdown link in the root README is missing a closing `)`.
### Issue Context
This breaks link rendering in the main repository README.
### Fix Focus Areas
- README.md[123-127]
### Suggested change
Add the missing `)` at the end of the AM263x link so it matches the other bullets.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

11. Trailing whitespace in README 📘
Description
A newly added documentation line contains trailing whitespace, violating the documentation style
requirement to remove trailing whitespace. This can cause noisy diffs and formatting
inconsistencies.
Code

README.md[122]

+  MCU+ SDK documentation: **Developer Guides > Using SDK with CCS Projects** 
Evidence
PR Compliance ID 30 requires removing trailing whitespace. The updated root README.md includes at
least one added line that ends with a trailing space.

README.md[121-123]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Trailing whitespace exists on an updated README line.
## Issue Context
Trailing whitespace causes unnecessary diffs and violates the repo documentation style standard.
## Fix Focus Areas
- README.md[121-123]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


12. __R31 declared as uint8 🐞
Description
academy/mac/mac_c/firmware/main.c declares the PRU register variable __R31 as uint8_t, which
only represents the low 8 bits; if used (as implied by the comment), this would truncate
reads/writes and break any logic relying on higher R31 bits (e.g., interrupt flag bits).
Code

academy/mac/mac_c/firmware/main.c[R41-42]

+/* R31 is used to generate the "I'm done" back to the ARM */
+volatile register uint8_t __R31;
Evidence
The new MAC C firmware declares __R31 as an 8-bit type, while other PRU firmware in this repo
declares it as 32-bit and uses it with 32-bit bitmasks (e.g., HOST_INT), demonstrating that higher
bits are expected to be representable.

academy/mac/mac_c/firmware/main.c[41-43]
examples/rpmsg_echo_linux/firmware/main.c[14-15]
examples/rpmsg_echo_linux/firmware/main.c[40-44]
examples/rpmsg_echo_linux/firmware/main.c[102-105]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`__R31` is declared as `volatile register uint8_t __R31;` which only models the low 8 bits of the PRU R31 register.
### Issue Context
Other PRU firmware in this repository declares `__R31` as a 32-bit type and uses bitmasks that can rely on higher bits.
### Fix Focus Areas
- academy/mac/mac_c/firmware/main.c[41-43]
### Suggested change
Change the declaration to a 32-bit type, e.g.:

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Grey Divider

Previous review results

Review updated until commit 622958a

Results up to commit 34e250f


🐞 Bugs (2) 📘 Rule violations (5) 📎 Requirement gaps (0) 🎨 UX Issues (0)

Grey Divider
Action required
1. TODO markers in READMEs 📘 Rule violation ⚙ Maintainability
Description
New documentation introduces multiple TODO placeholders, which violates the requirement to use
only FIXME markers for pending work. This reduces searchability/standardization of pending-work
annotations across the repo.
Code

academy/getting_started_labs/assembly_code/solution/readme.md[R18-25]

+| Processor | Hardware | Software                                |
+| --------- | -------- | --------------------------------------- |
+| am243x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am261x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am263x    | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am263px   | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
+| am62x     | TODO     | OpenPRU TODO                            |
+| am64x     | TODO     | MCU PLUS SDK TODO, OpenPRU TODO         |
Evidence
PR Compliance ID 25 forbids TODO markers and requires using only FIXME for pending work. The
added/updated READMEs include multiple TODO strings in the new “Validated HW & SW” tables.

academy/getting_started_labs/assembly_code/solution/readme.md[18-25]
academy/crc/crc/readme.md[32-36]
examples/empty/readme.md[20-25]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New/updated documentation contains `TODO` placeholders, but the repository standard requires using only `FIXME` markers for pending work.

## Issue Context
Several “Validated HW & SW” tables were added with placeholder values like `TODO` and `MCU PLUS SDK TODO`.

## Fix Focus Areas
- academy/getting_started_labs/assembly_code/solution/readme.md[18-25]
- academy/crc/crc/readme.md[32-36]
- examples/empty/readme.md[20-25]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. linker.cmd missing TI copyright 📘 Rule violation ⚙ Maintainability
Description
New linker command files include a filename header but omit the required Texas Instruments copyright
statement. This creates a licensing/traceability compliance gap for newly added source files.
Code

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[R1-6]

+/*
+ * AM62x_PRU0.cmd
+ *
+ * Example Linker command file for linking programs built with the C compiler
+ * on AM62x PRU0 cores
+ */
Evidence
PR Compliance ID 20 requires new source files to include a file-name header and a TI copyright
statement. The added linker.cmd files have a brief header but no TI copyright statement.

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New `linker.cmd` files lack the required Texas Instruments copyright statement.

## Issue Context
These files were added as part of new example ports and should carry the standard TI copyright header.

## Fix Focus Areas
- academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
- academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. main.c header missing filename 📘 Rule violation ⚙ Maintainability
Description
New C firmware files include a TI copyright/license block but do not include a file-name header as
required. This reduces traceability and violates the mandated header format.
Code

academy/uart/uart_loopback/firmware/main.c[R1-4]

+/*
+ * Copyright (C) 2024-2024 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ *
Evidence
PR Compliance ID 20 requires a header that denotes the file name plus the TI copyright statement.
The new main.c files start with a copyright/license block but do not denote the file name in the
header.

academy/uart/uart_loopback/firmware/main.c[1-4]
academy/mac/mac_c/firmware/main.c[1-4]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New C sources include the TI license but not a file-name header line.

## Issue Context
The compliance checklist requires both (1) a file name header and (2) a TI copyright statement.

## Fix Focus Areas
- academy/uart/uart_loopback/firmware/main.c[1-4]
- academy/mac/mac_c/firmware/main.c[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (2)
4. Tabs in main.c 📘 Rule violation ⚙ Maintainability
Description
New C source files include tab characters in the header/comment formatting, violating the whitespace
standard that disallows tabs. This can lead to inconsistent formatting across tooling and editors.
Code

academy/mac/mac_c/firmware/main.c[R8-14]

+ *
+ *	* Redistributions of source code must retain the above copyright
+ *	  notice, this list of conditions and the following disclaimer.
+ *
+ *	* Redistributions in binary form must reproduce the above copyright
+ *	  notice, this list of conditions and the following disclaimer in the
+ *	  documentation and/or other materials provided with the
Evidence
PR Compliance ID 19 requires using spaces (no tabs) for indentation/whitespace. The newly added
firmware C files contain tab characters (for example in the license bullet formatting).

academy/mac/mac_c/firmware/main.c[8-15]
academy/uart/uart_loopback/firmware/main.c[8-15]
Best Practice: Repository guidelines

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Tab characters are present in new C source files, violating the whitespace standard.

## Issue Context
The standard requires spaces-only indentation/whitespace for source and documentation.

## Fix Focus Areas
- academy/mac/mac_c/firmware/main.c[8-15]
- academy/uart/uart_loopback/firmware/main.c[8-15]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Broken AM263x link 🐞 Bug ≡ Correctness
Description
README.md’s AM263x MCU+ SDK documentation link is missing the closing ')', breaking the markdown
link rendering for that bullet (and potentially affecting subsequent markdown parsing in some
renderers).
Code

README.md[R123-127]

+  - [AM64x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/CCS_PROJECTS_PAGE.html)
+  - [AM243x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/CCS_PROJECTS_PAGE.html)
+  - [AM261x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM261X/latest/exports/docs/api_guide_am261x/CCS_PROJECTS_PAGE.html)
+  - [AM263Px](https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/CCS_PROJECTS_PAGE.html)
+  - [AM263x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/CCS_PROJECTS_PAGE.html
Evidence
The AM263x link line is syntactically incomplete (no closing parenthesis), unlike the other links in
the same list, so it will not render as a clickable link.

README.md[121-129]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The AM263x markdown link in the root README is missing a closing `)`.

### Issue Context
This breaks link rendering in the main repository README.

### Fix Focus Areas
- README.md[123-127]

### Suggested change
Add the missing `)` at the end of the AM263x link so it matches the other bullets.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended
6. Trailing whitespace in README 📘 Rule violation ⚙ Maintainability
Description
A newly added documentation line contains trailing whitespace, violating the documentation style
requirement to remove trailing whitespace. This can cause noisy diffs and formatting
inconsistencies.
Code

README.md[122]

+  MCU+ SDK documentation: **Developer Guides > Using SDK with CCS Projects** 
Evidence
PR Compliance ID 30 requires removing trailing whitespace. The updated root README.md includes at
least one added line that ends with a trailing space.

README.md[121-123]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Trailing whitespace exists on an updated README line.

## Issue Context
Trailing whitespace causes unnecessary diffs and violates the repo documentation style standard.

## Fix Focus Areas
- README.md[121-123]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. __R31 declared as uint8 🐞 Bug ≡ Correctness
Description
academy/mac/mac_c/firmware/main.c declares the PRU register variable __R31 as uint8_t, which
only represents the low 8 bits; if used (as implied by the comment), this would truncate
reads/writes and break any logic relying on higher R31 bits (e.g., interrupt flag bits).
Code

academy/mac/mac_c/firmware/main.c[R41-42]

+/* R31 is used to generate the "I'm done" back to the ARM */
+volatile register uint8_t __R31;
Evidence
The new MAC C firmware declares __R31 as an 8-bit type, while other PRU firmware in this repo
declares it as 32-bit and uses it with 32-bit bitmasks (e.g., HOST_INT), demonstrating that higher
bits are expected to be representable.

academy/mac/mac_c/firmware/main.c[41-43]
examples/rpmsg_echo_linux/firmware/main.c[14-15]
examples/rpmsg_echo_linux/firmware/main.c[40-44]
examples/rpmsg_echo_linux/firmware/main.c[102-105]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`__R31` is declared as `volatile register uint8_t __R31;` which only models the low 8 bits of the PRU R31 register.

### Issue Context
Other PRU firmware in this repository declares `__R31` as a 32-bit type and uses bitmasks that can rely on higher bits.

### Fix Focus Areas
- academy/mac/mac_c/firmware/main.c[41-43]

### Suggested change
Change the declaration to a 32-bit type, e.g.:
```c
volatile register uint32_t __R31;
```
(or remove it entirely if the example does not actually use R31).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider Grey Divider

Qodo Logo

Comment on lines +18 to +25
| Processor | Hardware | Software |
| --------- | -------- | --------------------------------------- |
| am243x | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
| am261x | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
| am263x | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
| am263px | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
| am62x | TODO | OpenPRU TODO |
| am64x | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. todo markers in readmes 📘 Rule violation ⚙ Maintainability

New documentation introduces multiple TODO placeholders, which violates the requirement to use
only FIXME markers for pending work. This reduces searchability/standardization of pending-work
annotations across the repo.
Agent Prompt
## Issue description
New/updated documentation contains `TODO` placeholders, but the repository standard requires using only `FIXME` markers for pending work.

## Issue Context
Several “Validated HW & SW” tables were added with placeholder values like `TODO` and `MCU PLUS SDK TODO`.

## Fix Focus Areas
- academy/getting_started_labs/assembly_code/solution/readme.md[18-25]
- academy/crc/crc/readme.md[32-36]
- examples/empty/readme.md[20-25]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +1 to +6
/*
* AM62x_PRU0.cmd
*
* Example Linker command file for linking programs built with the C compiler
* on AM62x PRU0 cores
*/
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. linker.cmd missing ti copyright 📘 Rule violation ⚙ Maintainability

New linker command files include a filename header but omit the required Texas Instruments copyright
statement. This creates a licensing/traceability compliance gap for newly added source files.
Agent Prompt
## Issue description
New `linker.cmd` files lack the required Texas Instruments copyright statement.

## Issue Context
These files were added as part of new example ports and should carry the standard TI copyright header.

## Fix Focus Areas
- academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]
- academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd[1-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +1 to +4
/*
* Copyright (C) 2024-2024 Texas Instruments Incorporated - http://www.ti.com/
*
*
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. main.c header missing filename 📘 Rule violation ⚙ Maintainability

New C firmware files include a TI copyright/license block but do not include a file-name header as
required. This reduces traceability and violates the mandated header format.
Agent Prompt
## Issue description
New C sources include the TI license but not a file-name header line.

## Issue Context
The compliance checklist requires both (1) a file name header and (2) a TI copyright statement.

## Fix Focus Areas
- academy/uart/uart_loopback/firmware/main.c[1-4]
- academy/mac/mac_c/firmware/main.c[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +8 to +14
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

4. Tabs in main.c 📘 Rule violation ⚙ Maintainability

New C source files include tab characters in the header/comment formatting, violating the whitespace
standard that disallows tabs. This can lead to inconsistent formatting across tooling and editors.
Agent Prompt
## Issue description
Tab characters are present in new C source files, violating the whitespace standard.

## Issue Context
The standard requires spaces-only indentation/whitespace for source and documentation.

## Fix Focus Areas
- academy/mac/mac_c/firmware/main.c[8-15]
- academy/uart/uart_loopback/firmware/main.c[8-15]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread README.md
Comment on lines +123 to +127
- [AM64x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/CCS_PROJECTS_PAGE.html)
- [AM243x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/CCS_PROJECTS_PAGE.html)
- [AM261x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM261X/latest/exports/docs/api_guide_am261x/CCS_PROJECTS_PAGE.html)
- [AM263Px](https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/CCS_PROJECTS_PAGE.html)
- [AM263x](https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/CCS_PROJECTS_PAGE.html
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

5. Broken am263x link 🐞 Bug ≡ Correctness

README.md’s AM263x MCU+ SDK documentation link is missing the closing ')', breaking the markdown
link rendering for that bullet (and potentially affecting subsequent markdown parsing in some
renderers).
Agent Prompt
### Issue description
The AM263x markdown link in the root README is missing a closing `)`.

### Issue Context
This breaks link rendering in the main repository README.

### Fix Focus Areas
- README.md[123-127]

### Suggested change
Add the missing `)` at the end of the AM263x link so it matches the other bullets.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

/* Perform numMacs MAC operations */
for (i = 0; i < numMacs; i++) {
result += (uint64_t)buf[i].op1 * (uint64_t)buf[i].op2;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mac firmware based example uses broadside accelerator to do multiplication

But mac_c example, multiplication code ( (uint64_t)buf[i].op1 * (uint64_t)buf[i].op2 ) code in main.c file will get split into series of additions in generated assembly file, should we consider documenting this ?

Comment thread academy/crc/crc/readme.md
This project was tested on hardware with these software versions:

| Processor | Hardware | Software |
| --------- | -------- | --------------------------------------- |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we plan to replace these TODO with specific hardware and MCU PLU SDK verision, OpenPRU version at which this example is supported before merging this PR ?

Import PRU Software Support Package (PSSP) project
https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am62x/PRU_MAC_Multiply_Accum
https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am64x/PRU_MAC_Multiply_Accum

into the OpenPRU repository.

This is a test of new documentation to guide AI agents to perform specific
actions in the OpenPRU project. This project tested the action
"create a new OpenPRU project", when the project does not require any pinmux,
SysConfig, etc.

The project creation was done by claude code. However, I had to code quite a few
manual fixes after the initial project creation.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
Import PRU Software Support Package (PSSP) project
https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am62x/PRU_Hardware_UART

into the OpenPRU repository.

This is a test of new documentation to guide AI agents to perform specific
actions in the OpenPRU project. This project tested the action
"create a new OpenPRU project", when the project does not require any pinmux,
SysConfig, etc.

The project creation was done by claude code. However, I had to code quite a few
manual fixes after the initial project creation.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
Add the new mac_c and uart projects to the academy/makefile &
academy/readme.md files.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
Update the readme based on the latest documentation and code.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
These projects are used as the template for most new projects created in
the OpenPRU repository. Update the README template to look the way we expect
new project README files to look.

Additionally, point to central documentation for creating a new project or
building a project, instead of replicating that information per-project.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
Standardize the README format to match examples/empty.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
Standardize the README format to match examples/empty.

Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
@nsaulnier-ti nsaulnier-ti force-pushed the a0226750_ai_import_pssp branch from 34e250f to 622958a Compare April 8, 2026 23:21
@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

Port UART and MAC C examples from PSSP and update all repository documentation

✨ Enhancement 📝 Documentation

Grey Divider

Walkthroughs

Description
• Port HW UART loopback project from PRU Software Support Package (PSSP) with firmware
  implementation for AM62x processor
• Port MAC (Multiply-Accumulate) C code example from PSSP with support for AM62x and AM64x
  processors
• Add comprehensive build configuration files (makefiles, linker scripts, CCS project
  specifications) for both new projects across multiple processor variants
• Standardize and update all README files across the repository to align with OpenPRU v2026.01.00
• Add "Training" section to main README with links to PRU Academy resources
• Improve build instructions documentation with dedicated "Building MCU+ projects in CCS" subsection
• Standardize documentation format across all academy labs and examples with consistent "Validated
  HW & SW" sections
• Update academy project registry and build system to include new MAC C and UART loopback projects
Diagram
flowchart LR
  PSSP["PSSP Examples<br/>UART & MAC"]
  UART["UART Loopback<br/>Firmware"]
  MAC["MAC C<br/>Firmware"]
  BUILD["Build Config<br/>Makefiles & Linker"]
  DOCS["README Updates<br/>Standardization"]
  REGISTRY["Academy Registry<br/>& Build System"]
  
  PSSP -->|"Port"| UART
  PSSP -->|"Port"| MAC
  UART -->|"Configure"| BUILD
  MAC -->|"Configure"| BUILD
  BUILD -->|"Document"| DOCS
  UART -->|"Register"| REGISTRY
  MAC -->|"Register"| REGISTRY
  DOCS -->|"Update"| REGISTRY
Loading

Grey Divider

File Changes

1. academy/uart/uart_loopback/firmware/main.c ✨ Enhancement +161/-0

PRU UART loopback firmware implementation in C

• New UART loopback firmware implementation for PRU cores
• Initializes PRU UART at 115200 baud with FIFO and loopback mode enabled
• Sends "Hello!" message through UART and receives it back in loopback mode
• Demonstrates UART register configuration and data transmission/reception

academy/uart/uart_loopback/firmware/main.c


2. academy/mac/mac_c/firmware/main.c ✨ Enhancement +97/-0

PRU MAC hardware accelerator C firmware example

• New MAC (Multiply-Accumulate) example firmware in C language
• Allocates 256 pairs of 32-bit operands in PRU Data RAM
• Performs 256 multiply-accumulate operations with 64-bit result accumulation
• Ported from PRU Software Support Package (PSSP) example

academy/mac/mac_c/firmware/main.c


3. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +100/-0

AM64x PRU1 linker configuration for C compilation

• New linker command file for AM64x PRU1 core compilation
• Defines memory layout for PRU instruction RAM, data RAM, shared RAM, and peripherals
• Maps sections (.text, .bss, .data, etc.) to appropriate memory regions
• Includes constant register definitions for CREGISTER assignments

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/linker.cmd


View more (43)
4. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +99/-0

AM64x PRU0 linker configuration for C compilation

• New linker command file for AM64x PRU0 core compilation
• Defines memory layout for PRU instruction RAM, data RAM, shared RAM, and peripherals
• Maps sections (.text, .bss, .data, etc.) to appropriate memory regions
• Includes constant register definitions for CREGISTER assignments

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/linker.cmd


5. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +90/-0

AM62x PRU0 linker configuration for C compilation

• New linker command file for AM62x PRU0 core compilation
• Defines memory layout for PRU instruction RAM, data RAM, shared RAM, and peripherals
• Maps sections (.text, .bss, .data, etc.) to appropriate memory regions
• Includes constant register definitions for CREGISTER assignments

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd


6. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +90/-0

AM62x PRU0 linker configuration for C compilation

• New linker command file for AM62x PRU0 core compilation
• Defines memory layout for PRU instruction RAM, data RAM, shared RAM, and peripherals
• Maps sections (.text, .bss, .data, etc.) to appropriate memory regions
• Includes constant register definitions for CREGISTER assignments

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/linker.cmd


7. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/linker.cmd ⚙️ Configuration changes +90/-0

AM62x PRU1 linker configuration for C compilation

• New linker command file for AM62x PRU1 core compilation
• Defines memory layout for PRU instruction RAM, data RAM, shared RAM, and peripherals
• Maps sections (.text, .bss, .data, etc.) to appropriate memory regions
• Includes constant register definitions for CREGISTER assignments

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/linker.cmd


8. README.md 📝 Documentation +50/-32

Update README with training resources and build instructions

• Added new "Training" section with links to PRU Academy resources for AM243x and AM64x
• Reorganized and simplified "Building With CCS" section with clearer step-by-step instructions
• Added new "Building MCU+ projects in CCS" subsection with MCU+ specific guidance
• Renamed "Information about using EVM boards" to "Using EVM boards" and added clarification about
 EVM signal availability
• Updated "Creating a new OpenPRU project" section with references to PRU Academy labs
• Improved line wrapping and formatting for better readability

README.md


9. academy/getting_started_labs/c_and_assembly/solution/readme.md 📝 Documentation +24/-31

Standardize training lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed "Supported Combinations" table with reference to academy/readme.md
• Added "Validated HW & SW" section with TODO placeholders for processor/software versions
• Replaced detailed CCS and makefile build steps with references to PRU Academy labs
• Removed redundant "Writing PRU code" section

academy/getting_started_labs/c_and_assembly/solution/readme.md


10. academy/getting_started_labs/c_and_inline_assembly/solution/readme.md 📝 Documentation +23/-29

Standardize training lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed "Supported Combinations" table with reference to academy/readme.md
• Added "Validated HW & SW" section with TODO placeholders for processor/software versions
• Replaced detailed CCS and makefile build steps with references to PRU Academy labs
• Removed redundant "Writing PRU code" section

academy/getting_started_labs/c_and_inline_assembly/solution/readme.md


11. academy/getting_started_labs/assembly_code/solution/readme.md 📝 Documentation +24/-30

Standardize training lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed "Supported Combinations" table with reference to academy/readme.md
• Added "Validated HW & SW" section with TODO placeholders for processor/software versions
• Replaced detailed CCS and makefile build steps with references to PRU Academy labs
• Removed redundant "Writing PRU code" section

academy/getting_started_labs/assembly_code/solution/readme.md


12. academy/getting_started_labs/c_code/solution/readme.md 📝 Documentation +23/-30

Standardize training lab documentation format

• Simplified introduction to describe as training lab instead of getting started point
• Replaced detailed "Supported Combinations" table with reference to academy/readme.md
• Added "Validated HW & SW" section with TODO placeholders for processor/software versions
• Replaced detailed CCS and makefile build steps with references to PRU Academy labs
• Removed redundant "Writing PRU code" section

academy/getting_started_labs/c_code/solution/readme.md


13. examples/empty/readme.md 📝 Documentation +23/-28

Standardize example documentation format

• Replaced detailed "Supported Combinations" table with reference to examples/readme.md
• Added "Validated HW & SW" section with TODO placeholders for processor/software versions
• Replaced detailed CCS and makefile build steps with reference to PRU Academy labs
• Added "Overview" section with reference to project creation documentation
• Simplified "Steps to Run the Example" to reference PRU Academy labs

examples/empty/readme.md


14. examples/empty_c/readme.md 📝 Documentation +21/-27

Standardize example documentation format

• Replaced detailed "Supported Combinations" table with reference to examples/readme.md
• Added "Validated HW & SW" section with TODO placeholders for processor/software versions
• Replaced detailed CCS and makefile build steps with reference to PRU Academy labs
• Added "Overview" section with reference to project creation documentation
• Simplified "Steps to Run the Example" to reference PRU Academy labs

examples/empty_c/readme.md


15. examples/spi_loopback/readme.md 📝 Documentation +31/-25

Standardize SPI loopback example documentation

• Fixed markdown formatting for section headers and tables
• Replaced detailed "Supported Combinations" table with reference to examples/readme.md
• Added "Validated HW & SW" section with processor and software version information
• Improved readability by adjusting indentation and spacing

examples/spi_loopback/readme.md


16. examples/LCD_interface/readme.md 📝 Documentation +36/-8

Standardize LCD interface example documentation

• Added "Introduction" section header and reorganized content
• Added "Supported Combinations" section with reference to examples/readme.md
• Added "Validated HW & SW" section with processor and software version information
• Improved "How to Run" section with better formatting and step-by-step clarity
• Enhanced readability with better line breaks and section organization

examples/LCD_interface/readme.md


17. academy/mac/mac_c/makefile ⚙️ Configuration changes +106/-0

MAC C example project makefile configuration

• New makefile for MAC C example project supporting am62x and am64x processors
• Defines build targets for PRU firmware compilation with device-specific paths
• Implements prebuild checks for processor support and dependencies
• Provides make targets for all, pru, host, and clean operations

academy/mac/mac_c/makefile


18. academy/mac/mac_c/README.md 📝 Documentation +52/-0

MAC C example project documentation

• New README documenting MAC (Multiply-Accumulate) C firmware example
• Explains PRU MAC hardware accelerator usage with 256 operand pairs
• Provides supported processor combinations and validated hardware/software versions
• Includes running and validation steps with expected result calculation
• References PRU Getting Started Labs for detailed build and debug procedures

academy/mac/mac_c/README.md


19. academy/uart/uart_loopback/makefile ⚙️ Configuration changes +100/-0

UART loopback project build configuration

• New makefile for UART loopback project with build configuration for AM62x processor
• Includes prebuild checks for device compatibility and dependency validation
• Defines PRU firmware and host code build targets with clean functionality
• Specifies AM62x-SK as the supported processor with PRUSS0 PRU0 core

academy/uart/uart_loopback/makefile


20. academy/uart/uart_loopback/README.md 📝 Documentation +47/-0

UART loopback example documentation

• New README documenting UART loopback example ported from PRU Software Support Package
• Includes introduction, overview, and hardware requirements sections
• Provides validated hardware/software versions and step-by-step running instructions
• Specifies no external connections required due to internal loopback mode

academy/uart/uart_loopback/README.md


21. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile ⚙️ Configuration changes +50/-0

UART loopback AM62x firmware makefile

• New makefile for AM62x-SK UART loopback PRU firmware build
• Configures PRU version 3 (PRUSS, PRU-ICSS) with expected device AM62x
• Sets up compiler and linker flags with standard include paths and libraries
• Defines output name and hex array generation for MCU+ projects

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile


22. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec ⚙️ Configuration changes +81/-0

UART loopback AM62x CCS project specification

• New CCS project specification for UART loopback AM62x-SK PRU0 firmware
• Configures compiler with PRU0, SLICE0, and SOC_AM62X definitions
• Sets up linker options with stack/heap sizes and library dependencies
• Includes Debug and Release configurations with post-build hex array generation

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec


23. academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec ⚙️ Configuration changes +16/-0

UART loopback CCS project build automation

• New makefile for CCS project build automation of UART loopback firmware
• Provides targets for building, cleaning, and exporting CCS projects
• Uses CCS Eclipse command-line interface for project management
• Supports Release and Debug profile configurations

academy/uart/uart_loopback/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec


24. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile ⚙️ Configuration changes +50/-0

MAC C AM62x PRU0 firmware makefile

• New makefile for AM62x-SK MAC C PRU0 firmware build
• Configures PRU version 3 with AM62x device and standard build options
• Sets up compiler flags with PRU0, SLICE0, and SOC_AM62X definitions
• Defines hex array output for MCU+ projects with PRU0Firmware prefix

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile


25. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec ⚙️ Configuration changes +81/-0

MAC C AM62x PRU0 CCS project specification

• New CCS project specification for MAC C AM62x-SK PRU0 firmware
• Configures compiler with PRU0, SLICE0, and SOC_AM62X definitions
• Sets up linker options with stack/heap sizes and library dependencies
• Includes Debug and Release configurations for project building

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/example.projectspec


26. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec ⚙️ Configuration changes +16/-0

MAC C AM62x PRU0 CCS project build automation

• New makefile for CCS project build automation of MAC C PRU0 firmware
• Provides targets for building, cleaning, and exporting CCS projects
• Uses CCS Eclipse command-line interface with Release/Debug profiles
• Enables automated project creation from projectspec file

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile_projectspec


27. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile ⚙️ Configuration changes +50/-0

MAC C AM62x PRU1 firmware makefile

• New makefile for AM62x-SK MAC C PRU1 firmware build
• Configures PRU version 3 with AM62x device and standard build options
• Sets up compiler flags with PRU1, SLICE1, and SOC_AM62X definitions
• Defines hex array output for MCU+ projects with PRU1Firmware prefix

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile


28. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/example.projectspec ⚙️ Configuration changes +81/-0

MAC C AM62x PRU1 CCS project specification

• New CCS project specification for MAC C AM62x-SK PRU1 firmware
• Configures compiler with PRU1, SLICE1, and SOC_AM62X definitions
• Sets up linker options with stack/heap sizes and library dependencies
• Includes Debug and Release configurations for project building

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/example.projectspec


29. academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile_projectspec ⚙️ Configuration changes +16/-0

MAC C AM62x PRU1 CCS project build automation

• New makefile for CCS project build automation of MAC C PRU1 firmware
• Provides targets for building, cleaning, and exporting CCS projects
• Uses CCS Eclipse command-line interface with Release/Debug profiles
• Enables automated project creation from projectspec file

academy/mac/mac_c/firmware/am62x-sk/pruss0_pru1_fw/ti-pru-cgt/makefile_projectspec


30. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile ⚙️ Configuration changes +48/-0

MAC C AM64x PRU0 firmware makefile

• New makefile for AM64x-EVM MAC C PRU0 firmware build
• Configures PRU version 4 (PRU_ICSSG) with AM64x device
• Sets up compiler flags with PRU0, SLICE0, and SOC_AM64X definitions
• Defines hex array output for MCU+ projects with PRU0Firmware prefix

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile


31. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec ⚙️ Configuration changes +83/-0

MAC C AM64x PRU0 CCS project specification

• New CCS project specification for MAC C AM64x-EVM PRU0 firmware
• Configures compiler with PRU0, SLICE0, and SOC_AM64X definitions
• Sets up linker options with stack/heap sizes and library dependencies
• Includes Debug and Release configurations with post-build hex array generation

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec


32. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile_projectspec ⚙️ Configuration changes +16/-0

MAC C AM64x PRU0 CCS project build automation

• New makefile for CCS project build automation of MAC C AM64x PRU0 firmware
• Provides targets for building, cleaning, and exporting CCS projects
• Uses CCS Eclipse command-line interface with Release/Debug profiles
• Enables automated project creation from projectspec file

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile_projectspec


33. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile ⚙️ Configuration changes +48/-0

MAC C AM64x PRU1 firmware makefile

• New makefile for AM64x-EVM MAC C PRU1 firmware build
• Configures PRU version 4 (PRU_ICSSG) with AM64x device
• Sets up compiler flags with PRU1, SLICE1, and SOC_AM64X definitions
• Defines hex array output for MCU+ projects with PRU1Firmware prefix

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile


34. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/example.projectspec ⚙️ Configuration changes +83/-0

MAC C AM64x PRU1 CCS project specification

• New CCS project specification for MAC C AM64x-EVM PRU1 firmware
• Configures compiler with PRU1, SLICE1, and SOC_AM64X definitions
• Sets up linker options with stack/heap sizes and library dependencies
• Includes Debug and Release configurations with post-build hex array generation

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/example.projectspec


35. academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile_projectspec ⚙️ Configuration changes +16/-0

MAC C AM64x PRU1 CCS project build automation

• New makefile for CCS project build automation of MAC C AM64x PRU1 firmware
• Provides targets for building, cleaning, and exporting CCS projects
• Uses CCS Eclipse command-line interface with Release/Debug profiles
• Enables automated project creation from projectspec file

academy/mac/mac_c/firmware/am64x-evm/icss_g0_pru1_fw/ti-pru-cgt/makefile_projectspec


36. academy/mac/mac_multiply/readme.md 📝 Documentation +22/-11

MAC multiply example documentation standardization

• Removed duplicate "Overview" section heading
• Updated "Supported Combinations" section to reference central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Added "Steps to Run the Example" section with register inspection instructions

academy/mac/mac_multiply/readme.md


37. academy/mac/mac/readme.md 📝 Documentation +22/-8

MAC example documentation standardization

• Updated "Supported Combinations" section to reference central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Added "Steps to Run the Example" section with register inspection instructions
• Changed from parameter table format to standardized documentation structure

academy/mac/mac/readme.md


38. academy/crc/crc/readme.md 📝 Documentation +22/-8

CRC example documentation standardization

• Updated "Supported Combinations" section to reference central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Added "Steps to Run the Example" section with register inspection instructions
• Changed from parameter table format to standardized documentation structure

academy/crc/crc/readme.md


39. academy/intc/intc_mcu/readme.md 📝 Documentation +22/-8

INTC MCU example documentation standardization

• Updated "Supported Combinations" section to reference central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Added "Steps to Run the Example" section with register inspection instructions
• Changed from parameter table format to standardized documentation structure

academy/intc/intc_mcu/readme.md


40. academy/gpio/gpio_toggle/readme.md 📝 Documentation +21/-8

GPIO toggle example documentation standardization

• Updated "Supported Combinations" section to reference central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Added "Steps to Run the Example" section with hardware connection instructions
• Changed from parameter table format to standardized documentation structure

academy/gpio/gpio_toggle/readme.md


41. examples/custom_frequency_generator/README.md 📝 Documentation +19/-3

Custom frequency generator documentation standardization

• Added "Introduction" section header with project description
• Added "Supported Combinations" section referencing central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Fixed trailing whitespace on lines 72 and 75

examples/custom_frequency_generator/README.md


42. examples/logic_scope/README.md 📝 Documentation +17/-1

Logic scope example documentation standardization

• Added "Introduction" section header with project description
• Added "Supported Combinations" section referencing central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Fixed trailing whitespace on final line

examples/logic_scope/README.md


43. examples/fft/README.md 📝 Documentation +15/-0

FFT example documentation standardization

• Added "Supported Combinations" section referencing central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Provides hardware and software validation information for AM243x and AM261x

examples/fft/README.md


44. examples/pru_emif/readme.md 📝 Documentation +13/-0

PRU EMIF example documentation standardization

• Added "Supported Combinations" section referencing central documentation
• Added "Validated HW & SW" table with processor, hardware, and software versions
• Includes C2000Ware and C2000 CGT version information for AM243x

examples/pru_emif/readme.md


45. academy/readme.md 📝 Documentation +10/-2

Academy projects documentation and support matrix updates

• Added mac/mac_c project entry for MAC module in C language
• Added uart/uart_loopback project entry for UART peripheral example
• Updated mac/mac and mac/mac_multiply descriptions to clarify assembly language
• Updated project support matrix with new mac/mac_c and uart/uart_loopback rows

academy/readme.md


46. academy/makefile ⚙️ Configuration changes +2/-1

Academy makefile project list updates

• Added mac/mac_c to SUBDIRS list for academy projects
• Added uart/uart_loopback to SUBDIRS list for academy projects
• Enables building of new MAC C and UART loopback example projects

academy/makefile


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Apr 8, 2026

Persistent review updated to latest commit 622958a

Comment thread academy/crc/crc/readme.md
Comment on lines +28 to +36
## Validated HW & SW

This project was tested on hardware with these software versions:

| Processor | Hardware | Software |
| --------- | -------- | --------------------------------------- |
| am261x | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
| am263px | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
| am263x | TODO | MCU PLUS SDK TODO, OpenPRU TODO |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. validated hw & sw todos 📎 Requirement gap ⚙ Maintainability

Multiple project READMEs claim hardware validation but leave the tested hardware/software versions
as TODO, which does not document the actual tested SDK versions for the current changes. This can
mislead users about what environment was truly validated.
Agent Prompt
## Issue description
Several project READMEs include a `Validated HW & SW` section but still contain `TODO` placeholders instead of the actual SDK/version(s) that were built and tested on real hardware.

## Issue Context
Compliance requires documenting the *actual* tested SDK versions for the current changes; placeholders are not acceptable.

## Fix Focus Areas
- academy/crc/crc/readme.md[28-36]
- academy/getting_started_labs/c_code/solution/readme.md[13-24]
- examples/fft/README.md[17-25]
- examples/custom_frequency_generator/README.md[17-24]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +1 to +2
export OPEN_PRU_PATH?=$(abspath ../../../../../../..)
include $(OPEN_PRU_PATH)/imports.mak
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. open_pru_path cwd-dependent 📘 Rule violation ☼ Reliability

The new makefiles derive OPEN_PRU_PATH using $(abspath ../../...), which depends on the caller's
working directory and can break includes when invoked from other locations. This violates the
portability requirement for computing repo root relative to the makefile directory.
Agent Prompt
## Issue description
`OPEN_PRU_PATH` is computed using `$(abspath ../../...)`, which can break if the makefile is invoked from a different working directory.

## Issue Context
Compliance requires computing repo-root paths relative to the current makefile location, not the invocation directory.

## Fix Focus Areas
- academy/mac/mac_c/firmware/am62x-sk/pruss0_pru0_fw/ti-pru-cgt/makefile[1-2]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +143 to +151
/* Because we are doing loopback, wait until LSR.DR == 1
* indicating there is data in the RX FIFO */
while ((CT_UART.LSR1_bit.DR == 0x0));

/* Read the value from RBR */
buffer[cnt] = CT_UART.RBR_bit.DATA;

/* Wait for TX FIFO to be empty */
while (!((CT_UART.IIR_bit.INTID) == 0x1));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. Uart while loops unbounded 📘 Rule violation ☼ Reliability

The new UART loopback firmware uses busy-wait while loops with no timeout, which can hang
indefinitely if UART state never changes. This violates the requirement that loops have explicit
termination conditions for deterministic PRU firmware.
Agent Prompt
## Issue description
UART polling uses unbounded busy-wait loops (`while (...) ;`) with no timeout.

## Issue Context
On PRU firmware, unbounded loops can break determinism and hang the core if the peripheral never reaches the expected state.

## Fix Focus Areas
- academy/uart/uart_loopback/firmware/main.c[143-151]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +57 to +60
1. Clocking, pin-mux configuration and interrupts are specified graphically using
sysconfig tool and example.syscfg file located in folder
"\path\to\open-pru\examples\LCD_interface\am243x-lp\r5fss0-0_freertos".

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

4. Docs use backslashes 📘 Rule violation ⚙ Maintainability

Documentation includes Windows-style backslashes in a path example, which is not portable and
violates the requirement to use forward slashes for paths/links. This can confuse users and may
break copy/paste on non-Windows environments.
Agent Prompt
## Issue description
The README uses Windows-style backslashes in an example path.

## Issue Context
Documentation paths must be portable across environments and use forward slashes.

## Fix Focus Areas
- examples/LCD_interface/readme.md[57-60]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

| m_transfer_packet_spi_master_gpo_sclk | SPI Master side macro to read 1 data packet and write 1 data packet concurrently through the SPI interface. | (4+d1)+(6+d2) cycles | 27.77MHz | d1 =9, d2 =7 | 12.8MHz
## Overview
### Timing Parameters
All cycle level frequency calculations are based on a 333MHz PRU System clock, which gives 3ns per instruction cycle, i.e $t_{f} = 3ns$
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

5. i.e. used 📘 Rule violation ⚙ Maintainability

Documentation uses i.e. instead of the prescribed terminology that is. This violates the
required documentation terminology standard.
Agent Prompt
## Issue description
The SPI loopback README uses `i.e.` which is disallowed terminology.

## Issue Context
Docs/comments must use prescribed terminology (`that is`, `for example`, `and so on`).

## Fix Focus Areas
- examples/spi_loopback/readme.md[10-10]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants