查看: 14932|回复: 13

[已解决] i.mx6 flexcan测试出错(已解决)

[复制链接]

该用户从未签到

4

主题

19

帖子

0

注册会员

Rank: 2

积分
79
最后登录
1970-1-1
发表于 2014-9-29 17:46:14 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_Rita 于 2014-10-11 09:51 编辑

Hi,呼叫技术支持的大大们。我又来了。
我们用的板子是根据imx6的sabresd改的,内核也是,用的是android4.2.2系统。

我啥都没改,就根据http://community.freescale.com/docs/DOC-1437,这个把内核配置选项选上。然后
root@android:/data/test # ifconfig can0 up                                    
flexcan imx6q-flexcan.0: writing ctrl=0x0e31e055
flexcan imx6q-flexcan.0: flexcan_set_bittiming: mcr=0x5980000f ctrl=0x0e31e055
flexcan imx6q-flexcan.0: flexcan_chip_start: writing mcr=0x7de2020f
flexcan imx6q-flexcan.0: flexcan_chip_start: writing ctrl=0x0e31ec55
flexcan imx6q-flexcan.0: flexcan_chip_start: reading mcr=0x6de2020f ctrl=0x0e31ec55

有这个信息我想,就是说明can能用了是吧。
但是我找了个测试程序测试,提示:flexcan imx6q-flexcan.0: Error Warning IRQ
测试就此失败。
不知道为啥。测试代码如下:

  1. /* 1.报文发送程序 */  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <unistd.h>
  6. #include <net/if.h>
  7. #include <sys/ioctl.h>
  8. #include <sys/socket.h>
  9. #include <linux/can.h>
  10. #include <linux/can/raw.h>

  11. #define AF_CAN                29      /* Controller Area Network      */
  12. #define PF_CAN          AF_CAN

  13. int main()  
  14. {  
  15.     int s, nbytes;  
  16.     struct sockaddr_can addr;  
  17.     struct ifreq ifr;  
  18.     struct can_frame frame[2] = {{0}};  
  19.     s = socket(PF_CAN, SOCK_RAW, CAN_RAW);      //创建套接字  
  20.     strcpy(ifr.ifr_name, "can0" );  
  21.     ioctl(s, SIOCGIFINDEX, &ifr);                   //指定can0设备  
  22.     addr.can_family = AF_CAN;  
  23.     addr.can_ifindex = ifr.ifr_ifindex;  
  24.     bind(s, (struct sockaddr *)&addr, sizeof(addr));            //将套接字与can0绑定  
  25.     //禁用过滤规则,本进程不接收报文,只负责发送  
  26.             setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0);  
  27.             //生成两个报文  
  28.     frame[0].can_id = 0x11;  
  29.     frame[0]. can_dlc = 1;  
  30.     frame[0].data[0] = 'Y';  
  31.     frame[0].can_id = 0x22;  
  32.     frame[0]. can_dlc = 1;  
  33.     frame[0].data[0] = 'N';  
  34.     //循环发送两个报文  
  35.     while(1) {  
  36.     nbytes = write(s, &frame[0], sizeof(frame[0]));     //发送frame[0]  
  37.     if (nbytes != sizeof(frame[0])) {  
  38.                     printf("Send Error frame[0]\n!");  
  39.                     break;                              //发送错误,退出  
  40.     }  
  41.         sleep(1);  
  42.     nbytes = write(s, &frame[1], sizeof(frame[1]));     //发送frame[1]  
  43.     if (nbytes != sizeof(frame[0])) {  
  44.                     printf("Send Error frame[1]\n!");  
  45.                     break;  
  46.     }  
  47.         sleep(1);  
  48.     }  
  49.     close(s);  
  50.     return 0;  
  51. }  
复制代码



我知道答案 目前已有13人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-30 09:04:33 | 显示全部楼层
楼主你好。
首先欢迎你在我们论坛的发帖,但是现在我们的论坛I.MX工程师有事不在。
所以,如果您问题比较急,建议你到官网建立一个技术服务请求,那边也会有相关的工程师帮你解答。
建立服务请求的链接:
https://www.nxpic.org.cn/module/forum/thread-578569-1-1.html
点击2楼,建立SR按钮,问题内容请采用英文书写的方式。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

