Difference between revisions of "Example egpc"

From wiki.emacinc.com
Jump to: navigation, search
m (Hardware Requirements: Increased visibility of note.)
m (Made various improvements and marked FinalDraft.)
Line 1: Line 1:
{{todo|Review(12.27.13-14:22->JG+)|Jgreene|project=oe 4,oe 5,jg,md,Review}}
+
{{todo|Review(12.27.13-14:22->JG+);(12.30.13-17:20->MD+)|Jgreene|project=oe 4,oe 5,jg,md,FinalDraft}}
 
This is a guide to the <code>egpc</code> C example project included in the EMAC OE SDK.
 
This is a guide to the <code>egpc</code> C example project included in the EMAC OE SDK.
  
<code>egpc</code> is an application for reading/writing/configuring gpio character devices. Specifically, we read/write/configure the 3 ports (ports A, B and C) on the GPIO header.
+
<code>egpc</code> is an application for reading/writing/configuring gpio character devices. Specifically, it will read/write/configure the 3 ports (ports '''A''', '''B''' and '''C''') on the GPIO header.
  
 
The <code>egpc</code> project builds one executable: <code>egpc</code>.
 
The <code>egpc</code> project builds one executable: <code>egpc</code>.
Line 30: Line 30:
 
===Hardware Requirements===
 
===Hardware Requirements===
  
The <code>egpc</code> C example project will run on any EMAC carrier board.  
+
The <code>egpc</code> C example project will run on any EMAC carrier board which has one or more GPIO.  
 
 
'''>>>>>>>>>>>>>>>>>>>>>> ************************ VERIFY THIS ******************************** <<<<<<<<<<<<<<<<<<<<<<<<'''
 
  
 
===Using <code>egpc</code>===
 
===Using <code>egpc</code>===
  
  ./egpc device d/c/i (arg)
+
  ./egpc ''device'' ''[d/c/i]'' ''arg''
  
'''device''' is /dev/porta, /dev/portb or /dev/portc<br />
+
''device'' is <code>/dev/porta</code>, <code>/dev/portb</code> or <code>/dev/portc</code><br />
'''d/c/i''' specifies the port command : d(data), c(configure) or i(index)<br />
+
''d/c/i'' specifies the port command : <code>d</code> (data), <code>c</code> (configure) or <code>i</code> (index)<br />
'''arg''' is either a port index or a bitmask. The bitmask is in hex format, range [0x0,0xff].
+
''arg'' is either a port index or a bitmask. The bitmask is in hex format, range <code>[0x00,0xff]</code>.
  
 
===Usage Example. Port Configuration===
 
===Usage Example. Port Configuration===
  
  ./egpc device c (mask)
+
  ./egpc ''device'' c ''[mask]''
  
If a mask is specified it configures the pins for input/output.<br />
+
If a mask is specified, it configures the pins for input/output.<br />
If no mask is specified it returns the current configuration.<br />   
+
If no mask is specified, it returns the current configuration.<br />   
'''mask''' is an input/output bitmask. 1=output and 0=input.<br />                     
+
''mask'' is an input/output bitmask. <code>1</code>=output and <code>0</code>=input.<br />                     
For example, this sets every other pin on PortA to be an output.  
+
For example, this sets every other pin on '''Port A''' to be an output.  
 
                                          
 
                                          
 
  ./egpc /dev/porta c 0xaa
 
  ./egpc /dev/porta c 0xaa
  
...and this reads the current pin configuration state of PortA.
+
...and this reads the current pin configuration state of '''Port A'''.
  
 
  ./egpc /dev/porta c     
 
  ./egpc /dev/porta c     
 
  0xaa
 
  0xaa
  
===Usage Example. Port Data===
+
===Usage Example: Port Data===
  
  ./egpc device d (mask)
+
  ./egpc device d ''[mask]''
  
 
If a mask is specified then it sets each bit's corresponding pin output latch to high/low accordingly.<br />
 
If a mask is specified then it sets each bit's corresponding pin output latch to high/low accordingly.<br />
 
If a mask is not specified then the current pin state is retrieved.<br />
 
If a mask is not specified then the current pin state is retrieved.<br />
For example, this writes pin output latches on PortC to alternating high and low.
+
 
 +
For example, this writes pin output latches on '''Port C''' to alternating high and low.
  
 
  ./egpc /dev/portc d 0x55
 
  ./egpc /dev/portc d 0x55
  
