Browse Source

Updating gpio manual page

Gordon Henderson 11 years ago
parent
commit
86a5c68e08
8 changed files with 114 additions and 78 deletions
  1. 6 2
      examples/Makefile
  2. 9 6
      gpio/Makefile
  3. 28 24
      gpio/gpio.1
  4. 11 9
      gpio/gpio.c
  5. 46 29
      wiringPi/Makefile
  6. 4 1
      wiringPi/lcd.c
  7. 4 4
      wiringPi/lcd.h
  8. 6 3
      wiringPi/wiringPi.c

+ 6 - 2
examples/Makefile

@@ -39,7 +39,12 @@ SRC	=	test1.c test2.c speed.c lcd.c wfi.c piface.c gertboard.c nes.c delayTest.c
 
 OBJ	=	test1.o test2.o speed.o lcd.o wfi.o piface.o gertboard.o nes.o delayTest.o softPwm.o
 
-all:		test1 test2 speed lcd wfi piface gertboard nes softPwm
+BINS	=	test1 test2 speed lcd wfi piface gertboard nes delayTest softPwm
+
+all:	
+	@cat README.TXT
+	@echo "    $(BINS)" | fmt
+	@echo ""
 
 test1:	test1.o
 	@echo [link]
@@ -77,7 +82,6 @@ softPwm:	softPwm.o
 	@echo [link]
 	$(CC) -o $@ softPwm.o $(LDFLAGS) $(LIBS) -lm -lpthread
 
-
 delayTest:	delayTest.o
 	@echo [link]
 	$(CC) -o $@ delayTest.o $(LDFLAGS) $(LIBS)

+ 9 - 6
gpio/Makefile

@@ -41,7 +41,7 @@ OBJ	=	gpio.o
 
 all:		gpio
 
-gpio:	gpio.o /usr/local/lib/libwiringPi.a
+gpio:	gpio.o /usr/local/lib/libwiringPi.a /usr/local/lib/libwiringPi.so.1.0
 	@echo [LD]
 	@$(CC) -o $@ gpio.o $(LDFLAGS) $(LIBS)
 	
@@ -60,11 +60,14 @@ depend:
 	makedepend -Y $(SRC)
 
 install:
-	cp gpio /usr/local/bin
-	chown root.root /usr/local/bin/gpio
-	chmod 4755 /usr/local/bin/gpio
-	mkdir -p /usr/local/man/man1
-	cp gpio.1 /usr/local/man/man1
+	@echo -n "Installing... "
+	@cp gpio /usr/local/bin
+	@chown root.root /usr/local/bin/gpio
+	@chmod 4755 /usr/local/bin/gpio
+	@mkdir -p /usr/local/man/man1
+	@cp gpio.1 /usr/local/man/man1
+	@echo "Done."
+	
 
 uninstall:
 	rm -f /usr/local/bin/gpio

+ 28 - 24
gpio/gpio.1

@@ -48,9 +48,9 @@ channel value
 .SH DESCRIPTION
 
 .B GPIO
-is a swiss army knofe of a command line tool to allow the user easy
+is a swiss army knife of a command line tool to allow the user easy
 access to the GPIO pins on the Raspberry Pi and the SPI A/D and D/A
-convertors on the Gertboard. It's designed for simple testing and
+converters on the Gertboard. It's designed for simple testing and
 diagnostic purposes, but can be used in shell scripts for general if
 somewhat slow control of the GPIO pins.
 
@@ -122,7 +122,7 @@ the direction to input and set the edge interrupt method to \fInone\fR,
 above and note that \fBBCM_GPIO\fR pin number is used not not wiringPi pin
 numbering.
 
-Like the export commands abovem ownership is set to that of the 
+Like the export commands above, ownership is set to that of the 
 calling user, allowing subsequent access from user programs without
 requiring root/sudo.
 
@@ -155,7 +155,7 @@ the associated /dev/ entries so that the current user has access to them.
 .B gbr
 channel
 
-This reads the analog to digital convertor on the Gertboard on the given
+This reads the analog to digital converter on the Gertboard on the given
 channel. The board jumpers need to be in-place to do this operation.
 
 .TP
