搜索
bottom↓
回复: 18

iMX6DL SabreAI 如何才能使能 flexCAN1(已解决)

[复制链接]

出0入0汤圆

发表于 2014-4-2 16:53:53 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-5-7 10:45 编辑

之前已经在另外一个帖子里面明确了,对 Sabre AI 这个开发板,NFS 与 CAN0 不能同时使用。
板子另外还有一个独立的can接口,FlexCAN1。怎么样才能使能这个接口?

我这边的打印信息如下:
首先,设置了U-Boot 的环境变量,添加 can1=1,启动没有问题。
serverip=192.168.1.2
ipaddr=192.168.1.3
bootfile=uImage
gate=192.168.1.1
mask=255.255.255.0
nfsroot=/work/ltib/y/ltib/rootfs
bootcmd=run bootcmd_net
bootcmd_net=run bootargs_base bootargs_nfs;tftpboot${loadaddr}${kernel};bootm
bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs nfsroot=${serverip}:${nfsroot} ip=${myip}
myip=192.168.1.3:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off,v3,tcp
bootargs_base=setenv bootargs ${bootargs} console=ttymxc3,115200 can1=1
stdin=serial
stdout=serial
stderr=serial


启动后,也可以看到如下信息,表明系统加载了 flexcan.1 的驱动。其实不添加 can1=1,系统也是默认添加该驱动的。
vcan: Virtual CAN interface driver
CAN device driver interface
flexcan netdevice driver
flexcan imx6q-flexcan.1: device registered (reg_base=ea9a8000, irq=143)

登录后,查看 ifconfig,只能看到 can0 的信息。为神码看不到 can1呢,难道要修改 DTS文件吗?
root@freescale ~$ ifconfig -a
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:143

eth0      Link encap:Ethernet  HWaddr 00:04:9F:20:B4:CA  
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3109 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1594 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3350536 (3.1 MiB)  TX bytes:246172 (240.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

继续查看 can 的信息,相关驱动应该是加载了的,但看不到 can1 啊!!!
root@freescale ~$ dmesg | grep can
Kernel command line: console=ttymxc3,115200 can1=1 root=/dev/nfs nfsroot=192.168.1.2:/work/ltib/y/ltib/rootfs ip=192p
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)

还是看不到 can1,那注册 flexcan.1 的驱动干嘛?
root@freescale ~$ ifconfig can1
ifconfig: can1: error fetching interface information: Device not found

我现在考虑:
需要设置UBOOT的环境变量?
需要修改DTS?
初次尝试这个软硬件平台,问题比较初级,还请版主指点。

出0入0汤圆

发表于 2014-4-2 18:01:04 | 显示全部楼层
在你uboot中添加can1后,板子起来后,你尝试一下如下设置:
ip link set can1 up type can bitrate 125000
flexcan imx6q-flexcan.1: writing ctrl=0x0e312005

出0入0汤圆

发表于 2014-4-2 18:03:54 | 显示全部楼层
还有你用的板子是哪个版本的?在REV E这个版本中,需要:
Push SW1 on the base board once after power up <- it was the key to enable CAN PHY.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-4-3 10:07:56 | 显示全部楼层
首先感谢支持;
(0)平台:Ssbre AI (cpu + base 都是红色),底板版本号:700-26xxx REV B,  SCH-26xxx REV E; CPU板:700-27xxx REV A,  SCH-27xxx REV A .
(1) 在uboot里面,添加了 can1 = 1,也不行,ifconfig -a 仍然还是只能看到 can0

root@freescale ~$ ifconfig -a                                                   
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-0
          NOARP  MTU:16  Metric:1                                               
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0                    
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                  
          collisions:0 txqueuelen:10                                            
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)                                
          Interrupt:143                                                         
                                                                                
eth0      Link encap:Ethernet  HWaddr 00:04:9F:20:B4:CA                        
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0        
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1                    
          RX packets:3082 errors:0 dropped:0 overruns:0 frame:0                 
          TX packets:1583 errors:0 dropped:0 overruns:0 carrier:0               
          collisions:0 txqueuelen:1000                                          
          RX bytes:3347950 (3.1 MiB)  TX bytes:244538 (238.8 KiB)               
                                                                                
lo        Link encap:Local Loopback                                             
          inet addr:127.0.0.1  Mask:255.0.0.0                                   
          UP LOOPBACK RUNNING  MTU:16436  Metric:1                              
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0                    
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                  
          collisions:0 txqueuelen:0                                             
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)                                

