解決樹莓派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的庫和頭文件。

 

 

 

 

 

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