@@ -163,7 +163,7 @@ channel. The board jumpers need to be in-place to do this operation.
 channel value
 
 This writes the supplied value to the output channel on the Gertboards
-SPI digital to analogue convertor.
+SPI digital to analogue converter.
 The board jumpers need to be in-place to do this operation.
 
 
@@ -171,26 +171,30 @@ The board jumpers need to be in-place to do this operation.
 
 .PP
 .TS
-r r l.
-WiringPi	GPIO	Function
+r r r l.
+WiringPi	GPIO-r1	GPIO-r2	Function
 _
-0	17
-1	18	(PWM)
-2	21
-3	22
-4	23
-5	24
-6	25
-7	4
-8	0	SDA0
-9	1	SCL0
-10	8	SPI CE0
-11	7	SPI CE1
-12	10	SPI MOSI
-13	9	SPI MISO
-14	11	SPI SCLK
-15	14	TxD
-16	15	RxD
+0	17	17
+1	18	18	(PWM)
+2	21	27
+3	22	22
+4	23	23
+5	24	24
+6	25	25
+7	4	4
+8	0	2	I2C: SDA0
+9	1	3	I2C: SCL0
+10	8	8	SPI: CE0
+11	7	7	SPI: CE1
+12	10	10	SPI: MOSI
+13	9	9	SPI: MISO
+14	11	11	SPI: SCLK
+15	14	14	TxD
+16	15	16	RxD
+17	-	28
+18	-	29
+19	-	30
+20	-	31
 .TE
 
 .SH FILES

+ 11 - 9
gpio/gpio.c

@@ -40,7 +40,7 @@
 #  define	FALSE	(1==2)
 #endif
 
-#define	VERSION	"1.2"
+#define	VERSION	"1.3"
 
 static int wpMode ;
 
@@ -753,7 +753,7 @@ int main (int argc, char *argv [])
 
   if (argc == 1)
   {
-    fprintf (stderr, "%s: %s\n", argv [0], usage) ;
+    fprintf (stderr, "%s\n", usage) ;
     return 1 ;
   }
 
@@ -769,6 +769,8 @@ int main (int argc, char *argv [])
     printf ("Copyright (c) 2012 Gordon Henderson\n") ;
     printf ("This is free software with ABSOLUTELY NO WARRANTY.\n") ;
     printf ("For details type: %s -warranty\n", argv [0]) ;
+    printf ("\n") ;
+    printf ("This Raspberry Pi is a revision %d board.\n", piBoardRev ()) ;
     return 0 ;
   }
 
@@ -807,9 +809,8 @@ int main (int argc, char *argv [])
   else if (strcasecmp (argv [1], "unexportall") == 0)	{ doUnexportall (argc, argv) ;	return 0 ; }
   else if (strcasecmp (argv [1], "unexport"   ) == 0)	{ doUnexport    (argc, argv) ;	return 0 ; }
 
-// Check for drive or load commands:
+// Check for load command:
 
-  if (strcasecmp (argv [1], "drive") == 0)	{ doPadDrive (argc, argv) ; return 0 ; }
   if (strcasecmp (argv [1], "load" ) == 0)	{ doLoad     (argc, argv) ; return 0 ; }
 
 // Gertboard commands
@@ -861,14 +862,15 @@ int main (int argc, char *argv [])
     wpMode = WPI_MODE_PINS ;
   }
 
-// Check for PWM operations
+// Check for PWM or Pad Drive operations
 
   if (wpMode != WPI_MODE_PIFACE)
   {
-    if (strcasecmp (argv [1], "pwm-bal") == 0)	{ doPwmMode  (PWM_MODE_BAL) ; return 0 ; }
-    if (strcasecmp (argv [1], "pwm-ms")  == 0)	{ doPwmMode  (PWM_MODE_MS) ;  return 0 ; }
-    if (strcasecmp (argv [1], "pwmr")    == 0)	{ doPwmRange (argc, argv) ;   return 0 ; }
-    if (strcasecmp (argv [1], "pwmc")    == 0)	{ doPwmClock (argc, argv) ;   return 0 ; }
+    if (strcasecmp (argv [1], "pwm-bal") == 0)	{ doPwmMode  (PWM_MODE_BAL) ;	return 0 ; }
+    if (strcasecmp (argv [1], "pwm-ms")  == 0)	{ doPwmMode  (PWM_MODE_MS) ;	return 0 ; }
+    if (strcasecmp (argv [1], "pwmr")    == 0)	{ doPwmRange (argc, argv) ;	return 0 ; }
+    if (strcasecmp (argv [1], "pwmc")    == 0)	{ doPwmClock (argc, argv) ;	return 0 ; }
+    if (strcasecmp (argv [1], "drive")   == 0)	{ doPadDrive (argc, argv) ;	return 0 ; }
   }
 
 // Check for wiring commands

