can4--测试can
来源:互联网 发布:抢单软件 编辑:程序博客网 时间:2024/06/16 08:38
can测试-refer to ok6410自带例子
源码见
//server.c//server.c#include <sys/ioctl.h>#include <net/if.h>#include <linux/can.h>#ifndef PF_CAN#define PF_CAN 29#endif#ifndef AF_CAN#define AF_CAN PF_CAN#endifint main(){ int s; unsigned long nbytes,len; struct sockaddr_can addr; struct ifreq ifr; struct can_frame frame; s = socket(PF_CAN,SOCK_RAW,CAN_RAW); //取得can0的接口序号到ifr.ifr_ifindex,必须先去取得can0的index,因为bind时用的是addr的index,而不是名字can0 strcpy(ifr.ifr_name,"can0"); ioctl(s,SIOCGIFINDEX,&ifr); printf("can0 can_ifindex = %x\n",ifr.ifr_ifindex); //bind to all enabled can interface addr.can_family = AF_CAN; //addr.can_ifindex =0;//选择监听所有can接口 addr.can_ifindex =ifr.ifr_ifindex;//选择监听can0,和网络中监听某个ip类似 server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); bind(s,(struct sockaddr*)&addr,sizeof(addr)); struct can_filter rfilter;//过滤 rfilter.can_id = 0x123;//选择监听can_frame中标示符是0x123的can帧,不过滤则监听所有。和网络中监听某个端口有点类似 server_address.sin_port = 9734; rfilter.can_mask = CAN_SFF_MASK; setsockopt(m_can, SOL_CAN_RAW, CAN_RAW_FILTER, &rfilter, sizeof(rfilter)); nbytes = recvfrom(s,&frame,sizeof(struct can_frame),0,(struct sockaddr *)&addr,&len); /*get interface name of the received CAN frame*/ ifr.ifr_ifindex = addr.can_ifindex; ioctl(s,SIOCGIFNAME,&ifr); printf("Received a CAN frame from interface %s\n",ifr.ifr_name); printf("frame message\n" "--can_id = %x\n" "--can_dlc = %x\n" "--data = %s\n",frame.can_id,frame.can_dlc,frame.data); return 0;}其中,ifreq
/* * Interface request structure used for socket * ioctl's. All interface ioctl's must have parameter * definitions which begin with ifr_name. The * remainder may be interface specific. */struct ifreq {#define IFHWADDRLEN6union{charifrn_name[IFNAMSIZ];/* if name, e.g. "en0" */} ifr_ifrn;union {structsockaddr ifru_addr;structsockaddr ifru_dstaddr;structsockaddr ifru_broadaddr;structsockaddr ifru_netmask;struct sockaddr ifru_hwaddr;shortifru_flags;intifru_ivalue;intifru_mtu;struct ifmap ifru_map;charifru_slave[IFNAMSIZ];/* Just fits the size */charifru_newname[IFNAMSIZ];void __user *ifru_data;structif_settings ifru_settings;} ifr_ifru;};#define ifr_nameifr_ifrn.ifrn_name/* interface name */#define ifr_hwaddrifr_ifru.ifru_hwaddr/* MAC address */#defineifr_addrifr_ifru.ifru_addr/* address*/#defineifr_dstaddrifr_ifru.ifru_dstaddr/* other end of p-p lnk*/#defineifr_broadaddrifr_ifru.ifru_broadaddr/* broadcast address*/#defineifr_netmaskifr_ifru.ifru_netmask/* interface net mask*/#defineifr_flagsifr_ifru.ifru_flags/* flags*/#defineifr_metricifr_ifru.ifru_ivalue/* metric*/#defineifr_mtuifr_ifru.ifru_mtu/* mtu*/#define ifr_mapifr_ifru.ifru_map/* device map*/#define ifr_slaveifr_ifru.ifru_slave/* slave device*/#defineifr_dataifr_ifru.ifru_data/* for use by interface*/#define ifr_ifindexifr_ifru.ifru_ivalue/* interface index*/#define ifr_bandwidthifr_ifru.ifru_ivalue /* link bandwidth*/#define ifr_qlenifr_ifru.ifru_ivalue/* Queue length */#define ifr_newnameifr_ifru.ifru_newname/* New name*/#define ifr_settingsifr_ifru.ifru_settings/* Device/proto settings*/
//client.c#include <sys/ioctl.h>#include <net/if.h>#include <linux/can.h>#ifndef PF_CAN#define PF_CAN 29#endif#ifndef AF_CAN#define AF_CAN PF_CAN#endifint main(){int s;unsigned long nbytes;struct sockaddr_can addr;struct ifreq ifr;struct can_frame frame;s = socket(PF_CAN,SOCK_RAW,CAN_RAW);//取得can0的接口序号到ifr.ifr_ifindexstrcpy((char *)(ifr.ifr_name),"can0");ioctl(s,SIOCGIFINDEX,&ifr);printf("can0 can_ifindex = %x\n",ifr.ifr_ifindex);addr.can_family = AF_CAN;addr.can_ifindex = ifr.ifr_ifindex;//选择监听can0bind(s,(struct sockaddr*)&addr,sizeof(addr));frame.can_id = 0x123;strcpy((char *)frame.data,"hello");frame.can_dlc = strlen(frame.data);printf("Send a CAN frame from interface %s\n",ifr.ifr_name);nbytes = sendto(s,&frame,sizeof(struct can_frame),0,(struct sockaddr*)&addr,sizeof(addr));return 0;}
源码见
can5--socketcan之mcp251x.c
测试发送//应用打印[root@FORLINX6410]# /mnt/client can0 can_ifindex = 3Send a CAN frame from interface can0//驱动打印[root@FORLINX6410]# DBG(drivers/net/can/mcp251x.c, mcp251x_hard_start_xmit(), 631): 从应用层收到发送命令 DBG(drivers/net/can/mcp251x.c, mcp251x_hard_start_xmit(), 642): 要发送的数据是skb DBG(drivers/net/can/mcp251x.c, mcp251x_hard_start_xmit(), 643): 启动发送队列 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 876): 进入发送队列 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 889): 打印skb里的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[0]=23//canid DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[1]=1//canid DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[2]=0//canid DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[3]=0//canid DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[4]=5//长度 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[5]=4d//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[6]=ba//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[7]=be//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[8]=68//数据0 h DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[9]=65//数据1 e DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[10]=6c//数据2 l DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[11]=6c//数据3 l DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[12]=6f//数据4 o DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[13]=0//数据5 随机 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[14]=f//数据6 随机 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[15]=40//数据7 随机 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[16]=3//超范围 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[17]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[18]=28 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 892): priv->tx_skb->data[19]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 896): 打印can_frame的字段 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 897): frame->can_id=0x123 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 901): p=23 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 901): p=1 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 901): p=0 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 901): p=0 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 904): frame->can_dlc=5 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[0]=68 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[1]=65 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[2]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[3]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[4]=6f DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[5]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[6]=f DBG(drivers/net/can/mcp251x.c, mcp251x_tx_work_handler(), 907): frame->data[7]=40 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 455): 打印是否扩展帧 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 464): 是标准帧 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 479): 打印送给spi的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[0]=40//装载tx缓冲器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[1]=24//TXBnSIDH--? DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[2]=60//TXBnSIDL--? DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[3]=1//TXBnEID8--? DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[4]=23//TXBnEID0--? DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[5]=5//TXBnDLC DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[6]=68//TXBnD0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[7]=65//TXBnD1 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[8]=6c//TXBnD2 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[9]=6c//TXBnD3 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[10]=6f//TXBnD4 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[11]=0//TXBnD5 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[12]=0//TXBnD6 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_tx(), 482): buf[13]=0//TXBnD7 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=40 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=24 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=60 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=1 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[4]=23 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[5]=5 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[6]=68 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[7]=65 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[8]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[9]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[10]=6f DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[4]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[5]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[6]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[7]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[8]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[9]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[10]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): DBG(drivers/net/can/mcp251x.c, mcp251x_can_irq(), 984): 有中断产生打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=2//写寄存器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=30//发送缓冲器0控制寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=8//即1000b,发送缓冲器等待报文发送--用于请求报文发送 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=ff DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1031): 进入中断下半部 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=3//读寄存器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=8//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=1//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=4//中断标志寄存器的值=0x4=100b,即发送缓冲器0空中断,即buf0发送完成中断 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1049): 中断标志=0x4 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1056): 是发送完成中断: DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=5//位修改指令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4//掩码 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0//数据,清零中断标志 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=3//读寄存器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=0//中断标志寄存器的值=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1049): 中断标志=0x0 DBG(drivers/net/can/mcp251x.c, mcp251x_can_irq(), 984): 有中断产生 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1031): 进入中断下半部 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=3//读寄存器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=0//中断标志寄存器的值=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1049): 中断标志=0x0测试接收,另外一块板子执行client,测试板子执行server进行监听(不执行server也一样,反正只要can总线有数据到达,驱动会自动接收)
//应用打印[root@FORLINX6410]# /mnt/server can0 can_ifindex = 3Received a CAN frame from interface can0//驱动打印[root@FORLINX6410]# DBG(drivers/net/can/mcp251x.c, mcp251x_can_irq(), 984): 有中断产生 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1031): 进入中断下半部 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=3//读寄存命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0//未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=1//中断标志寄存器值是1,即rx0中有新数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1049): 中断标志=0x1 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1079): 是接收到数据中断: DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1080): receive buffer0有数据 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx_frame(), 494): 打印是否是mcp2515 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx_frame(), 505): 是mcp2515 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=90//读rx缓冲器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[4]=23 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[5]=5//长度,以下都未用到 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[6]=68 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[7]=65 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[8]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[9]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[10]=6f DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[11]=75 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[12]=78 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[13]=2e DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=24//RXBnSIDH,即0010 0100,<<3=0010 0100 000 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=60//RXBnSIDL,即0110 0000,>>5=011.两者相加=001 0010 0011=0x123 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=27//RXBnEID8,标准帧未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[4]=52//RXBnEID0,标准帧未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[5]=5//RXBnDLC,长度 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[6]=68//RXBnDM0,h DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[7]=65//RXBnDM1,e DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[8]=6c//RXBnDM2,l DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[9]=6c//RXBnDM3,l DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[10]=6f//RXBnDM4,o DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[11]=fe//RXBnDM5,未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[12]=3d//RXBnDM6,未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[13]=61//RXBnDM7,未使用 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 544): 打印从spi接收到buf里的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 545): buf_idx=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[1]=24 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[2]=60 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[3]=27 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[4]=52 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[5]=5 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[6]=68 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[7]=65 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[8]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[9]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[10]=6f DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[11]=fe DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[12]=3d DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 549): buf[13]=61 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 552): 打印是否是扩展帧 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 570): 是标准帧 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 594): 打印can_frame的字段 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 595): frame->can_id=0x123 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 599): p=23 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 599): p=1 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 599): p=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 599): p=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 603): frame->can_dlc=5 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[0]=68 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[1]=65 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[2]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[3]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[4]=6f DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[5]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[6]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 607): frame->data[7]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 612): 打印skb里的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[0]=23 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[1]=1 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[2]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[3]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[4]=5 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[5]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[6]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[7]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[8]=68 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[9]=65 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[10]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[11]=6c DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[12]=6f DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[13]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[14]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[15]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[16]=19 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[17]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[18]=18 DBG(drivers/net/can/mcp251x.c, mcp251x_hw_rx(), 615): skb->data[19]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=3//读寄存器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=0//中断标志寄存器的值=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1049): 中断标志=0x0 DBG(drivers/net/can/mcp251x.c, mcp251x_can_irq(), 984): 有中断产生 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1031): 进入中断下半部 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 356): 打印spi直接发送的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[0]=3//读寄存器命令 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[1]=2c//中断标志寄存器 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[2]=4 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 359): priv->spi_tx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 362): 打印spi直接收到的数据 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[0]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[1]=ff DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[2]=0//中断标志寄存器的值=0 DBG(drivers/net/can/mcp251x.c, mcp251x_spi_trans(), 365): priv->spi_rx_buf[3]=0 DBG(drivers/net/can/mcp251x.c, can_irq_work(), 1049): 中断标志=0x0
- can4--测试can
- CAN协议测试
- stm32 can基础测试例程
- STM32之CAN---工作/测试模式浅析
- STM32之CAN---工作/测试模式浅析
- linux can 总线socket接口测试使用
- linux下的can驱动测试
- hdu 5478 Can you find it 测试
- Linux CAN驱动及测试总结
- STM32之CAN---工作/测试模式浅析
- linux can 总线socket接口测试使用
- 多点CAN通信的测试问题
- STM32之CAN---工作/测试模式浅析
- 汽车CAN网络测试开发方法
- STM32之CAN---工作/测试模式浅析
- linux下的can驱动测试
- linux下的can驱动测试
- 浅谈汽车CAN/LIN总线测试流程和测试工具
- 简单的把矩阵分解成一个正交矩阵和一个对角线全为1的上三角矩阵
- Linux 下摄像头视频采集与显示
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- jsf中action、actionlistener、valueChangeListener的区别(转)
- [SQL Server] 服务启动帐户
- can4--测试can
- Servlet知识点总结
- C#发送邮件嵌入图片
- JAVA--Synchronized详解
- 用51单片机普通I/O口检测模拟值
- 保存越南文乱码处理
- JQuery文档分析1-JQuery核心与选择器
- 约瑟夫环问题
- 关于ARM开发板通过有线接入互联网自动获取IP地址问题