配置 can1,找不的设备,配置 can0,就配置到 flexCAN.1 啦,怎么回事,我做错了什么?                  
root@freescale ~$ ip link set can1 up type can bitrate 125000                  
Cannot find device "can1"                                                      
root@freescale ~$ ip link set can0 up type can bitrate 125000                  
flexcan imx6q-flexcan.1: writing ctrl=0x0e312005

(2) sw1,按原理图上说,是给一个脉冲是吧,我在 Uboot 阶段和linux 起来以后都试过,但没有影响,从你提示里面,应该是上电以后按一下,是这个意思吧?

出0入0汤圆

 楼主| 发表于 2014-4-3 13:19:06 | 显示全部楼层
还在继续探索,顶起

出0入0汤圆

 楼主| 发表于 2014-4-3 13:20:37 | 显示全部楼层
FSL_TICS_Rita 发表于 2014-4-2 18:03
还有你用的板子是哪个版本的?在REV E这个版本中,需要:
Push SW1 on the base board once after power up ...

版主,看我啊

出0入0汤圆

发表于 2014-4-3 16:30:16 | 显示全部楼层
leoyang 发表于 2014-4-3 10:07
首先感谢支持;
(0)平台:Ssbre AI (cpu + base 都是红色),底板版本号:700-26xxx REV B,  SCH-26xxx RE ...

1、楼主你好,关于你提到的配置 can1,找不的设备,配置 can0,就配置到 flexCAN.1, 应该是代码中设置的问题,建议你查看一下头文件及板子的.c文件中的有关can的定义。
2、在uboot中添加can1, 你可以直接使用can1而不是can1=1,试一下,因为我手上也没有这块板子没有办法帮你试。
3、关于sw1,按原理图上说,是给一个脉冲是吧,我在 Uboot 阶段和linux 起来以后上电以后按一下,你的理解是正确的。

出0入0汤圆

 楼主| 发表于 2014-4-4 08:40:30 | 显示全部楼层
FSL_TICS_Rita 发表于 2014-4-3 16:30
1、楼主你好,关于你提到的配置 can1,找不的设备,配置 can0,就配置到 flexCAN.1, 应该是代码中设置的 ...

谢谢您的支持。

因为初次接触这个平台,刚好一个月,公司的团队里面,目前我是第一个过河的,也是摸着石头慢慢走,后续其他同事从项目里面解放出来就逐步加入过来。

(1)您说的是配置问题,我也是这样理解的,但目前对文件结构不太熟悉,所以要开始逐个的查看确实有点盲目,我会尽量去查看这方面的东西,谢谢提醒。
(2)是的,不需要在 uboot 里面添加 can1=1 ,系统也是注册了 flexcan1 的驱动的。这个板子因为是和以太网复用了can0,所以 can1是默认启动的,但 ifconfig 就是看不到,哈哈,难道我RP值太低?我准备把 prebuild 的image
刷到机器里面看看。
(3)sw1,看来确实没有影响,或者我们都理解错啦,嘿嘿。

目前我这边的情况是这样的:
我用 mgftool ,想把 uboot,kernel 和 fs 写到 SD ,一直报告错误,还在研究。
目前用的是 tftp 加载 kernel 到 ram, nfs 挂载 host 上的 rootfs 的方式在运行,调试也比较方便。但就是占住 can0 。

我打算在 uboot 里面,用 tftp 分别加载 kernel 和 fs 到ram,然后 bootm 启动,在写入SD ,这样启动后就可以释放出来 can0。

另外,我也留意到 Yocto 项目,您觉得 和 ltib 相比,那一个更合适? 谢谢啦

出0入0汤圆

发表于 2014-4-4 11:07:12 | 显示全部楼层
楼主你好,关于你现在使用的这块板子,我手上没有,所以也不是很熟悉,不过你有问题我会帮你查寻资料给你一些思路,算是和你一起学习了吧。

出0入0汤圆

发表于 2014-4-4 11:09:51 | 显示全部楼层
leoyang 发表于 2014-4-4 08:40
谢谢您的支持。

因为初次接触这个平台,刚好一个月,公司的团队里面,目前我是第一个过河的,也是摸着石 ...

另外你提到,使用MFGTool烧写 uboot,kernel 和 fs 写到 SD这个是很容易实现的,只要设置对了,文件问题放置对了,烧写过程不会有问题的。关于烧写出现的问题,你可以另外创一个贴(我们是想一个问题一个贴,这样大家学习和查找起来比较方便),详细描述出来,我们可以讨论一下。

出0入0汤圆

