linux can canutils工具移植

linux can canutils工具移植   

 

 

Canutils是基於GNU GPLv2許可的開源代碼,包括canconfig、canecho、cansend、candump、cansequence五個工具,用於檢測和監控Socket CAN接口。

下載源碼:http://www.pengutronix.de/software/socket-can/download/canutils ,下載最新版本canutils 4.0.6;

 

因爲編譯canutils需要libsocketcan庫支持,下載libsocketcan:http://www.pengutronix.de /software/libsocketcan/download/,下載最新版本libsocketcan 0.0.11,因爲以前版本不支持交叉編譯工具aarch64-linux-gnu,故下載最新版本。

libsocketcan移植

把libsocketcan-0.0.11.tar.bz2拷貝到/home/zh/tools,使用tar -xvf libsocketcan-0.0.11. tar.bz2源碼,然後在tools工具目錄下,建立一個目錄test,用於存放目標文件。執行configure命令。(其中--host是指定交叉工具鏈,--prefix是指定庫的生成位置)注意arm-linux-gnueabihf工具後面不要加-gcc了。

       ./configure --host=arm-linux-gnueabihf --prefix=/home/zh/tools/test

其配置結果如下圖所示。

    然後執行make,進行編譯;

      執行make install,libsocketcan編譯完成。

查看test目錄下,生成了幾個目錄文件,分別爲include lib share文件。到此libsocketcan完成了。

canutils移植

下載源碼後,輸入tar -xvf canutils-4.0.6.tar.bz2解壓,進入解壓目錄,同時也建立一個目錄canutils,存放輸出文件。

執行configure命令。(其中--host是指定交叉工具鏈,--prefix是指定庫的生成位置,libsocketcan_LIBS是指定canconfig需要鏈接的庫,LDFLAGS是指定外部庫的路徑,CPPFLAGS是指定外部頭文件的路徑)

  ./configure --host=arm-linux-gnueabihf --prefix=/home/zh/tools/canutils   libsocketcan_LIBS=-lsocketcan LDFLAGS=-L/home/zh/tools/test/lib libsocketcan_CFLAGS=-I/home/zh/tools/test/include  CFLAGS=-I/home/zh/tools/test/include

其配置結果如下圖所示。

執行make,結果如下圖所示。

執行make install,結果如下圖所示。

/home/zh/tools/canutils下生成四個目錄,分別拷貝到開發板文件系統的相應目錄。

sudo cp lib/* /home/zh/linux/nfs/rootfs/usr/lib/ -rfa

sudo cp bin/* /home/zh/linux/nfs/rootfs/usr/bin/ -rfa

sudo cp sbin/* /home/zh/linux/nfs/rootfs/usr/sbin/ -rfa

sudo cp share/* /home/zh/linux/nfs/rootfs/usr/share/ -rfa

iproute2移植

完成拷貝後,輸入candump  canecho  cansend  cansequence 進行測試,發現還沒有啓動CAN,需要ip link set can0 up type can bitrate 800000之類的命令配置參數,但是ip這樣配置,提示沒有這命令, 發現原來內核中的ip工具並不能對can進行設置,究其原因是因爲/sbin下的ip工具太老了,需要進行替換。這個相對來說比較簡單,網上下一個iproute2工具編譯,拷貝生成的ip工具到/sbin下替換掉原來的就可以了。需要注意的是網上下載的很多源碼可能不能正常編譯過,這可能是源碼本身的問題,我嘗試編譯了幾個,發現 http://www.linuxgrill.com/anonymous/iproute2/NEW-OSDL/ 連接下的iproute2- 2.6.39版本的是可以一次性編譯通過的。

下載源碼後,

1.修改Makefile中的CC = arm-linux-gnueabihf-gcc  (自己buildroot生成的交叉編譯工具鏈,如果沒有進行交叉編譯工具鏈的全局配置,需要加上絕對路徑)。

2.因爲我們只需要ip工具,所以SUBDIRS = lib  ip  (源碼中默認的還會生成其它工具)。

3.make最後編譯成功後在進入到源碼目錄下的ip目錄可以發現有一個生成的ip(這就是個可執行的二進制文件ip工具),將該文件拷貝到開發板的/sbin目錄下替換原來的ip即可。

測試ip命令,結果如下圖所示:

ip link set can0 up type can bitrate 500000,設置can0波特率爲800k

ip -details link show can0 查看can0詳細信息,發現can0 設置爲500k和預設一致

 

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