ECE497 Notes on gpio

These are notes on how to do gpio faster than the /sys/class/gpio.

Copying memory
Here's a nice article on 7 ways to make the ARM copy memory every fast.

i2c
Node.js i2c interface

DSP
Here are some notes on how to access the gpio pins from the DSP. So far it doesn't read the push button.

Here is the starting point for this. It appears to be a working example that reads the pushbutton (gpio 4) on the Beagle xM from the DSP.

Everything is in a git repository. Here are notes to how to set it up.

beagle$ cd exercises/DSPgpio beagle$ ls -F Makefile readPushbuttonViaDSP*  readPushbuttonViaDSP.c beagle$ make /opt/toolchains/c6run_binary/bin/c6runapp-cc  readPushbuttonViaDSP.c -o readPushbuttonViaDSP "readPushbuttonViaDSP.c", line 35: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 46: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 47: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 50: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 52: warning #225-D: function declared implicitly undefined       first referenced symbol             in file -                      _HWI_enableWugen ./readPushbuttonViaDSP.temp.o error #10234-D: unresolved symbols remain error #10010: errors encountered during linking; "readPushbuttonViaDSP.dsp_image.out" not built make: *** [readPushbuttonViaDSP] Error 1

It appears HWI_enableWugen isn't defined. Let's comment it out and see what happens.

beagle$ make /opt/toolchains/c6run_binary/bin/c6runapp-cc  readPushbuttonViaDSP.c -o readPushbuttonViaDSP "readPushbuttonViaDSP.c", line 35: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 46: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 50: warning #225-D: function declared implicitly "readPushbuttonViaDSP.c", line 52: warning #225-D: function declared implicitly readPushbuttonViaDSP successfully created

Success, but if you run it, it doesn't respond to the push button.

mmap

 * Here's a good discussion with many leads.
 * Here's a python lead.
 * Building a High Performance BeagleBone GPIO library in C is a lead from LinkedIn.

PRU

 * This points to a nice walk through.
 * PRU Wiki
 * Nixie tube via PRU
 * Spreadsheet for PRU pins

Timers

 * how to change timer from 100 to 1000.

SPI

 * Introduction to Serial Peripheral Interface looks like a nice overview.

ARM MMU

 * Turning on an ARM MMU and Living to tell the Tale: Some Theory