December 13, 2013

Using the TI PRU development package for linux

You can download this from the following link: When I did this, I obtained the file sprc941a.gz which was 1409351 bytes in size. It was a puzzle what to do with it, and for some time I thought it was corrupted. I finally figured out that the following process works:
gunzip sprc941a.gz
mv sprc941a sprc941a.tgz
tar xzvf sprc941a.tgz
This will yield the file: PRU_Development_1_03_Linux-x86_Setup.bin. Somebody was smoking crack -- a single file in a tar archive, compressed twice. And all this to "save" a few bytes (it reduced a 1526140 byte file to 1409351 bytes saving a whopping 116,789 bytes (about 8 percent). But it gets far more ridiculous, keep reading.

The file PRU_Development_1_03_Linux-x86_Setup.bin is an x86 executable that when I ran on my linux system offered to install the PRU development tools in a directory of my choice (I selected ./ti_sw). Then I made my own tarball of this and it was 285928 bytes in size. Go figure, the TI website provides 286K of stuff in a bloated and obfuscated 1.4 megabyte file for your downloading pleasure. Here is what I finally obtained, repackaged for your convenience:

You can browse the files here. The file layout is as follows:

.:
total 20
drwxr-xr-x  4 tom wheel 4096 Dec 13 11:02 bin
drwxr-xr-x  2 tom wheel 4096 Dec 13 11:02 docs
drwxr-xr-x 19 tom wheel 4096 Dec 13 11:02 examples
drwxr-xr-x  4 tom wheel 4096 Dec 13 11:02 host
-rwxr-xr-x  1 tom wheel  644 Jun  8  2010 readme.txt

./bin:
total 12
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 linux
-rwxr-xr-x 1 tom wheel  214 Jun  2  2009 readme.txt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 windows

./bin/linux:
total 52
-rwxr-xr-x 1 tom wheel 50458 Jun  8  2010 pasm

./bin/windows:
total 68
-rwxr-xr-x 1 tom wheel 66005 Jun  8  2010 pasm.exe

./docs:
total 4
-rwxr-xr-x 1 tom wheel 526 Sep 28  2009 readme.txt

./examples:
total 72
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_DSPtoPRU_Interrupt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_PRUtoDSP_Interrupt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_PRUtoPRU_Interrupt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_access_const_table
drwxr-xr-x 3 tom wheel 4096 Dec 13 11:02 PRU_edmaConfig
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_gpioToggle
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_mem1DTransfer
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_memAccessL2
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_memAccessL3andDDR
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_memAccessPRUDataRam
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_miscOperations
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_multiply
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_pscConfig
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_semaphore
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_timer0Config
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_timer0Interrupt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 common
-rwxr-xr-x 1 tom wheel 1708 Aug 21  2009 readme.txt

./examples/PRU_DSPtoPRU_Interrupt:
total 28
-rwxr-xr-x 1 tom wheel 8241 Jul  2  2009 PRU_DSPtoPRU_Interrupt.c
-rwxr-xr-x 1 tom wheel 2459 Jun 30  2009 PRU_DSPtoPRU_Interrupt.hp
-rwxr-xr-x 1 tom wheel 3976 Jun 30  2009 PRU_DSPtoPRU_Interrupt.p
-rwxr-xr-x 1 tom wheel 1351 Jul  2  2009 PRU_DSPtoPRU_Interrupt.pjt
-rwxr-xr-x 1 tom wheel 1426 Jun  9  2009 intvecs.asm

./examples/PRU_PRUtoDSP_Interrupt:
total 24
-rwxr-xr-x 1 tom wheel 6326 Jul  2  2009 PRU_PRUtoDSP_Interrupt.c
-rwxr-xr-x 1 tom wheel 2176 Jun 25  2009 PRU_PRUtoDSP_Interrupt.hp
-rwxr-xr-x 1 tom wheel 2944 Jun 26  2009 PRU_PRUtoDSP_Interrupt.p
-rwxr-xr-x 1 tom wheel 1251 Jul  2  2009 PRU_PRUtoDSP_Interrupt.pjt
-rwxr-xr-x 1 tom wheel 1428 Jun 11  2009 intvecs.asm

./examples/PRU_PRUtoPRU_Interrupt:
total 24
-rwxr-xr-x 1 tom wheel 2307 Jun 26  2009 PRU_PRU0toPRU1_Interrupt.p
-rwxr-xr-x 1 tom wheel 2341 Jun 26  2009 PRU_PRU1toPRU0_Interrupt.p
-rwxr-xr-x 1 tom wheel 6879 Jun 25  2009 PRU_PRUtoPRU_Interrupt.c
-rwxr-xr-x 1 tom wheel 2086 Jun 25  2009 PRU_PRUtoPRU_Interrupt.hp
-rwxr-xr-x 1 tom wheel 1667 Jul  2  2009 PRU_PRUtoPRU_Interrupt.pjt

./examples/PRU_access_const_table:
total 20
-rwxr-xr-x 1 tom wheel 6751 Jul  7  2009 PRU_access_const_table.c
-rwxr-xr-x 1 tom wheel 1695 Jun 25  2009 PRU_access_const_table.hp
-rwxr-xr-x 1 tom wheel 2527 Jun 25  2009 PRU_access_const_table.p
-rwxr-xr-x 1 tom wheel 1307 Jul  2  2009 PRU_access_const_table.pjt

./examples/PRU_edmaConfig:
total 28
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 PRU_edmaConfig.CS_
-rwxr-xr-x 1 tom wheel 5883 Jul  7  2009 PRU_edmaConfig.c
-rwxr-xr-x 1 tom wheel 1935 Jul  2  2009 PRU_edmaConfig.hp
-rwxr-xr-x 1 tom wheel 3502 Jul  2  2009 PRU_edmaConfig.p
-rwxr-xr-x 1 tom wheel 1352 Jul  7  2009 PRU_edmaConfig.pjt
-rwxr-xr-x 1 tom wheel 1430 Jun  4  2009 intvecs.asm

./examples/PRU_edmaConfig/PRU_edmaConfig.CS_:
total 0

./examples/PRU_gpioToggle:
total 16
-rwxr-xr-x 1 tom wheel 3131 Jun 25  2009 PRU_gpioToggle.c
-rwxr-xr-x 1 tom wheel 1166 May 21  2010 PRU_gpioToggle.hp
-rwxr-xr-x 1 tom wheel  930 May 21  2010 PRU_gpioToggle.p
-rwxr-xr-x 1 tom wheel 1278 Jul  2  2009 PRU_gpioToggle.pjt

./examples/PRU_mem1DTransfer:
total 20
-rwxr-xr-x 1 tom wheel 5035 Jun 17  2009 PRU_mem1DTransfer.c
-rwxr-xr-x 1 tom wheel 1371 Jun 25  2009 PRU_mem1DTransfer.hp
-rwxr-xr-x 1 tom wheel 2014 Jun 26  2009 PRU_mem1DTransfer.p
-rwxr-xr-x 1 tom wheel 1112 Jun 17  2009 PRU_mem1DTransfer.pjt

./examples/PRU_memAccessL2:
total 24
-rwxr-xr-x 1 tom wheel 6187 Jul  2  2009 PRU_memAccessL2.c
-rwxr-xr-x 1 tom wheel 1512 Jun 25  2009 PRU_memAccessL2.hp
-rwxr-xr-x 1 tom wheel 1790 Jul  2  2009 PRU_memAccessL2.p
-rwxr-xr-x 1 tom wheel 1242 Jul  2  2009 PRU_memAccessL2.pjt
-rwxr-xr-x 1 tom wheel 2424 Jun  2  2009 lnk.cmd

./examples/PRU_memAccessL3andDDR:
total 20
-rwxr-xr-x 1 tom wheel 6620 Jun 25  2009 PRU_memAccessL3andDDR.c
-rwxr-xr-x 1 tom wheel 1638 Jun 25  2009 PRU_memAccessL3andDDR.hp
-rwxr-xr-x 1 tom wheel 1680 Jun 25  2009 PRU_memAccessL3andDDR.p
-rwxr-xr-x 1 tom wheel 1112 Jul  2  2009 PRU_memAccessL3andDDR.pjt

./examples/PRU_memAccessPRUDataRam:
total 20
-rwxr-xr-x 1 tom wheel 5975 Jul  2  2009 PRU_memAccessPRUDataRam.c
-rwxr-xr-x 1 tom wheel 1551 Jun 26  2009 PRU_memAccessPRUDataRam.hp
-rwxr-xr-x 1 tom wheel 1775 Jun 25  2009 PRU_memAccessPRUDataRam.p
-rwxr-xr-x 1 tom wheel 1134 Jul  2  2009 PRU_memAccessPRUDataRam.pjt

./examples/PRU_miscOperations:
total 24
-rwxr-xr-x 1 tom wheel 9364 Jul  2  2009 PRU_miscOperations.c
-rwxr-xr-x 1 tom wheel 2034 Jun 25  2009 PRU_miscOperations.hp
-rwxr-xr-x 1 tom wheel 3417 Jun 25  2009 PRU_miscOperations.p
-rwxr-xr-x 1 tom wheel 1142 Aug 21  2009 PRU_miscOperations.pjt

./examples/PRU_multiply:
total 20
-rwxr-xr-x 1 tom wheel 4483 Aug 28  2009 PRU_multiply.c
-rwxr-xr-x 1 tom wheel 1252 Aug 28  2009 PRU_multiply.hp
-rwxr-xr-x 1 tom wheel 1479 Aug 28  2009 PRU_multiply.p
-rwxr-xr-x 1 tom wheel 1078 Aug 28  2009 PRU_multiply.pjt

./examples/PRU_pscConfig:
total 24
-rwxr-xr-x 1 tom wheel 6321 Jun 26  2009 PRU_pscConfig.c
-rwxr-xr-x 1 tom wheel 2007 Jun 26  2009 PRU_pscConfig.hp
-rwxr-xr-x 1 tom wheel 4139 Jun 26  2009 PRU_pscConfig.p
-rwxr-xr-x 1 tom wheel 1235 Jun 25  2009 PRU_pscConfig.pjt

./examples/PRU_semaphore:
total 24
-rwxr-xr-x 1 tom wheel 8224 Jul  2  2009 PRU_semaphore.c
-rwxr-xr-x 1 tom wheel 1770 Jun 25  2009 PRU_semaphore.hp
-rwxr-xr-x 1 tom wheel 2166 Jun 25  2009 PRU_semaphore.p
-rwxr-xr-x 1 tom wheel 1165 Jul  2  2009 PRU_semaphore.pjt

./examples/PRU_timer0Config:
total 24
-rwxr-xr-x 1 tom wheel 5013 Jun 25  2009 PRU_timer0Config.c
-rwxr-xr-x 1 tom wheel 1847 Jun 25  2009 PRU_timer0Config.hp
-rwxr-xr-x 1 tom wheel 1850 Jun 25  2009 PRU_timer0Config.p
-rwxr-xr-x 1 tom wheel 1423 Jul  2  2009 PRU_timer0Config.pjt
-rwxr-xr-x 1 tom wheel 1426 Jun  4  2009 intvecs.asm

./examples/PRU_timer0Interrupt:
total 20
-rwxr-xr-x 1 tom wheel 5281 Jun 25  2009 PRU_timer0Interrupt.c
-rwxr-xr-x 1 tom wheel 2342 Jun 26  2009 PRU_timer0Interrupt.hp
-rwxr-xr-x 1 tom wheel 3076 Jun 30  2009 PRU_timer0Interrupt.p
-rwxr-xr-x 1 tom wheel 1350 Jul  2  2009 PRU_timer0Interrupt.pjt

./examples/common:
total 8
-rwxr-xr-x 1 tom wheel 1378 Jul  2  2009 example.cmd
-rwxr-xr-x 1 tom wheel 3653 May 21  2010 macros.hp

./host:
total 12
drwxr-xr-x 4 tom wheel 4096 Dec 13 11:02 common
drwxr-xr-x 4 tom wheel 4096 Dec 13 11:02 dsp
-rwxr-xr-x 1 tom wheel  394 Jun  2  2009 readme.txt

./host/common:
total 8
drwxr-xr-x 3 tom wheel 4096 Dec 13 11:02 include
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 src

./host/common/include:
total 24
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 csl
-rwxr-xr-x 1 tom wheel 2030 Jun 12  2009 device.h
-rwxr-xr-x 1 tom wheel 2094 Sep 28  2009 pru.h
-rwxr-xr-x 1 tom wheel 6497 Jun  5  2009 tistdtypes.h
-rwxr-xr-x 1 tom wheel 1860 May 22  2009 util.h

./host/common/include/csl:
total 2004
-rwxr-xr-x 1 tom wheel    693 Jun  5  2009 csl.h
-rwxr-xr-x 1 tom wheel   3544 Jun  5  2009 csl_error.h
-rwxr-xr-x 1 tom wheel   1443 Jun  5  2009 csl_types.h
-rwxr-xr-x 1 tom wheel   1735 Jun  5  2009 csl_version.h
-rwxr-xr-x 1 tom wheel   2312 Jun  5  2009 cslr.h
-rwxr-xr-x 1 tom wheel  40385 Jun  5  2009 cslr_aintc.h
-rwxr-xr-x 1 tom wheel  13082 Jun  5  2009 cslr_cache.h
-rwxr-xr-x 1 tom wheel  35929 Jun  5  2009 cslr_chip.h
-rwxr-xr-x 1 tom wheel  23371 Jun  5  2009 cslr_ddr2_mddr.h
-rwxr-xr-x 1 tom wheel 147926 Jun  5  2009 cslr_dspintc.h
-rwxr-xr-x 1 tom wheel  15688 Jun  5  2009 cslr_ecap.h
-rwxr-xr-x 1 tom wheel  35112 Jun  5  2009 cslr_ectl1.h
-rwxr-xr-x 1 tom wheel 186968 Jun  5  2009 cslr_edma3cc.h
-rwxr-xr-x 1 tom wheel  22233 Jun  5  2009 cslr_edma3tc.h
-rwxr-xr-x 1 tom wheel  28274 Jun  5  2009 cslr_ehrpwm.h
-rwxr-xr-x 1 tom wheel  77493 Jun  5  2009 cslr_emac1.h
-rwxr-xr-x 1 tom wheel  51455 Jun  5  2009 cslr_emifa2.h
-rwxr-xr-x 1 tom wheel  26540 Jun  5  2009 cslr_eqep.h
-rwxr-xr-x 1 tom wheel  67273 Jun  5  2009 cslr_gpio.h
-rwxr-xr-x 1 tom wheel   4871 Jun  5  2009 cslr_hpi.h
-rwxr-xr-x 1 tom wheel  19641 Jun  5  2009 cslr_i2c.h
-rwxr-xr-x 1 tom wheel  15993 Jun  5  2009 cslr_idma.h
-rwxr-xr-x 1 tom wheel  25122 Jun  5  2009 cslr_lcdc.h
-rwxr-xr-x 1 tom wheel 160006 Jun  5  2009 cslr_mcasp.h
-rwxr-xr-x 1 tom wheel 110666 Jun  5  2009 cslr_mcbsp.h
-rwxr-xr-x 1 tom wheel  10103 Jun  5  2009 cslr_mdio.h
-rwxr-xr-x 1 tom wheel  28984 Jun  5  2009 cslr_mmcsd.h
-rwxr-xr-x 1 tom wheel  21797 Aug 13  2009 cslr_pllc.h
-rwxr-xr-x 1 tom wheel  23870 Aug 13  2009 cslr_prucore.h
-rwxr-xr-x 1 tom wheel 157428 Jun 12  2009 cslr_pruintc.h
-rwxr-xr-x 1 tom wheel  20269 Jun 12  2009 cslr_psc_OMAPL138.h
-rwxr-xr-x 1 tom wheel  15772 Jun  5  2009 cslr_rtc.h
-rwxr-xr-x 1 tom wheel  35333 Jun  5  2009 cslr_sata.h
-rwxr-xr-x 1 tom wheel  44271 Aug 13  2009 cslr_spi.h
-rwxr-xr-x 1 tom wheel 129851 Aug 13  2009 cslr_syscfg0_OMAPL138.h
-rwxr-xr-x 1 tom wheel  41861 Jun  5  2009 cslr_syscfg1_OMAPL138.h
-rwxr-xr-x 1 tom wheel  26808 Jun  5  2009 cslr_tmr.h
-rwxr-xr-x 1 tom wheel  18761 Jun  5  2009 cslr_uart.h
-rwxr-xr-x 1 tom wheel  36527 Jun  5  2009 cslr_upp.h
-rwxr-xr-x 1 tom wheel  31064 Jun  5  2009 cslr_usb_ohci.h
-rwxr-xr-x 1 tom wheel 123352 Jun  5  2009 cslr_usb_otg.h
-rwxr-xr-x 1 tom wheel  41419 Jun  5  2009 cslr_vpif.h
-rwxr-xr-x 1 tom wheel  43698 Jun 25  2009 soc_OMAPL138.h

./host/common/src:
total 16
-rwxr-xr-x 1 tom wheel 3436 Jun 12  2009 device.c
-rwxr-xr-x 1 tom wheel 6972 Jul  2  2009 pru.c
-rwxr-xr-x 1 tom wheel 3938 Jun  4  2009 util.c

./host/dsp:
total 12
drwxr-xr-x 4 tom wheel 4096 Dec 13 11:02 load
drwxr-xr-x 4 tom wheel 4096 Dec 13 11:02 load_file
-rwxr-xr-x 1 tom wheel  288 Jul  2  2009 readme.txt

./host/dsp/load:
total 24
-rwxr-xr-x 1 tom wheel  332 Jul  2  2009 adder.hp
-rwxr-xr-x 1 tom wheel  937 Jul  2  2009 adder.p
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 include
-rwxr-xr-x 1 tom wheel 1762 May 29  2009 load.cmd
-rwxr-xr-x 1 tom wheel 1269 Jul  2  2009 load.pjt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 src

./host/dsp/load/include:
total 4
-rwxr-xr-x 1 tom wheel 1540 May 29  2009 load.h

./host/dsp/load/src:
total 4
-rwxr-xr-x 1 tom wheel 3440 Jul  2  2009 load.c

./host/dsp/load_file:
total 16
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 include
-rwxr-xr-x 1 tom wheel 1762 May 22  2009 load_file.cmd
-rwxr-xr-x 1 tom wheel  990 Jul  2  2009 load_file.pjt
drwxr-xr-x 2 tom wheel 4096 Dec 13 11:02 src

./host/dsp/load_file/include:
total 4
-rwxr-xr-x 1 tom wheel 1547 May 29  2009 load_file.h

./host/dsp/load_file/src:
total 8
-rwxr-xr-x 1 tom wheel 4570 Jul  1  2009 load_file.c


Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org