19

帖子

0

注册会员

Rank: 2

积分
79
最后登录
1970-1-1
 楼主| 发表于 2014-10-9 17:59:40 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-9-30 09:04
楼主你好。
首先欢迎你在我们论坛的发帖,但是现在我们的论坛I.MX工程师有事不在。
所以,如果您问题比较急 ...

英文交流有障碍啊,现在还要去提交技术服务请求吗?还是你们帮看看?
谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3275
最后登录
1970-1-1
发表于 2014-10-11 09:49:35 | 显示全部楼层
楼主你好,请问你这里硬件上是否CAN模块已经加上?
回复 支持 反对

使用道具 举报

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3275
最后登录
1970-1-1
发表于 2014-10-11 09:51:08 | 显示全部楼层
楼主你好,我们论坛现在要统计结帖情况,这里我把该帖子标为已解决了,但是我会继续回答您的问题的。希望你能理解啊。非常感谢~~
回复 支持 反对

使用道具 举报

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3275
最后登录
1970-1-1
发表于 2014-10-11 10:01:45 | 显示全部楼层
关于CAN的调试,这里我发给你一个文档,是有关can调试的,你参考一下,有问题,再联系我哈~~ How to enable CAN bus on i.MX6Q SabreSD.pdf (482.87 KB, 下载次数: 397)
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

19

帖子

0

注册会员

Rank: 2

积分
79
最后登录
1970-1-1
 楼主| 发表于 2014-10-11 13:04:33 | 显示全部楼层
FSL_TICS_Rita 发表于 2014-10-11 10:01
关于CAN的调试,这里我发给你一个文档,是有关can调试的,你参考一下,有问题,再联系我哈~~ ...

你们这边之前没有回复所以我在21ic那边的论坛也发了同样的帖子求助。没关系吧?
硬件已经焊接过了的。
你发的这个pdf我已经完全照做过了的。里面的1、2、3按照修改的。

第5点信息是怎么来的?板子启动后就直接dmesg吗?我板子启动的dmesg中没有can相关的信息。下面是pdf中说的信息:
5.  Start CAN network device
root@freescale ~$ dmesg | grep can
ahci: SSS flag set, parallel bus scan disabled
vcan: Virtual CAN interface driver
flexcan netdevice driver
flexcan imx6q-flexcan.0: device registered (reg_base=c09a8000, irq=142)
can: controller area network core (rev 20090105 abi8)
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)  

第5点的其他信息都有。现在就是测试报flexcan imx6q-flexcan.0: Error Warning IRQ
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

19

帖子

0

注册会员

Rank: 2

积分
79
最后登录
1970-1-1
 楼主| 发表于 2014-10-11 13:25:23 | 显示全部楼层
FSL_TICS_Rita 发表于 2014-10-11 10:01
关于CAN的调试,这里我发给你一个文档,是有关can调试的,你参考一下,有问题,再联系我哈~~ ...

错误打印来自于drivers/net/can/flexcan.c,do_state函数
回复 支持 反对

使用道具 举报

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3275
最后登录
1970-1-1
发表于 2014-10-11 13:36:21 | 显示全部楼层
xishuanggongzi 发表于 2014-10-11 13:04
你们这边之前没有回复所以我在21ic那边的论坛也发了同样的帖子求助。没关系吧?
硬件已经焊接过了的。
你 ...

没有冲突的,我们这两个论坛负责支持的工程师都是一样的。我先帮你看看哈。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

19

帖子

0

注册会员

Rank: 2

积分
79
最后登录
1970-1-1
 楼主| 发表于 2014-10-11 15:05:15 | 显示全部楼层
FSL_TICS_Rita 发表于 2014-10-11 13:36
没有冲突的,我们这两个论坛负责支持的工程师都是一样的。我先帮你看看哈。 ...

恩,那等待你的答复了啊,我们后面还要跟android对接,项目国庆前就停在这了。
谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 00:20 , Processed in 0.118172 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表