发表于 2014-4-4 11:15:49 | 显示全部楼层
leoyang 发表于 2014-4-4 08:40
谢谢您的支持。

因为初次接触这个平台,刚好一个月,公司的团队里面,目前我是第一个过河的,也是摸着石 ...

关于你最后一个问题,关于使用Yocto还是LTIB的问题,我这里推荐你使用LTIB。
1、目前为止,Yocto 在飞思卡尔官网上还没有Release出来,所以你使用遇到的问题话,支持起来会不是很方便。
2、Yocto 安装和编译所占用很大的空间很大,并且使用过程中需要有网络,不像LTIB只要需要的包有了没有网络也是可以编译的。
3、如果你是要用来编译QT这种的话Yocto 编译起来是比较快的。其他的话使用LTIB就可以满足你的需求的。

出0入0汤圆

 楼主| 发表于 2014-4-4 11:33:20 | 显示全部楼层
to FSL_TICS_Rita:
谢谢支持,总体来说,FSL的支持还是做的很不错的,还是依靠了广大的FAE的默默工作。

目前我正在研究  MFG 工具的 UCL2.xml ,还是要要解决 写 SD卡错误的问题,把 preBuild 的 uImage 写道 sd 里面去,用 官方编译的镜像来测试 can1 和 can0.这样,来排除我自己用 LTIB 编译的错误。

出0入0汤圆

发表于 2014-4-4 15:39:13 | 显示全部楼层
leoyang 发表于 2014-4-4 11:33
to FSL_TICS_Rita:
谢谢支持,总体来说,FSL的支持还是做的很不错的,还是依靠了广大的FAE的默默工作。

你好,MFGTool的烧写过程是按照文件ucl2.xml中内容来实现的。关于MFGTool的使用,你可以查看一下我之前整理过的一个帖子:MFGTool的使用关键几点。烧写过程中如有问题,欢迎在论坛中提问,我们再讨论。

出0入0汤圆

发表于 2014-4-4 17:58:12 | 显示全部楼层
过来看看

出0入0汤圆

 楼主| 发表于 2014-4-9 13:16:33 | 显示全部楼层
我将下载的 MFG 工具里面的 kernel image ,通过 TFTP 的方式加载到 RAM ,然后同样的 NFS 挂载 rootfs 启动正常,但和前面的结果一样,也没有看到 can1,依然只有 can0。

出0入0汤圆

 楼主| 发表于 2014-4-10 11:02:56 | 显示全部楼层
从新安装了一下 LTIB ,从新编译了 uboot,kernel 和 rootfs ,
也是看不到 can1

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)
root@freescale ~$

难道我陷入了歧途,完全理解错误啦?
难道 flexcan1 就是对应 can0,但如果在环境变量里面 can0=1,则可以看到
flexcan imx6q-flexcan.0: device registered (reg_base=xxxxxxx, irq=xxx)
应该怎么理解?

出0入0汤圆

发表于 2014-4-10 14:02:41 | 显示全部楼层
leoyang 发表于 2014-4-10 11:02
从新安装了一下 LTIB ,从新编译了 uboot,kernel 和 rootfs ,
也是看不到 can1

关于你看不到can1,在我们的官网上的英文论坛上你发的贴我同事已经解释清楚了,你查看一下,如有问题欢迎继续讨论。

出0入0汤圆

 楼主| 发表于 2014-4-11 08:44:08 | 显示全部楼层
[结贴]
感谢来自 FSL 的工程师的指导,疑问得到解答,谢谢。下面引用一下作为结论:
In your kernel, you only enabled one hardware CAN device successfully. It is hardware interface CAN1, since there is only one CAN device, the hardware CAN1 will be registered as linux device "can0".

I think you had modified some kernel code, which caused hardware CAN0 driver can't be loaded successfully.

In Freescale default BSP, with boot parameter "can0", the kernel will register two CAN devices, hardware device CAN0 was registered first, it will be linux device "can0"; hardware device CAN1 was registered second, then it will be linux device "can1".
Without the boot parameter "can0", the hardware CAN0 will not be registered, so only hardware device CAN1 was registered, it will be linux device "can0".

感谢 FSL_TICS_Rita 的不厌其烦的解答,thank you for your patient .

出0入0汤圆

发表于 2014-4-11 12:53:31 | 显示全部楼层
leoyang 发表于 2014-4-11 08:44
[结贴]
感谢来自 FSL 的工程师的指导,疑问得到解答,谢谢。下面引用一下作为结论:
In your kernel, you o ...

It's my pleasure ~~欢迎有问题继续在本论坛中交流。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 12:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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