Skip to content

Linker scripts and device specs for PRU MCU variants

License

Notifications You must be signed in to change notification settings

dinuxbg/gnuprumcu

Repository files navigation

build status

Device specs and I/O headers for PRU MCU variants

Introduction

This package contains the device specs and I/O headers for the different PRU variants in different TI SoCs.

Install this package to allow the -mmcu= GCC compiler option to pick the correct settings for your board.

Usage

Let's say that we're building firmware for PRU0 core from the ICSSG1 instance on Beagleboard-AI64. In such case you must pass the tda4vm.icssg1.pru0 spec to the GCC's -mmcu= command line option, e.g.:

pru-gcc -mmcu=tda4vm.icssg1.pru0 -Os -Wall main.c -o firmware.elf

The above spec would in turn provide the correct IMEM and DMEM memory sizes to the linker. It would also add preprocessor defines to allow distinguishing PRU cores in C and ASM programs. Example:

#if defined(__TDA4VM_ICSSG1_PRU0__)
	/* This C code section will be compiled only
	 * for PRU0 from ICSSG1 on Beaglebone-AI64. */
#endif

#if defined(__TDA4VM_ICSSG1__)
	/* This C code section will be compiled for any
	 * PRU core from ICSSG1 on Beaglebone-AI64. */
#endif

#if defined(__TDA4VM__)
	/* This C code section will be compiled for any
	 * PRU core from any ICSSG on Beaglebone-AI64. */
#endif

For a full list of supported specs see here.

Building from GIT

The autoconf and automake tools are needed to bootstrap the build scripts.

autoreconf -vfi
./configure --prefix=/usr/local --host=pru
make
make install

Building from a released tarball

Use the standard configure and make steps.

./configure --prefix=/usr/local --host=pru
make
make install

Creating Debian Package

debuild -i -us -uc -b
ls -l ../gnuprumcu_*.deb