赛灵思
直播中

张瑞

7年用户 228经验值
私信 关注
[问答]

如何在ZC702中启用CAN Linux驱动程序?

你好,
我有一个ZC702评估板。
我想对读/写一些CAN包做一个简单的测试。
由于我有兴趣在Linux下工作,我使用meta-xilinx配方构建了一个Yocto图像。
图像正在启动,看起来像CAN内核驱动程序在那里并在那里工作:
root @ zc702-zynq7:〜#dmesg | grep可以
[0.148017] zynq-ocm f800c000.ocmc:无法请求资源区域[mem 0xfffc0000-0xffffffff]
[2.917989]可以:控制器区域网络核心(rev 20120528 abi 9)
[2.931466]可以:原始协议(rev 20120528)
[2.935766]可以:广播管理器协议(rev 20120528 t)
[2.941368]可以:netlink网关(rev 20130117)max_hops = 1
由于图像缺乏有用的工具,如git,gcc,make,...我正在尝试使用交叉编译的二进制文件,我在这里找到了一些。
不幸的是,他们没有工作:
root @ zc702-zynq7:〜/ zynq_canutils / bin #ls
asc2log canbusload cangen canplayer ip.iproute2 isotprecv isotpsniffer log2asc slcand
bcmserver candump cangw cansend isotpdump isotpsend isotptun log2long slcanpty
can-calc-bit-timing canfdtest canlogserver cansniffer isotpperf isotpserver libc-2.21.so slcan_attach test.txt
root @ zc702-zynq7:〜/ zynq_canutils / bin#。/ candump
-sh:./ candump:找不到
这是命令** dmesg **的输出:
root @ zc702-zynq7:〜/ zynq_canutils / bin #ifconfig -a
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:16公制:1
RX数据包:0错误:0丢弃:0超限:0帧:0
TX数据包:0错误:0丢弃:0溢出:0载波:0
碰撞:0 txqueuelen:10
RX字节:0(0.0 B)TX字节:0(0.0 B)
中断:22
eth0链接封装:以太网HWaddr 00:0A:35:00:01:22
inet addr:192.168.1.128 Bcast:192.168.1.255掩码:255.255.255.0
inet6 addr:fe80 :: 20a:35ff:fe00:122%lo / 64范围:链接
UP BROADCAST RUNNING MULTICAST MTU:1500公制:1
RX数据包:10054错误:0丢弃:766超支:0帧:0
TX数据包:10个错误:0丢弃:0溢出:0载波:0
碰撞:0 txqueuelen:1000
RX字节:727819(710.7 KiB)TX字节:1332(1.3 KiB)
中断:29基地址:0xb000
lo Link encap:Local Loopback
inet addr:127.0.0.1掩码:255.0.0.0
inet6 addr::: 1%1/128范围:主机
UP LOOPBACK RUNNING MTU:65536公制:1
RX数据包:0错误:0丢弃:0超限:0帧:0
TX数据包:0错误:0丢弃:0溢出:0载波:0
碰撞:0 txqueuelen:1
RX字节:0(0.0 B)TX字节:0(0.0 B)
sit0链接封装:IPv6-in-IPv4
NOARP MTU:1480公制:1
RX数据包:0错误:0丢弃:0超限:0帧:0
TX数据包:0错误:0丢弃:0溢出:0载波:0
碰撞:0 txqueuelen:1
RX字节:0(0.0 B)TX字节:0(0.0 B)
在Yocto构建中,我启用了CAN控制器。
我错过了什么?
提前致谢

回帖(3)

李娜

2019-9-30 10:34:25
好的,我已经明白了发生了什么。
默认情况下,唯一正在工作的ADC IN是信号XADC_VN和ASDC_VP。
该信号位于J40连接器,引脚1和1之间。
2。
这些由DT启用:
xadc @ f8007100 {
compatible =“xlnx,zynq-xadc-1.00.a”;
reg =;
中断=;
interrupt-parent =;
clocks =;
xlnx,渠道{
#address-cells =;
#size-cells =;
channel @ 0 {
reg =;
};
};
所以,我认为添加更多`channel @ x`条目应该是激活其余条目的方式:
xadc @ f8007100 {
compatible =“xlnx,zynq-xadc-1.00.a”;
reg =;
中断=;
interrupt-parent =;
clocks =;
xlnx,渠道{
#address-cells =;
#size-cells =;
channel @ 0 {
reg =;
};
频道@ 1 {
reg =;
}; 
...
channel @ 8 {
reg =;
};
};
};
希望对某人有帮助,
imuguruza
在原帖中查看解决方案
举报

李娜

2019-9-30 10:45:52
Xilinx CAN维基建议您必须在设备树中拥有下一个:
对于Zynq CANPS Dts文件: 
zynq_can_0:可以@ e0008000 { 
compatible =“xlnx,zynq-can-1.0”; 
clocks = ,; 
clock-names =“can_clk”,“pclk”; 
reg =; 
中断=; 
interrupt-parent =; 
tx-fifo-depth =; 
rx-fifo-depth =; 
};
对于Axi CAN Dts文件: 
axi_can_0:axi-can @ 40000000 { 
compatible =“xlnx,axi-can-1.00.a”; 
clocks = ,; 
clock-names =“can_clk”,“s_axi_aclk”; 
reg =; 
interrupt-parent =; 
中断=; 
tx-fifo-depth =; 
rx-fifo-depth =; 
};
对于CAN FD: 
axi_can_0:axi-can @ 40000000 { 
compatible =“xlnx-canfd-1.0”; 
clocks = ,; 
clock-names =“can_clk”,“s_axi_aclk”; 
reg =; 
interrupt-parent =; 
中断=; 
tx-fifo-depth =; 
rx-fifo-depth =; 
};
但由于ZC702有自己的设备树文件,我想知道这是否仍然是必要的。
我认为这不是因为提供的设备树包含CAN总线配置,例如TX,RX引脚:
...
& can0 {
status =“好的”;
pinctrl-names =“默认”;
pinctrl-0 =;
};
...
& pinctrl0 {
pinctrl_can0_default:can0-default {
mux {
function =“can0”;
groups =“can0_9_grp”;
};
conf {
groups =“can0_9_grp”;
slew-rate =;
io-standard =;
};
conf-rx {
pins =“MIO46”;
偏置高阻抗;
};
conf-tx {
pins =“MIO47”;
偏置禁用;
};
};
...
任何人都成功使用ZC702 CAN接口?
问候,
imuguruza
举报

李颖

2019-9-30 10:58:40
我从http://www.wiki.xilinx.com/Linux+CAN+driver下载了zynq_canutils。
有谁知道如何安装或添加zynq_canutils到Petalinux?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分