+ 46 - 29
wiringPi/Makefile

@@ -21,14 +21,17 @@
 #    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
 #################################################################################
 
+DYN_VERS_MAJ=1
+DYN_VERS_MIN=0
 
-TARGET=libwiringPi.a
+STATIC=libwiringPi.a
+DYNAMIC=libwiringPi.so.$(DYN_VERS_MAJ).$(DYN_VERS_MIN)
 
 #DEBUG	= -g -O0
-DEBUG	= -O3
+DEBUG	= -O2
 CC	= gcc
 INCLUDE	= -I.
-CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe -fPIC
 
 LIBS    =
 
@@ -45,20 +48,25 @@ OBJ	=	wiringPi.o wiringPiFace.o wiringSerial.o wiringShift.o	\
 		piNes.o							\
 		lcd.o piHiPri.o piThread.o softPwm.o wiringPiSPI.o
 
-all:		$(TARGET)
+all:		$(STATIC) $(DYNAMIC)
 
-$(TARGET):	$(OBJ)
-	@echo [AR] $(OBJ)
-	@ar rcs $(TARGET) $(OBJ)
-	@ranlib $(TARGET)
-	@size   $(TARGET)
+$(STATIC):	$(OBJ)
+	@echo [STATIC]
+	@ar rcs $(STATIC) $(OBJ)
+	@ranlib $(STATIC)
+
+#	@size   $(STATIC)
+
+$(DYNAMIC):	$(OBJ)
+	@echo [DYNAMIC]
+	@gcc -shared -Wl,-soname,libwiringPi.so.1 -o libwiringPi.so.1.0 -lpthread $(OBJ)
 
 .c.o:
 	@echo [CC] $<
 	@$(CC) -c $(CFLAGS) $< -o $@
 
 clean:
-	rm -f $(OBJ) $(TARGET) *~ core tags Makefile.bak
+	rm -f $(OBJ) *~ core tags Makefile.bak libwiringPi.*
 
 tags:	$(SRC)
 	@echo [ctags]
@@ -69,27 +77,34 @@ depend:
 
 install:	$(TARGET)
 	@echo [install]
-	install -m 0755 -d /usr/local/lib
-	install -m 0755 -d /usr/local/include
-	install -m 0644 wiringPi.h	/usr/local/include
-	install -m 0644 wiringSerial.h	/usr/local/include
-	install -m 0644 wiringShift.h	/usr/local/include
-	install -m 0644 gertboard.h	/usr/local/include
-	install -m 0644 piNes.h		/usr/local/include
-	install -m 0644 softPwm.h	/usr/local/include
-	install -m 0644 lcd.h		/usr/local/include
-	install -m 0644 wiringPiSPI.h	/usr/local/include
-	install -m 0644 libwiringPi.a	/usr/local/lib
+	@install -m 0755 -d /usr/local/lib
+	@install -m 0755 -d /usr/local/include
+	@install -m 0644 wiringPi.h	/usr/local/include
+	@install -m 0644 wiringSerial.h	/usr/local/include
+	@install -m 0644 wiringShift.h	/usr/local/include
+	@install -m 0644 gertboard.h	/usr/local/include
+	@install -m 0644 piNes.h		/usr/local/include
+	@install -m 0644 softPwm.h	/usr/local/include
+	@install -m 0644 lcd.h		/usr/local/include
+	@install -m 0644 wiringPiSPI.h	/usr/local/include
+	@install -m 0644 libwiringPi.a	/usr/local/lib
+	@install	-m 0755 libwiringPi.so.1.0 /usr/local/lib
+	@ln -sf /usr/local/lib/libwiringPi.so.1.0 /usr/local/lib/libwiringPi.so
+	@ln -sf /usr/local/lib/libwiringPi.so.1.0 /usr/local/lib/libwiringPi.so.1
+	@ldconfig
 
 uninstall:
 	@echo [uninstall]
