廣州智維歡迎您!智維公司致力于先進的汽車及自動化測控儀器設備CAN總線分析儀_尾氣分析儀_空燃比分析儀_蓄電池檢測儀_數據記錄儀_數據采集_車載網絡_網關等產品

廣州智維電子科技有限公司

Guangzhou Triv Electronic Technologies Co.LTD

技術服務
SUPPORT

目前位置: 首頁 > 技術服務 > 技術資訊

2019-03-05

在Raspberry Pi上構建CANlib(linuxcan)

作者:    點擊:1266

當在任何Linux計算機上編譯CANlib(linuxcan)時,您需要確保使用正確的內核頭文件版本。例如,在Ubuntu上,您可以發出命令:

sudo apt install linux-headers-$(uname -r)

Linux標頭包目前不能用于Rasbian上,所以你必須做一些挖掘。一旦你知道要找什么其實并不難,讓我們開始。

安裝所需的軟件包

我們首先使用apt安裝’bc’包,用它在內核上執行`make prepare’。

$ sudo apt update
$ sudo apt install bc

查找正確版本的Linux標頭

通過一些詳細的挖掘,我們現在會發現在我們的Raspberry Pi上運行的Rasbian操作系統的構建中使用了什么版本的Linux標頭。我們首先通過執行以下命令找到目標系統中的固件版本:

$ export RPI_FW_REV=$(zcat /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | sed -n '/.*firmware as of [0-9a-fA-F]+/ {s/.*firmware as of ([0-9a-fA-F]+)/1/;p;q}')

環境變量‘RPI_FW_REV’現在應該已包含在我們的系統中使用的[https://github.com/raspberrypi/firmware]的修訂版本(git_hash)。

$ echo $RPI_FW_REV
3b98f7433649e13cf08f54f509d11491c99c4c0b

使用固件版本,我們現在可以通過執行以下命令找到系統中使用的Linux內核版本:

$ export RPI_LINUX_REV=$(wget https://raw.github.com/raspberrypi/firmware/$RPI_FW_REV/extra/git_hash --quiet -O -)

環境變量`RPI_LINUX_REV’現在應該已包含系統中使用的[https://github.com/raspberrypi/linux]的修訂版本(git_hash)。

$ echo $RPI_LINUX_REV
233755da0e7903fccb41f0b8c14e1da5244b69ec

獲取和構建Linux標頭

現在我們知道所使用的Linux標頭的修訂版本,我們可以通過執行以下代碼下載和提取內核源代碼樹:

$ mkdir ~/linuxcan
$ cd ~/linuxcan
$ wget https://github.com/raspberrypi/linux/archive/$RPI_LINUX_REV.zip -O linux-$RPI_LINUX_REV.zip
$ unzip linux-$RPI_LINUX_REV.zip

從包含預編譯的二進制文件的存儲庫中,我們也提取“Module.symvers”,其中包含了內核構建中所有導出的符號的列表。

$ cd linux-$RPI_LINUX_REV

# For RaspberryPi Model B and B+
$ wget https://raw.github.com/raspberrypi/firmware/$RPI_FW_REV/extra/Module.symvers

# For RaspberryPi 2 and 3
$ wget https://raw.github.com/raspberrypi/firmware/$RPI_FW_REV/extra/Module7.symvers -O Module.symvers

現在我們可以設置內核配置和構建標頭。

$ sudo modprobe configs
$ zcat /proc/config.gz > .config
$ make prepare
$ make modules_prepare

兩個“make”命令在我們的Raspberry Pi B型上執行大約需要三分鐘時間。

獲取和配置linuxcan

從Kvaser網站獲取并提取Kvaser Linux驅動程序和開發包:

$ cd ~/linuxcan
$ wget http://www.kvaser.com/software/7330130980754/V5_17_0/linuxcan.tar.gz
$ tar xvzf linuxcan.tar.gz
$ cd ~/linuxcan/linuxcan

在linuxcan 5.17版本中,我們可以將環境變量`KV_NO_PCI’設置為1,以避免構建基于PCI的驅動程序。變量`KDIR’應該包含內核源目錄的路徑:

$ export KV_NO_PCI=1
$ export KDIR=/home/pi/linuxcan/linux-$RPI_LINUX_REV

構建和安裝linuxcan

最后一步是構建和安裝linuxcan。 `sudo’的`-E’參數將保留環境變量。在我們的例子中,我們需要使用環境變量`KDIR’和`KV_NO_PCI’。

$ make
$ sudo -E make install

2016-11-04更新: Module7.symvers應用于RaspberryPi 2和3。

使用的版本

The Raspberry Pi Model B is using the following versions

   OS            Rasbian 8.0 with kernel 4.4.11+              
   firmware.git  rev 3b98f7433649e13cf08f54f509d11491c99c4c0b 
   linux.git     rev 233755da0e7903fccb41f0b8c14e1da5244b69ec 

返回列表

伟大魔术师投注