解决树莓派4B关于wiringpi2.52的版本问题

最近在用树莓派做一些开发,在应用层控制GPIO,选用了wiringpi库,

具体怎么安装配置wiringpi可以参考https://blog.csdn.net/zhkmxx930xperia/article/details/50719518

但是这个版本是2.46,不能控制树莓派4B的gpio,gpio readall 命令不能用,官网给了一个升级到2.52的方法

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

但是执行 gpio -v 后还是显示2.46的版本,这下就郁闷了,

在网上找相关的资料,关于这方面的资料根本没有,全是怎么使用wiring,怎么安装wiring,我相信只要有用树莓派4B的肯定会与到这个头疼的问题。

这下就难住了。

最后经过一天的折腾,解决了问题,具体步骤参考下面

第一步:找一个文件夹,先安装上面的2.46,然后用gpio -v,会显示2.46的版本

第二步:在/usr/local/lib 下把这4个库另存一个文件,保存起来

libwiringPiDev.so  libwiringPiDev.so.2.46  libwiringPi.so  libwiringPi.so.2.46

第三步:在/usr/local/include  把这些头文件另存一个文件,保存起来

ads1115.h    ds1302.h     lcd128x64.h  maxdetect.h    mcp23017.h    mcp23x08.h  mcp4802.h  
piGlow.h      scrollPhat.h  softTone.h  wiringPiI2C.h   wpiExtensions.h
bmp180.h     ds18b20.h    lcd.h        mcp23008.h     mcp23s08.h    mcp3002.h   pcf8574.h  
piNes.h       sn3218.h      sr595.h     wiringPiSPI.h
drcNet.h     gertboard.h  max31855.h   mcp23016.h     mcp23s17.h    mcp3004.h   pcf8591.h  
pseudoPins.h  softPwm.h   wiringSerial.h
drcSerial.h  htu21d.h     max5322.h    mcp23016reg.h  mcp23x0817.h  mcp3422.h   piFace.h   
rht03.h       softServo.h   wiringPi.h  wiringShift.h

第四步:在你刚才安装2.46的目录下执行 ./build uninstall  卸载掉2.46

第五步:为了完全清除树莓派中的wiringpi,执行下面的命令

sudo apt-get remove wiringpi
sudo apt-get purge wiringpi
hash -r

第六步:测试是否还存在wiringpi,下面的状况就是正常的

#gpio
bash: /usr/local/bin/gpio: 没有哪个文件或目录

第七步:执行下面的命令,安装wiringpi2.52

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

第八步:测试wiringpi的版本,说明已经安装成功

# gpio -v
gpio version: 2.52
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony 
  * Device tree is enabled.
  *--> Raspberry Pi 4 Model B Rev 1.1
  * This Raspberry Pi supports user-level GPIO access.

# gpio readall
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 0 | OUT  | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+

第九步:把你刚才保存的库和头文件重新复制到相应的目录下

第十步:编写代码,测试没有问题

#include <wiringPi.h>
int main(void)
{
   wiringPiSetup();
   pinMode (1, OUTPUT);
   for(;;) {
       digitalWrite(1, HIGH);delay (500);
       digitalWrite(1, LOW);delay (500) ;
    }
}

注意:由于wiringpi有权限,所有一定要以root用户的方式去执行文件

 

总结:总共十步解决了这个头疼的问题,主要还是2.46和2.52大部分都兼容,所以可以直接用2.46的库和头文件。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章