36 Commits

Author SHA1 Message Date
Mark Liffiton 7f8fe26e4f Merge pull request #120 from toca21/master
Fixed the Compute Module 4 pin mode setting.
2021-07-26 14:22:01 -05:00
toca21 5cabf4a4f8 Fixed the Compute Module 4 pin mode setting. The CM4 is equal to RB4 std platform, not CM3 family as it turned out. 2021-07-20 21:49:53 +02:00
Mark Liffiton 6a17382a0a Merge pull request #115 from Faboor/patch-1
Return error from `softPwmCreate` if `pthread_create` fails
2021-06-19 11:07:42 -05:00
Peter Kovary 772e1198dd Return error from softPwmCreate if pthread_create fails
If `pthread_create` fails, `newPin` will never get reset to -1 and process would hang. This change will return from `softPwmCreate` immediately if  `pthread_create` returns a non-zero value and avoid hanging forever.
2021-06-19 12:55:49 +01:00
Mark Liffiton afddd8c504 Merge pull request #114 from wolfv/patch-1
LIBS have to come after OBJ files for recent GCC
2021-06-14 20:56:02 -05:00
Mark Liffiton 8b33c328be Merge pull request #111 from MichaIng/patch-1
Fix build warnings
2021-06-09 08:43:17 -05:00
Wolf Vollprecht d903619255 LIBS have to come after OBJ files for recent GCC 2021-06-08 17:52:44 +02:00
MichaIng f152400923 Update wiringPi.c
wiringPi.c:1328:21: warning: ‘digitalWrite8Dummy’ defined but not used [-Wunused-function]
 1328 | static         void digitalWrite8Dummy       (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
      |                     ^~~~~~~~~~~~~~~~~~
wiringPi.c:1327:21: warning: ‘digitalRead8Dummy’ defined but not used [-Wunused-function]
 1327 | static unsigned int digitalRead8Dummy        (UNU struct wiringPiNodeStruct *node, UNU int UNU pin)            { return 0 ; }
      |                     ^~~~~~~~~~~~~~~~~

The related nodes at line 1360 and 1362 have been commented before.

Signed-off-by: MichaIng <micha@dietpi.com>
2021-05-01 21:32:50 +02:00
Philip Howard f66c883d7c Update README.md to clarify project status (#81) 2021-03-30 10:49:00 -05:00
fanoush 10be9486ff set WPI_MODE_GPIO as a default mode also for CM4 (#92) 2021-03-30 10:47:47 -05:00
freddyrios 22fac72e1a fixes WiringPi/WiringPi#100 (#101)
Replaces a bare wait() with waitpid() to only wait on the just-forked process.
2021-02-23 21:20:12 -06:00
Philip Howard e9821abdb4 Merge pull request #90 from WiringPi/patch-build
Remove projects@drogon.net contact from build
2020-11-28 20:25:02 +00:00
Phil Howard 0bfff4e208 Update support contacts for INSTALL and gpio.1 2020-11-26 20:11:56 +00:00
Philip Howard 3772a913d0 Merge pull request #91 from WiringPi/patch-actions
GitHub Actions
2020-11-26 20:01:21 +00:00
akvavit01 91f3520239 Fix for multiple definition of comDat (#76)
* Fix for multiple definition of comDat
2020-11-26 12:57:36 -06:00
Philip Howard d4b96c7cb4 Merge pull request #85 from namikata2020/rpi4_8g
Add piMemorySize for rpi4 8G
2020-11-26 16:36:49 +00:00
Philip Howard 4fc9420625 Merge pull request #89 from fanoush/master
Add support for Pi 400 and CM4
2020-11-26 16:19:37 +00:00
Phil Howard 50fa6362f9 First crack at a build workflow 2020-11-26 16:18:51 +00:00
Phil Howard 726d5c411c Remove projects@drogon.net contact from build 2020-11-26 16:09:34 +00:00
fanoush 1aed7f7c9d Add support for Pi 400 and CM4 2020-11-26 15:57:05 +01:00
namikata2020 6ca0231124 Add piMemorySize for rpi4 8G 2020-10-06 14:50:12 +09:00
Philip Howard 5c6bab7d42 Merge pull request #79 from DavidAntliff/debian-fix
Remove hard-coded destination paths for debian package creation.
2020-09-14 15:02:31 +01:00
Philip Howard 6d9ce35f00 Merge pull request #73 from CoRfr/master
Make external CC declaration possible
2020-09-14 14:59:54 +01:00
David Antliff f9ff3b4d35 Remove hard-coded destination paths for debian package creation. 2020-09-03 13:18:01 +12:00
Mark Liffiton 50b7c5ed7d Merge pull request #75 from ykla/master
Add piMemorySize for rpi4b
2020-04-07 21:53:39 -05:00
FindWaySociety-ykla 7d8188d0bf Add piMemorySize for rpi4
#include <stdio.h>

int main()
{
	int bRev, bType, bProc, bMfg, bMem, bWarranty ;
	int revision = 12595474; //Convert hexadecimal to decimal
	bRev      = (revision & (0x0F <<  0)) >>  0 ;
        bType     = (revision & (0xFF <<  4)) >>  4 ;
        bProc     = (revision & (0x0F << 12)) >> 12 ;	// Not used for now.
        bMfg      = (revision & (0x0F << 16)) >> 16 ;
        bMem      = (revision & (0x07 << 20)) >> 20 ;
       bWarranty = (revision & (0x03 << 24)) != 0 ;
       printf ("piBoardId: rev: %d, type: %d, proc: %d, mfg: %d, mem: %d, warranty: %d\n",
		bRev, bType, bProc, bMfg, bMem, bWarranty) ;

   return 0;
}

/* revision see https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md 
*RPI revision is HEX.*\
2020-04-07 17:19:45 +08:00
Bertrand Roussel 33fbcd7e50 Make external CC and CFLAGS declaration possible 2020-01-26 11:13:14 -08:00
Mark Liffiton 5bbb6e34b8 Merge pull request #71 from neuralassembly/master
Keeping compatibility of hardware clock of Pi 4 with earlier versions.
2019-12-31 15:24:56 -06:00
neuralassembly 651136a110 Keeping compatibility of hardware clock of Pi 4 with earlier versions. 2019-12-30 23:40:30 +09:00
Mark Liffiton 1f908c5eed Small change to reflect new version. 2019-12-29 20:40:42 -06:00
Mark Liffiton 2a8e57a1c7 Update README, convert to markdown
With Gordon ending development of WiringPi, this repository needs to reflect the situation accurately and differentiate between Gordon's final code release and updates made since then.
2019-12-29 20:39:00 -06:00
Mark Liffiton 16a23e3688 Merge pull request #70 from steveb/master
Add support for Raspberry Pi 4B
2019-12-29 20:23:09 -06:00
Steve Baker 9aed9a4415 Increment version to 2.60
Now that the upstream maintainer has abandoned this project without
establishing another maintainer, its difficult to choose an appropriate
version number. Going with 2.60 for now, as this only has incremental
changes to support 4B.
2019-12-14 20:45:00 +00:00
Steve Baker 41f941a78e Fix GPIO pull up/down for Pi4B
Based on this raspi-gpio commit[1] the 2711 chip uses a different method
for pull up/down. This change implements that same method.

With this change, wiringPi now works for the Pi4B with the subset of
functionality used by zynthian.

[1] https://github.com/RPi-Distro/raspi-gpio/commit/80fa7d04eafb3ea34fc6f2d32de5f1873b5fb369?diff=unified
2019-12-14 20:42:06 +00:00
Steve Baker a49f696232 Use correct peripheral address for Pi4B 2019-12-14 02:01:23 +00:00
Steve Baker aca883a051 Add support for Raspberry Pi 4B
This change make the following commands correctly detect the 4B
however there may be an issue with reading GPIO inputs on the 4B
as they are always returning zero.

The aim of this change is to be the source-equivalent of the binary
package release 2.52[1] which was the last release before upstream
development ceased.

[1] http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/
2019-12-14 01:09:13 +00:00
26 changed files with 230 additions and 134 deletions
+16
View File
@@ -0,0 +1,16 @@
name: Build
on:
pull_request:
push:
branches:
- master
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run build
run: |
./build
+6 -2
View File
@@ -23,7 +23,11 @@ To un-install wiringPi:
./build uninstall
Gordon Henderson
For help and support see:
projects@drogon.net
* https://github.com/WiringPi/WiringPi/issues
* https://discord.gg/SM4WUVG
wiringPi originally created by Gordon Henderson
https://projects.drogon.net/
-36
View File
@@ -1,36 +0,0 @@
Note
====
This is an unofficial mirror of WiringPi to support ports (Python/Ruby/etc).
Please do not email Gordon if you have issues, he will not be able to help.
Pull-requests are not currently accepted, since this is a mirror.
For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG
wiringPi README
===============
Please note that the official way to get wiringPi is via git from
git.drogon.net and not GitHub.
ie.
git clone git://git.drogon.net/wiringPi
The version of wiringPi held on GitHub by "Gadgetoid" is used to build the
wiringPython, Ruby, Perl, etc. wrappers for these other languages. This
version may lag the official Drogon release. Pull requests may not be
accepted to Github....
Please see
http://wiringpi.com/
for the official documentation, etc. and the best way to submit bug reports, etc.
is by sending an email to projects@drogon.net
Thanks!
-Gordon
+33
View File
@@ -0,0 +1,33 @@
WiringPi (Unofficial Mirror/Fork)
=================================
This is an unofficial mirror/fork of wiringPi to support ports (Python/Ruby/etc). With the
[end of official development](http://wiringpi.com/wiringpi-deprecated/), this repository
has become a mirror of the last "official" source release, plus a fork facilitating updates
to support newer hardware (primarily for use by the ports) and fix bugs.
* The final "official" source release can be found at the
[`final_source_2.50`](https://github.com/WiringPi/WiringPi/tree/final_official_2.50) tag.
* The default `master` branch contains code that has been written since that final source
release to provide support for newer hardware.
Ports
-----
wiringPi has been wrapped for multiple languages:
* Node - https://github.com/WiringPi/WiringPi-Node
* Perl - https://github.com/WiringPi/WiringPi-Perl
* PHP - https://github.com/WiringPi/WiringPi-PHP
* Python - https://github.com/WiringPi/WiringPi-Python
* Ruby - https://github.com/WiringPi/WiringPi-Ruby
Support
-------
Please do not email Gordon if you have issues, he will not be able to help.
Pull-requests may be accepted to add or fix support for newer hardware, but new features or
other changes may not be accepted.
For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG
+1 -1
View File
@@ -1 +1 @@
2.50
2.60
+6 -5
View File
@@ -36,8 +36,8 @@ check_make_ok() {
echo ""
echo "Make Failed..."
echo "Please check the messages and fix any problems. If you're still stuck,"
echo "then please email all the output and as many details as you can to"
echo " projects@drogon.net"
echo "then raise a GitHub issue with the output and as many details as you can"
echo " https://github.com/WiringPi/WiringPi/issues"
echo ""
exit 1
fi
@@ -84,14 +84,15 @@ fi
if [ x$1 = "xdebian" ]; then
here=`pwd`
deb_destdir=${here}/debian-template/wiringPi
cd debian-template/wiringPi
rm -rf usr
cd $here/wiringPi
make install-deb
make install-deb DEB_DESTDIR=${deb_destdir}
cd $here/devLib
make install-deb INCLUDE='-I. -I../wiringPi'
make install-deb INCLUDE='-I. -I../wiringPi' DEB_DESTDIR=${deb_destdir}
cd $here/gpio
make install-deb INCLUDE='-I../wiringPi -I../devLib' LDFLAGS=-L../debian-template/wiringPi/usr/lib
make install-deb INCLUDE='-I../wiringPi -I../devLib' LDFLAGS=-L../debian-template/wiringPi/usr/lib DEB_DESTDIR=${deb_destdir}
cd $here/debian-template
fakeroot dpkg-deb --build wiringPi
mv wiringPi.deb wiringpi-`cat $here/VERSION`-1.deb
+1 -1
View File
@@ -1,5 +1,5 @@
Package: wiringpi
Version: 2.50
Version: 2.60
Section: libraries
Priority: optional
Architecture: armhf
View File
View File
+14 -8
View File
@@ -36,10 +36,10 @@ DYNAMIC=libwiringPiDev.so.$(VERSION)
#DEBUG = -g -O0
DEBUG = -O2
CC = gcc
CC ?= gcc
INCLUDE = -I.
DEFS = -D_GNU_SOURCE
CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS)
LIBS =
@@ -105,15 +105,21 @@ install-static: $(STATIC)
$Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
$Q install -m 0755 libwiringPiDev.a $(DESTDIR)$(PREFIX)/lib
.PHONY: check-deb-destdir
check-deb-destdir:
ifndef DEB_DESTDIR
$(error DEB_DESTDIR is undefined)
endif
.PHONY: install-deb
install-deb: $(DYNAMIC)
install-deb: $(DYNAMIC) check-deb-destdir
$Q echo "[Install Headers: deb]"
$Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/include
$Q install -m 0644 $(HEADERS) ~/wiringPi/debian-template/wiringPi/usr/include
$Q install -m 0755 -d $(DEB_DESTDIR)/usr/include
$Q install -m 0644 $(HEADERS) $(DEB_DESTDIR)/usr/include
$Q echo "[Install Dynamic Lib: deb]"
install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/lib
install -m 0755 libwiringPiDev.so.$(VERSION) ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPiDev.so.$(VERSION)
ln -sf ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPiDev.so.$(VERSION) ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPiDev.so
install -m 0755 -d $(DEB_DESTDIR)/usr/lib
install -m 0755 libwiringPiDev.so.$(VERSION) $(DEB_DESTDIR)/usr/lib/libwiringPiDev.so.$(VERSION)
ln -sf $(DEB_DESTDIR)/usr/lib/libwiringPiDev.so.$(VERSION) $(DEB_DESTDIR)/usr/lib/libwiringPiDev.so
.PHONY: uninstall
uninstall:
+2 -2
View File
@@ -11,9 +11,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
CC ?= gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+2 -2
View File
@@ -28,9 +28,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
CC ?= gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt
+2 -2
View File
@@ -28,9 +28,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
CC ?= gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+2 -2
View File
@@ -28,9 +28,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
CC ?= gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+2 -2
View File
@@ -28,9 +28,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
CC ?= gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+2 -2
View File
@@ -28,9 +28,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
CC ?= gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+13 -7
View File
@@ -32,9 +32,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O2
CC = gcc
CC ?= gcc
INCLUDE = -I$(DESTDIR)$(PREFIX)/include
CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib
LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt
@@ -80,13 +80,19 @@ endif
$Q mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1
$Q cp gpio.1 $(DESTDIR)$(PREFIX)/share/man/man1
.PHONY: check-deb-destdir
check-deb-destdir:
ifndef DEB_DESTDIR
$(error DEB_DESTDIR is undefined)
endif
.PHONY: install-deb
install-deb: gpio
install-deb: gpio check-deb-destdir
$Q echo "[Install: deb]"
$Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/bin
$Q install -m 0755 gpio ~/wiringPi/debian-template/wiringPi/usr/bin
$Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/share/man/man1
$Q install -m 0644 gpio.1 ~/wiringPi/debian-template/wiringPi/usr/share/man/man1
$Q install -m 0755 -d $(DEB_DESTDIR)/usr/bin
$Q install -m 0755 gpio $(DEB_DESTDIR)/usr/bin
$Q install -m 0755 -d $(DEB_DESTDIR)/usr/share/man/man1
$Q install -m 0644 gpio.1 $(DEB_DESTDIR)/usr/share/man/man1
.PHONY: uninstall
uninstall:
+1 -1
View File
@@ -337,7 +337,7 @@ Gordon Henderson
.SH "REPORTING BUGS"
Please report bugs to <projects@drogon.net>
Please report bugs to https://github.com/WiringPi/WiringPi/issues
.SH COPYRIGHT
+9 -4
View File
@@ -80,7 +80,7 @@ static char *alts [] =
"IN", "OUT", "ALT5", "ALT4", "ALT0", "ALT1", "ALT2", "ALT3"
} ;
static int physToWpi [64] =
static int physToWpi [64] =
{
-1, // 0
-1, -1, // 1, 2
@@ -113,7 +113,7 @@ static int physToWpi [64] =
-1, -1, -1, -1, -1, -1, -1, -1, -1
} ;
static char *physNames [64] =
static char *physNames [64] =
{
NULL,
@@ -309,6 +309,10 @@ static void plus2header (int model)
printf (" +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+\n") ;
else if (model == PI_MODEL_3AP)
printf (" +-----+-----+---------+------+---+---Pi 3A+-+---+------+---------+-----+-----+\n") ;
else if (model == PI_MODEL_4B)
printf (" +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+\n") ;
else if (model == PI_MODEL_400)
printf (" +-----+-----+---------+------+---+---Pi 400-+---+------+---------+-----+-----+\n") ;
else
printf (" +-----+-----+---------+------+---+---Pi ?---+---+------+---------+-----+-----+\n") ;
}
@@ -356,9 +360,10 @@ void doReadall (void)
(model == PI_MODEL_2) ||
(model == PI_MODEL_3AP) ||
(model == PI_MODEL_3B) || (model == PI_MODEL_3BP) ||
(model == PI_MODEL_ZERO) || (model == PI_MODEL_ZERO_W))
(model == PI_MODEL_4B) || (model == PI_MODEL_400) ||
(model == PI_MODEL_ZERO) || (model == PI_MODEL_ZERO_W) || (model == PI_MODEL_CM4))
piPlusReadall (model) ;
else if ((model == PI_MODEL_CM) || (model == PI_MODEL_CM3) || ((model == PI_MODEL_CM3P)))
else if ((model == PI_MODEL_CM) || (model == PI_MODEL_CM3) || (model == PI_MODEL_CM3P) )
allReadall () ;
else
printf ("Oops - unable to determine board type... model: %d\n", model) ;
+2 -2
View File
@@ -1,3 +1,3 @@
#define VERSION "2.50"
#define VERSION "2.60"
#define VERSION_MAJOR 2
#define VERSION_MINOR 50
#define VERSION_MINOR 60
+15 -9
View File
@@ -36,10 +36,10 @@ DYNAMIC=libwiringPi.so.$(VERSION)
#DEBUG = -g -O0
DEBUG = -O2
CC = gcc
CC ?= gcc
INCLUDE = -I.
DEFS = -D_GNU_SOURCE
CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC
CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC $(EXTRA_CFLAGS)
#CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Wconversion -Winline $(INCLUDE) -pipe -fPIC
LIBS = -lm -lpthread -lrt -lcrypt
@@ -75,7 +75,7 @@ static:
$(DYNAMIC): $(OBJ)
$Q echo "[Link (Dynamic)]"
$Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(LIBS) $(OBJ)
$Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(OBJ) $(LIBS)
.c.o:
$Q echo [Compile] $<
@@ -104,15 +104,21 @@ install: $(DYNAMIC)
$Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so
$Q $(LDCONFIG)
.PHONY: check-deb-destdir
check-deb-destdir:
ifndef DEB_DESTDIR
$(error DEB_DESTDIR is undefined)
endif
.PHONY: install-deb
install-deb: $(DYNAMIC)
install-deb: $(DYNAMIC) check-deb-destdir
$Q echo "[Install Headers: deb]"
$Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/include
$Q install -m 0644 $(HEADERS) ~/wiringPi/debian-template/wiringPi/usr/include
$Q install -m 0755 -d $(DEB_DESTDIR)/usr/include
$Q install -m 0644 $(HEADERS) $(DEB_DESTDIR)/usr/include
$Q echo "[Install Dynamic Lib: deb]"
install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/lib
install -m 0755 libwiringPi.so.$(VERSION) ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPi.so.$(VERSION)
ln -sf ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPi.so.$(VERSION) ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPi.so
install -m 0755 -d $(DEB_DESTDIR)/usr/lib
install -m 0755 libwiringPi.so.$(VERSION) $(DEB_DESTDIR)/usr/lib/libwiringPi.so.$(VERSION)
ln -sf $(DEB_DESTDIR)/usr/lib/libwiringPi.so.$(VERSION) $(DEB_DESTDIR)/usr/lib/libwiringPi.so
.PHONY: uninstall
uninstall:
+3
View File
@@ -153,6 +153,9 @@ int softPwmCreate (int pin, int initialValue, int pwmRange)
newPin = pin ;
res = pthread_create (&myThread, NULL, softPwmThread, (void *)passPin) ;
if (res != 0)
return res ;
while (newPin != -1)
delay (1) ;
+85 -35
View File
@@ -213,12 +213,13 @@ volatile unsigned int *_wiringPiTimerIrqRaw ;
// piGpioBase:
// The base address of the GPIO memory mapped hardware IO
#define GPIO_PERI_BASE_OLD 0x20000000
#define GPIO_PERI_BASE_NEW 0x3F000000
#define GPIO_PERI_BASE_OLD 0x20000000
#define GPIO_PERI_BASE_2835 0x3F000000
#define GPIO_PERI_BASE_2711 0xFE000000
static volatile unsigned int piGpioBase = 0 ;
const char *piModelNames [20] =
const char *piModelNames [21] =
{
"Model A", // 0
"Model B", // 1
@@ -237,9 +238,10 @@ const char *piModelNames [20] =
"Pi 3A+", // 14
"Unknown15", // 15
"CM3+", // 16
"Unknown17", // 17
"Pi 4B", // 17
"Unknown18", // 18
"Unknown19", // 19
"Pi 400", // 19
"CM4", // 20
} ;
const char *piRevisionNames [16] =
@@ -287,9 +289,9 @@ const int piMemorySize [8] =
256, // 0
512, // 1
1024, // 2
0, // 3
0, // 4
0, // 5
2048, // 3
4096, // 4
8192, // 5
0, // 6
0, // 7
} ;
@@ -542,6 +544,14 @@ static uint8_t gpioToFEN [] =
#define GPPUD 37
/* 2711 has a different mechanism for pin pull-up/down/enable */
#define GPPUPPDN0 57 /* Pin pull-up/down for pins 15:0 */
#define GPPUPPDN1 58 /* Pin pull-up/down for pins 31:16 */
#define GPPUPPDN2 59 /* Pin pull-up/down for pins 47:32 */
#define GPPUPPDN3 60 /* Pin pull-up/down for pins 57:48 */
static volatile unsigned int piGpioPupOffset = 0 ;
// gpioToPUDCLK
// (Word) offset to the Pull Up Down Clock regsiter
@@ -818,7 +828,7 @@ int piGpioLayout (void)
for (c = &line [strlen (line) - 1] ; (*c == '\n') || (*c == '\r') ; --c)
*c = 0 ;
if (wiringPiDebug)
printf ("piGpioLayout: Revision string: %s\n", line) ;
@@ -887,7 +897,7 @@ int piBoardRev (void)
* So the distinction between boards that I can see is:
*
* 0000 - Error
* 0001 - Not used
* 0001 - Not used
*
* Original Pi boards:
* 0002 - Model B, Rev 1, 256MB, Egoman
@@ -972,7 +982,7 @@ void piBoardId (int *model, int *rev, int *mem, int *maker, int *warranty)
for (c = &line [strlen (line) - 1] ; (*c == '\n') || (*c == '\r') ; --c)
*c = 0 ;
if (wiringPiDebug)
printf ("piBoardId: Revision string: %s\n", line) ;
@@ -1011,7 +1021,7 @@ void piBoardId (int *model, int *rev, int *mem, int *maker, int *warranty)
bMfg = (revision & (0x0F << 16)) >> 16 ;
bMem = (revision & (0x07 << 20)) >> 20 ;
bWarranty = (revision & (0x03 << 24)) != 0 ;
*model = bType ;
*rev = bRev ;
*mem = bMem ;
@@ -1038,7 +1048,7 @@ void piBoardId (int *model, int *rev, int *mem, int *maker, int *warranty)
// If longer than 4, we'll assume it's been overvolted
*warranty = strlen (c) > 4 ;
// Extract last 4 characters:
c = c + strlen (c) - 4 ;
@@ -1078,7 +1088,7 @@ void piBoardId (int *model, int *rev, int *mem, int *maker, int *warranty)
else { *model = 0 ; *rev = 0 ; *mem = 0 ; *maker = 0 ; }
}
}
/*
@@ -1209,6 +1219,11 @@ void pwmSetRange (unsigned int range)
void pwmSetClock (int divisor)
{
uint32_t pwm_control ;
if (piGpioBase == GPIO_PERI_BASE_2711)
{
divisor = 540*divisor/192;
}
divisor &= 4095 ;
if ((wiringPiMode == WPI_MODE_PINS) || (wiringPiMode == WPI_MODE_PHYS) || (wiringPiMode == WPI_MODE_GPIO))
@@ -1264,7 +1279,7 @@ void gpioClockSet (int pin, int freq)
pin = physToGpio [pin] ;
else if (wiringPiMode != WPI_MODE_GPIO)
return ;
divi = 19200000 / freq ;
divr = 19200000 % freq ;
divf = (int)((double)divr * 4096.0 / 19200000.0) ;
@@ -1309,8 +1324,8 @@ struct wiringPiNodeStruct *wiringPiFindNode (int pin)
static void pinModeDummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int mode) { return ; }
static void pullUpDnControlDummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int pud) { return ; }
static unsigned int digitalRead8Dummy (UNU struct wiringPiNodeStruct *node, UNU int UNU pin) { return 0 ; }
static void digitalWrite8Dummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
//static unsigned int digitalRead8Dummy (UNU struct wiringPiNodeStruct *node, UNU int UNU pin) { return 0 ; }
//static void digitalWrite8Dummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
static int digitalReadDummy (UNU struct wiringPiNodeStruct *node, UNU int UNU pin) { return LOW ; }
static void digitalWriteDummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
static void pwmWriteDummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
@@ -1508,11 +1523,36 @@ void pullUpDnControl (int pin, int pud)
else if (wiringPiMode != WPI_MODE_GPIO)
return ;
*(gpio + GPPUD) = pud & 3 ; delayMicroseconds (5) ;
*(gpio + gpioToPUDCLK [pin]) = 1 << (pin & 31) ; delayMicroseconds (5) ;
*(gpio + GPPUD) = 0 ; delayMicroseconds (5) ;
*(gpio + gpioToPUDCLK [pin]) = 0 ; delayMicroseconds (5) ;
if (piGpioPupOffset == GPPUPPDN0)
{
// Pi 4B pull up/down method
int pullreg = GPPUPPDN0 + (pin>>4);
int pullshift = (pin & 0xf) << 1;
unsigned int pullbits;
unsigned int pull;
switch (pud)
{
case PUD_OFF: pull = 0; break;
case PUD_UP: pull = 1; break;
case PUD_DOWN: pull = 2; break;
default: return ; /* An illegal value */
}
pullbits = *(gpio + pullreg);
pullbits &= ~(3 << pullshift);
pullbits |= (pull << pullshift);
*(gpio + pullreg) = pullbits;
}
else
{
// legacy pull up/down method
*(gpio + GPPUD) = pud & 3 ; delayMicroseconds (5) ;
*(gpio + gpioToPUDCLK [pin]) = 1 << (pin & 31) ; delayMicroseconds (5) ;
*(gpio + GPPUD) = 0 ; delayMicroseconds (5) ;
*(gpio + gpioToPUDCLK [pin]) = 0 ; delayMicroseconds (5) ;
}
}
else // Extension module
{
@@ -1533,7 +1573,6 @@ int digitalRead (int pin)
{
char c ;
struct wiringPiNodeStruct *node = wiringPiNodes ;
if ((pin & PI_GPIO_MASK) == 0) // On-Board Pin
{
/**/ if (wiringPiMode == WPI_MODE_GPIO_SYS) // Sys mode
@@ -1684,7 +1723,7 @@ void pwmWrite (int pin, int value)
/*
* analogRead:
* Read the analog value of a given Pin.
* Read the analog value of a given Pin.
* There is no on-board Pi analog hardware,
* so this needs to go to a new node.
*********************************************************************************
@@ -1703,7 +1742,7 @@ int analogRead (int pin)
/*
* analogWrite:
* Write the analog value to the given Pin.
* Write the analog value to the given Pin.
* There is no on-board Pi analog hardware,
* so this needs to go to a new node.
*********************************************************************************
@@ -1752,7 +1791,7 @@ void pwmToneWrite (int pin, int freq)
* Write an 8-bit byte to the first 8 GPIO pins - try to do it as
* fast as possible.
* However it still needs 2 operations to set the bits, so any external
* hardware must not rely on seeing a change as there will be a change
* hardware must not rely on seeing a change as there will be a change
* to set the outputs bits to zero, then another change to set the 1's
* Reading is just bit fiddling.
* These are wiringPi pin numbers 0..7, or BCM_GPIO pin numbers
@@ -1808,7 +1847,7 @@ unsigned int digitalReadByte (void)
data = (data << 1) | x ;
}
}
else
else
{
raw = *(gpio + gpioToGPLEV [0]) ; // First bank for these pins
for (pin = 0 ; pin < 8 ; ++pin)
@@ -1865,7 +1904,7 @@ unsigned int digitalReadByte2 (void)
data = (data << 1) | x ;
}
}
else
else
data = ((*(gpio + gpioToGPLEV [0])) >> 20) & 0xFF ; // First bank for these pins
return data ;
@@ -2010,7 +2049,7 @@ int wiringPiISR (int pin, int mode, void (*function)(void))
return wiringPiFailure (WPI_FATAL, "wiringPiISR: Can't find gpio program\n") ;
}
else // Parent, wait
wait (NULL) ;
waitpid (pid, NULL, 0) ;
}
// Now pre-open the /sys/class node - but it may already be open if
@@ -2243,7 +2282,9 @@ int wiringPiSetup (void)
piBoardId (&model, &rev, &mem, &maker, &overVolted) ;
if ((model == PI_MODEL_CM) || (model == PI_MODEL_CM3) || (model == PI_MODEL_CM3P))
if ((model == PI_MODEL_CM) ||
(model == PI_MODEL_CM3) ||
(model == PI_MODEL_CM3P))
wiringPiMode = WPI_MODE_GPIO ;
else
wiringPiMode = WPI_MODE_PINS ;
@@ -2268,16 +2309,25 @@ int wiringPiSetup (void)
case PI_ALPHA: case PI_MODEL_CM:
case PI_MODEL_ZERO: case PI_MODEL_ZERO_W:
piGpioBase = GPIO_PERI_BASE_OLD ;
piGpioPupOffset = GPPUD ;
break ;
case PI_MODEL_4B:
case PI_MODEL_400:
case PI_MODEL_CM4:
piGpioBase = GPIO_PERI_BASE_2711 ;
piGpioPupOffset = GPPUPPDN0 ;
break ;
default:
piGpioBase = GPIO_PERI_BASE_NEW ;
piGpioBase = GPIO_PERI_BASE_2835 ;
piGpioPupOffset = GPPUD ;
break ;
}
// Open the master /dev/ memory control device
// Device strategy: December 2016:
// Try /dev/mem. If that fails, then
// Try /dev/mem. If that fails, then
// try /dev/gpiomem. If that fails then game over.
if ((fd = open ("/dev/mem", O_RDWR | O_SYNC | O_CLOEXEC)) < 0)
@@ -2315,13 +2365,13 @@ int wiringPiSetup (void)
pwm = (uint32_t *)mmap(0, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_PWM) ;
if (pwm == MAP_FAILED)
return wiringPiFailure (WPI_ALMOST, "wiringPiSetup: mmap (PWM) failed: %s\n", strerror (errno)) ;
// Clock control (needed for PWM)
clk = (uint32_t *)mmap(0, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_CLOCK_BASE) ;
if (clk == MAP_FAILED)
return wiringPiFailure (WPI_ALMOST, "wiringPiSetup: mmap (CLOCK) failed: %s\n", strerror (errno)) ;
// The drive pads
pads = (uint32_t *)mmap(0, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_PADS) ;
@@ -2441,7 +2491,7 @@ int wiringPiSetupSys (void)
// Open and scan the directory, looking for exported GPIOs, and pre-open
// the 'value' interface to speed things up for later
for (pin = 0 ; pin < 64 ; ++pin)
{
sprintf (fName, "/sys/class/gpio/gpio%d/value", pin) ;
+6 -3
View File
@@ -102,6 +102,9 @@
#define PI_MODEL_3BP 13
#define PI_MODEL_3AP 14
#define PI_MODEL_CM3P 16
#define PI_MODEL_4B 17
#define PI_MODEL_400 19
#define PI_MODEL_CM4 20
#define PI_VERSION_1 0
#define PI_VERSION_1_1 1
@@ -113,7 +116,7 @@
#define PI_MAKER_EMBEST 2
#define PI_MAKER_UNKNOWN 3
extern const char *piModelNames [20] ;
extern const char *piModelNames [21] ;
extern const char *piRevisionNames [16] ;
extern const char *piMakerNames [16] ;
extern const int piMemorySize [ 8] ;
@@ -134,7 +137,7 @@ extern const int piMemorySize [ 8] ;
// wiringPiNodeStruct:
// This describes additional device nodes in the extended wiringPi
// 2.0 scheme of things.
// It's a simple linked list for now, but will hopefully migrate to
// It's a simple linked list for now, but will hopefully migrate to
// a binary tree for efficiency reasons - but then again, the chances
// of more than 1 or 2 devices being added are fairly slim, so who
// knows....
@@ -211,7 +214,7 @@ extern void pwmWrite (int pin, int value) ;
extern int analogRead (int pin) ;
extern void analogWrite (int pin, int value) ;
// PiFace specifics
// PiFace specifics
// (Deprecated)
extern int wiringPiSetupPiFace (void) ;
+6 -6
View File
@@ -31,9 +31,9 @@ endif
#DEBUG = -g -O0
DEBUG = -O2
CC = gcc
CC ?= gcc
INCLUDE = -I$(DESTDIR)$(PREFIX)/include
CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe
CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe $(EXTRA_CFLAGS)
LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib
LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt
@@ -78,10 +78,10 @@ install: wiringpid
.PHONY: install-deb
install-deb: gpio
$Q echo "[Install: deb]"
$Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/bin
$Q install -m 0755 gpio ~/wiringPi/debian-template/wiringPi/usr/bin
$Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/man/man1
$Q install -m 0644 gpio.1 ~/wiringPi/debian-template/wiringPi/man/man1
$Q install -m 0755 -d $(DEB_DESTDIR)/usr/bin
$Q install -m 0755 gpio $(DEB_DESTDIR)/usr/bin
$Q install -m 0755 -d $(DEB_DESTDIR)/man/man1
$Q install -m 0644 gpio.1 $(DEB_DESTDIR)/man/man1
.PHONY: uninstall
uninstall:
+1 -2
View File
@@ -40,5 +40,4 @@ struct drcNetComStruct
uint32_t pin ;
uint32_t cmd ;
uint32_t data ;
} comDat ;
};