2452|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

新手请教,am 3517 can 问题 [复制链接]

新手请教,am 3517 can 问题,先感谢各位帮助。
第一次开发这种,用的是adlink的sp860板子,am3517的。是将客户仪器上原来的老程序升级,原来是用/dev/can0发,/dev/can14收。
换新的板子后用到了socketcan。

我的做法是:
1. 重新编译内核,在make menuconfig中将相应的can驱动选上;
2. 在/etc/network/interfaces文件中加上
auto can0
iface can0 inet manual
pre-up /ip link set $IFACE type can bitrate 125000 triple-sampling on
up /sbin/ifconfig $IFACE up
down /sbin/ifconfig $IFACE down
使之产生can0设备,
3. 我是在python中调用so进行can通讯,在c程序中打开can0
        sockfd = socket(PF_CAN, SOCK_RAW, CAN_RAW);
        strcpy(ifr.ifr_name, "can0" );
        ioctl(sockfd, SIOCGIFINDEX, &ifr);
        addr.can_family = AF_CAN;
        addr.can_ifindex = ifr.ifr_ifindex;
        bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));

附原来的/dev/can打开代码

#define INPUTDEVICE       "/dev/can14"
#define OUTPUTDEVICE      "/dev/can0"
    if ((input = open(INPUTDEVICE, O_RDONLY)) == -1)
throw(IOError, INPUTDEVICE);
    if ((output = open(OUTPUTDEVICE, O_WRONLY)) == -1)
    {
close(input);
throw(IOError, OUTPUTDEVICE);
    }




由于基本概念等不是很清楚,有几个问题:
1. 老的程序中用的/dev/can0做输出,/dev/can14做输入,仪器端是不能变,现在就是换个cpu板子,在socketcan中只要 can0节点就够了吗?是否需要仪器端的协议,我们那边有人说不需要的。
2. 以上3个步骤只能产生can0设备,如果在interfaces文件中增加can1,can14等设备,无法成功。是否上面三个步骤是不对的?
3. 除了make menuconfig中选择驱动,是否还需要其他can驱动?我在网上看到例如 ixcan等所谓的驱动。
此帖出自ARM技术论坛
点赞 关注
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
有人吗?请教
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表