iMX6DL sabreSD的开发板的Flexcan不能工作(已解决)

2020-02-21 21:03发布

本帖最后由 FSL_TICS_ZJJ 于 2014-5-7 10:24 编辑

第一次用 iMX6 的处理器,第一次用 Linux ,才开始学习。
基本情况:
host:ubuntu 12.04 LTS,安装 NFS和TFTP服务;
采用LTIB编译的内核镜像,用的是 L3.0.35-4.1.0-130816;
开发板:FSL原厂的SabreSD,处理器是 IMX6DL;
用 TFTP 的方式加载 kernel ,用 NFS 方式加载 ROOTFS,启动正常;
正常调试:  
已经通过访问字符设备的方式 使用串口收发正常;
使用套接字的方式访问以太网接口,收发正常;

通过LTIB,配置内核,添加了与CAN 有关的驱动模块,编译,
添加 libsocketcan 和 canutils,并且 ./ltib -p libsocketcan.spec -f 以及 ./ltib -p canutils.spec -f
目前存在的问题:回环模式能发不能收,正常模式发送就会导致 BUS-OFF

目前发现问题如下:
(1)  Chip scan failed
(2) 启动过程中注册的flexcan.1 ,而不是正常的 flexCAN.0 ,我采用 cansend can0 ,发送应该就会错误,但不知道如何纠正。
root@freescale ~$ dmesg | grep can
Chip scan failed
vcan: Virtual CAN interface driver
flexcan netdevice driver
flexcan imx6q-flexcan.1: device registered (reg_base=ea9a8000, irq=143)
can: controller area network core (rev 20090105 abi 8)
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)
flexcan imx6q-flexcan.1: writing ctrl=0x0e312005
flexcan imx6q-flexcan.1: flexcan_set_bittiming: mcr=0x5980000f ctrl=0x0e312005
flexcan imx6q-flexcan.1: flexcan_chip_start: writing mcr=0x7de2020f
flexcan imx6q-flexcan.1: flexcan_chip_start: writing ctrl=0x0e31ec55
flexcan imx6q-flexcan.1: flexcan_chip_start: reading mcr=0x6de2020f ctrl=0x0e31ec55

第一次用linux 和imx6。可能问题比较初级,还请大家赐教一二。谢谢啦
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
leoyang
1楼-- · 2020-02-22 02:24
自己顶一下
leoyang
2楼-- · 2020-02-22 07:13
目前在 uboot 里面,设置环境变量,添加 can0=1,可以看到 flexcan.0 的驱动成功注册。但
这样一改,启动就不能完成,报告如下:
VFS: Unable to mount root fs via NFS, trying floppy.                                                                                            
VFS: Cannot open root device "nfs" or unknown-block(2,0)                                                                                       
Please append a correct "root=" boot option; here are the available partitions:                                                                 
..............................
...............                                                                        
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
应该是 bootargs_base 设置有问题了,导致 NFS 挂载失败。

主要的环境变量设置如下:

bootargs_base=setenv bootargs ${bootargs} console=ttymxc3,115200  
bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs nfsroot=${serverip}:${nfsroot} ip=${ipaddr}:${serverip}:${gate}:${mask}::eth0:off,v2,tcp
bootcmd_net=run bootargs_base bootargs_nfs;tftpboot${loadaddr}${kernel};bootm
bootcmd=run bootcmd_net                                                                                                                        
                                                                                                                                                     

FSL_TICS_Rita
3楼-- · 2020-02-22 07:31
leoyang 发表于 2014-4-1 16:35
目前在 uboot 里面,设置环境变量,添加 can0=1,可以看到 flexcan.0 的驱动成功注册。但
这样一改,启动就 ...

楼主你好,关于添加flexcan driver,你可以查看一下All Boards FlexCAN。希望对你有帮助。
leoyang
4楼-- · 2020-02-22 09:43
FSL_TICS_Rita 发表于 2014-4-1 17:09
楼主你好,关于添加flexcan driver,你可以查看一下All Boards FlexCAN。希望对你有帮助。 ...

这个看过好多次。最开始也是按照这个文档做的,添加了 libsocketcan 和 canutils,编译的镜像,也是不行。
问题就是楼上描述的
在 uboot 的环境变量里面,添加 can0=1 ,确实可以看到 flexCAN.0 的驱动被注册,但系统启动不了啦,报告NFS挂载有问题。
怀疑是 bootargs_base 设置不对,但怎么样才能又 can0=1,又确保 nfs 正确呢?

公司也是要我先开始熟悉评估这个平台,目前就我一个人干,只能不断 google ,唉
leoyang
5楼-- · 2020-02-22 10:10
 精彩回答 2  元偷偷看……
leoyang
6楼-- · 2020-02-22 12:55
******
结贴:
******
原因: 在 sabre ai 板上,CAN1 的TXD 与 以太网的 ENET_MDC 复用的。我启用 CAN1,就会关闭以太网,用 NFS 方式挂载的 ROOTFS 就用不了,启动就不行。

解决:要么不用NFS,通过写 SD 卡进行调试,要么就看看能不能启用 can2,就还可以用 NFS。

一周热门 更多>