-	rm -f /usr/local/include/lcd.h
-	rm -f /usr/local/include/lpiNes.h
-	rm -f /usr/local/include/gertboard.h
-	rm -f /usr/local/include/wiringShift.h
-	rm -f /usr/local/include/wiringSerial.h
-	rm -f /usr/local/include/wiringPi.h
-	rm -f /usr/local/lib/libwiringPi.a
+	@rm -f /usr/local/include/wiringPi.h
+	@rm -f /usr/local/include/wiringSerial.h
+	@rm -f /usr/local/include/wiringShift.h
+	@rm -f /usr/local/include/gertboard.h
+	@rm -f /usr/local/include/piNes.h
+	@rm -f /usr/local/include/softPwm.h
+	@rm -f /usr/local/include/lcd.h
+	@rm -f /usr/local/include/wiringPiSPI.h
+	@rm -f /usr/local/lib/libwiringPi.*
+	@ldconfig
 
 
 # DO NOT DELETE
@@ -98,8 +113,10 @@ wiringPi.o: wiringPi.h
 wiringPiFace.o: wiringPi.h
 wiringSerial.o: wiringSerial.h
 wiringShift.o: wiringPi.h wiringShift.h
-gertboard.o: gertboard.h
+gertboard.o: wiringPiSPI.h gertboard.h
 piNes.o: wiringPi.h piNes.h
 lcd.o: wiringPi.h lcd.h
 piHiPri.o: wiringPi.h
 piThread.o: wiringPi.h
+softPwm.o: wiringPi.h softPwm.h
+wiringPiSPI.o: wiringPiSPI.h

+ 4 - 1
wiringPi/lcd.c

@@ -75,7 +75,10 @@ struct lcdDataStruct *lcds [MAX_LCDS] ;
 
 static void strobe (struct lcdDataStruct *lcd)
 {
-  digitalWrite (lcd->strbPin, 1) ; delayMicroseconds  (1) ;
+
+// Note timing changes for new version of delayMicroseconds ()
+
+  digitalWrite (lcd->strbPin, 1) ; delayMicroseconds (50) ;
   digitalWrite (lcd->strbPin, 0) ; delayMicroseconds (50) ;
 }
 

+ 4 - 4
wiringPi/lcd.h

@@ -26,6 +26,10 @@
 
 #define	MAX_LCDS	8
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern void lcdHome     (int fd) ;
 extern void lcdClear    (int fd) ;
 extern void lcdPosition (int fd, int x, int y) ;
@@ -33,10 +37,6 @@ extern void lcdPutchar  (int fd, uint8_t data) ;
 extern void lcdPuts     (int fd, char *string) ;
 extern void lcdPrintf   (int fd, char *message, ...) ;
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 extern int  lcdInit (int rows, int cols, int bits, int rs, int strb,
 	int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7) ;
 

+ 6 - 3
wiringPi/wiringPi.c

@@ -427,6 +427,7 @@ int piBoardRev (void)
       }
 
   fclose (cpuFd) ;
+
   if (r == -1)
   {
     fprintf (stderr, "piBoardRev: Unable to determine board revision from /proc/cpuinfo\n") ;
@@ -449,9 +450,11 @@ int piBoardRev (void)
     boardRev = 2 ;
   else
   {
-    fprintf (stderr, "piBoardRev: Unable to determine board revision from %d\n", r) ;
-    errno = 0 ;
-    return -1 ;
+    fprintf (stderr, "WARNING: wiringPi: Unable to determine board revision from \"%d\"\n", r) ;
+    fprintf (stderr, " -> You may want to check:\n") ;
+    fprintf (stderr, " -> http://www.raspberrypi.org/phpBB3/viewtopic.php?p=184410#p184410\n") ;
+    fprintf (stderr, " -> Assuming a Rev 1 board\n") ;
+    boardRev = 1 ;
   }
 
   if (wiringPiDebug)