一、AM5728 CAN總線測試
開發闆檔案系統下執行如下指令,配置 CAN0 總線(軟體上的 CAN0 對應為硬體上的
CAN1)比特率為 1MHz,并啟動 CAN 總線:
Target# canconfig can0 bitrate 1000000
Target# canconfig can0 start
執行如下指令,監控接收 PC 端發送的資料:
Target# candump can0

PC上自動安裝驅動
再打開調試儀器軟體
一.先設定 com端,比特率為 1MHz,
二.任選資料 點發送 或循環發送
二、裝置樹更新移植
can 在ti am5728 Linux 裡面是作為一個網絡裝置存在的,記錄一下 canconfig 移植過程。
- 一、 下載下傳 canutils 和 libsocketcan
libsocketcan 位址: http://public.pengutronix.de/software/libsocketcan/
canutils 位址 : http://public.pengutronix.de/software/socket-can/canutils/v4.0/
// 下載下傳最新的 canutils-4.0.6.tar.bz2 以及 libsocketcan-0.0.10.tar.bz2
- 二、 下載下傳完先編譯 libsocketcan 庫。
// 解壓
tar -xvf canutils-4.0.6.tar.bz2
cd libsocketcan-0.0.10/
mkdir out
// 預設已經配置了交叉編譯器。
ye@ye-ThinkPad-E420:~/Downloads/libsocketcan-0.0.11$ source ~/ti-processor-sdk-linux-am57xx-evm-05.01.00.11/linux-devkit/environment-setup
[linux-devkit]:~/Downloads/libsocketcan-0.0.11> ./configure --prefix=/home/ye/Downloads/libsocketcan-0.0.11/out --host=arm-none-linux-gnueabi
[linux-devkit]:~/Downloads/libsocketcan-0.0.11> make
[linux-devkit]:~/Downloads/libsocketcan-0.0.11> make install
[linux-devkit]:~/Downloads/libsocketcan-0.0.11/out/lib> ls
libsocketcan.a libsocketcan.so libsocketcan.so.2.3.0
libsocketcan.la libsocketcan.so.2 pkgconfig
// 将這些生成的庫複制到你闆子的檔案系統内,放在 lib 目錄下也行,放在 usr/lib 裡面也可以
- 三、 再進行編譯canconfig
// 先将 libsocketcan 裡面的頭檔案 libsocketcan.h can_netlink.h 複制到 canutils 的 include 裡面
tar -xvf canutils-4.0.6.tar.bz2
cd canutils-4.0.6/
mkdir out
chmod 777 . -R
// 配置
[linux-devkit]:~/Downloads/canutils-4.0.6> ./configure --host=arm-none-linux-gnueabi --prefix=/home/ye/Downloads/canutils-4.0.6/out libsocketcan_ LIBS=-lsocketcan LDFLAGS="-L/home/ye/Downloads/libsocketcan-0.0.11/out/lib" libsocketcan_CFLAGS="-I/home/ye/Downloads/libsocketcan-0.0.11/out/include"
make
make install
// 最後在 out/sbin 下能見到 canconfig 指令。
[linux-devkit]:~/Downloads/canutils-4.0.6> ls out/sbin/
canconfig
Copy Canconfig 到闆子的/sbin/目錄 下
chmod 777 /sbin/ canconfig
闆子出現 錯誤
root@am57xx-evm:/run/media/sda2/can/out/lib# canconfig can0 bitrate 1000000
canconfig: error while loading shared libraries: /lib/libsocketcan.so.2: file too short
解決方法:
root@am57xx-evm:/run/media/sda2/can/out/lib# rm /lib/libsocketcan.so.2
root@am57xx-evm:/run/media/sda2/can/out/lib# ln -s /lib/libsocketcan.so.2.3.0
測試運作:
root@am57xx-evm:/run/media/sda2/can/out/lib# canconfig can0 bitrate 1000000
can0 bitrate: 1000000, sample-point: 0.750
root@am57xx-evm:/run/media/sda2/can/out/lib# canconfig can0 start
[ 402.704469] c_can_platform 4ae3c000.can can0: setting BTR=4d00 BRPE=0000
can0 state: ERROR-ACTIVE
root@am57xx-evm:~# candump can0
[ 666.993280] can: controller area network core (rev 20170425 abi 9)
[ 666.999568] NET: Registered protocol family 29
[ 667.012032] can: raw protocol (rev 20170425)
can0 666 [8] 01 02 0A 0B 0C 0D 0E 0F
can0 0AA [8] 01 02 0A 0B 0C 0D 0E 0F
can0 0BB [8] 01 02 0A 0B 0C 0D 0E 0F
can0 0CC [8] 01 02 0A 0B 0C 0D 0E 0F
can0 0DD [8] 01 02 0A 0B 0C 0D 0E 0F
===================linux can 調試指令=========================
CAN總線在嵌入式Linux下驅動程式的實作
http://www.21ic.com/app/embed/200911/49216.htm
Socke Can設定波特率
找到其中一個方法使用IP指令,BUSYBOX制作的IP好像不支援對socketcan的設定,必須要自己去下載下傳iproute2的源代碼自己編譯。得到IP指令,拷貝到自己系統的bin目錄下。
ip link set can0 type can bitrate 250000
設定CNA0的波特率為250K,在設定前需要先把CAN0關閉了,ip set can0 down
可以結貼了,!!!!!!!!!!!!
linux can 總線socket接口測試使用,解釋了為什麼會從字元裝置更新到socket裝置
http://blog.chinaunix.net/uid-26119896-id-3452315.html
dmesg | grep can
root@imx_mfgtools_nogpu:~# dmesg | grep can
can-3v3: 3300 mV
flexcan 2090000.can: device registered (reg_base=a0968000, irq=142)
flexcan 2094000.can: device registered (reg_base=a0970000, irq=143)
can: controller area network core (rev 20120528 abi 9)
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
can-3v3: disabling
ifconfig -a
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:16 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:142
can1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:16 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:143
ip -details link show can0
root@imx_mfgtools_nogpu:~# ip -details link show can0
2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
link/can promiscuity 0
can state STOPPED (berr-counter tx 0 rx 0) restart-ms 0
bitrate 0 sample-point 0.000
tq 0 prop-seg 0 phase-seg1 0 phase-seg2 0 sjw 0
flexcan: tseg1 4..16 tseg2 2..8 sjw 1..4 brp 1..256 brp-inc 1
clock 30000000
ip -details link show can0 // 檢視
ifconfig can0 down // 關閉