...and this flips the pins; writing all the pins that we just set to low to high and vice-versa.
+
This flips the pins, writing all the pins that were set low in the previous command to high, and vice-versa:
  
 
  ./egpc /dev/portc d 0xaa
 
  ./egpc /dev/portc d 0xaa
  
...and this reads the current pin data state of PortC.
+
This reads the current pin data state of '''Port C'''.
  
 
  ./egps /dev/portc d
 
  ./egps /dev/portc d
  
'''Note''' The pin values for Port C are displayed on the board's strip of 8 LEDs. Observe that the LEDs change state when we write to Port C. This only works for Port C, however. Ports A and B must be read with an oscilloscope or multimeter.
+
The pin values for '''Port C''' are displayed on the board's strip of 8 LEDs. Observe that the LEDs change state when a new value is written to '''Port C'''. This only works for '''Port C''', however. '''Ports A''' and '''B''' must be read with an oscilloscope, multimeter, logic analyzer or similar device.
  
 
===Usage Example. Port Index===
 
===Usage Example. Port Index===
Line 84: Line 83:
 
If an index is specified then it sets the port's index<br />
 
If an index is specified then it sets the port's index<br />
 
If an index is not specified then the port's current index is retrieved.<br />
 
If an index is not specified then the port's current index is retrieved.<br />
For example, this sets the index of PortA to 1
+
 
 +
For example, this sets the index of '''Port A''' to 1
  
 
  ./egpc /dev/porta i 1
 
  ./egpc /dev/porta i 1
  
...and this reads the current index of PortA
+
...and this reads the current index of '''Port A'''
  
 
  ./egpc /dev/porta i
 
  ./egpc /dev/porta i
Line 94: Line 94:
 
==Summary==
 
==Summary==
  
<code>egpc</code> is an application for reading, writing and configuring the ports on the GPIO header.
+
<code>egpc</code> is an application which demonstrates reading, writing and configuring the GPIO ports.

Revision as of 18:18, 30 December 2013

TODO: {{#todo:Review(12.27.13-14:22->JG+);(12.30.13-17:20->MD+)|Jgreene|oe 4,oe 5,jg,md,FinalDraft}}

This is a guide to the egpc C example project included in the EMAC OE SDK.

egpc is an application for reading/writing/configuring gpio character devices. Specifically, it will read/write/configure the 3 ports (ports A, B and C) on the GPIO header.

The egpc project builds one executable: egpc.

Opening, Building and Uploading the Project Files

1. Open the C/C++ editing perspective.

stub

2. Open the project files.

stub

3. Build the project.

stub

4. Upload the executables to the target system.

stub

Usage and Behavior

egpc reads/writes/configures the GPIO ports.

Hardware Requirements

The egpc C example project will run on any EMAC carrier board which has one or more GPIO.

Using egpc

./egpc device [d/c/i] arg

device is /dev/porta, /dev/portb or /dev/portc
d/c/i specifies the port command : d (data), c (configure) or i (index)
arg is either a port index or a bitmask. The bitmask is in hex format, range [0x00,0xff].

Usage Example. Port Configuration

./egpc device c [mask]

If a mask is specified, it configures the pins for input/output.
If no mask is specified, it returns the current configuration.
mask is an input/output bitmask. 1=output and 0=input.
For example, this sets every other pin on Port A to be an output.

./egpc /dev/porta c 0xaa

...and this reads the current pin configuration state of Port A.

./egpc /dev/porta c     
0xaa

Usage Example: Port Data

./egpc device d [mask]

If a mask is specified then it sets each bit's corresponding pin output latch to high/low accordingly.
If a mask is not specified then the current pin state is retrieved.

For example, this writes pin output latches on Port C to alternating high and low.

./egpc /dev/portc d 0x55

This flips the pins, writing all the pins that were set low in the previous command to high, and vice-versa:

./egpc /dev/portc d 0xaa

This reads the current pin data state of Port C.

./egps /dev/portc d

The pin values for Port C are displayed on the board's strip of 8 LEDs. Observe that the LEDs change state when a new value is written to Port C. This only works for Port C, however. Ports A and B must be read with an oscilloscope, multimeter, logic analyzer or similar device.

Usage Example. Port Index

./egpc device i (index)

If an index is specified then it sets the port's index
If an index is not specified then the port's current index is retrieved.

For example, this sets the index of Port A to 1

./egpc /dev/porta i 1

...and this reads the current index of Port A

./egpc /dev/porta i

Summary

egpc is an application which demonstrates reading, writing and configuring the GPIO ports.