查看: 2865|回复: 0

[其他] 本文源自飞思卡尔FAE【Easy IoT with VSCP连载】:2–借助Yocto项...

[复制链接]

该用户从未签到

34

主题

135

帖子

0

中级会员

Rank: 3Rank: 3

积分
387
最后登录
2016-1-13
发表于 2015-10-22 18:03:46 | 显示全部楼层 |阅读模式
简介
在我第一个帖子末尾的“未来项目”列表中,我已将“在UDOO上运行VSCP守护进程”列为第一个逻辑步骤。然而,由于我们需要制作开发板(CAN-Shields),我想要先发布这个帖子,确保我们在UDOO上具有必要的FlexCAN软件支持。这应该让事情进展得更为顺利。

在进行物联网演示时,我们用基于i.MX6Q的UDOO开发板将采用CAN总线的灌溉系统连接至互联网。该Linux单板计算机将在启动时(/etc/init.d)运行VSCP守护进程,并托管小型网络服务器,它可以连接至更大的“网络管道”或路由IP,其中应用程序在像Rackspace公司、IBM Bluemix、AWS等更大的云托管网站托管。VSCP守护进程注册了自己的“驱动程序”,用于与外界进行通信,同时还有用于各类控制、日志记录,过滤等的内部调度程序。在下图中,我认为调度程序是指“DM客户端内部守护进程”,其中DM代表决策矩阵。这是VSCP控制面板的诸多视图之一。
1.webp.jpg

在UDOO上支持CAN总线系统
更新:以下说明适用于3.0.35版本内核(多拉分支)。Udoo最近宣布支持其博客上发布的基于3.14版本的内核:配备3.14版内核的UDOObuntu2 即将上市 - UDOO

现在在UDOO上找到CAN接口。如果从UDOO网站下载最新的UDOObuntu图像,则显示无法找到CAN0设备。
2.webp.jpg
无法找到CAN0设备

在遍览UDOO论坛后,我终于发现有一小部分人早在2013年就使用了CAN系统。有人写了脚本,采用UDOObuntu升级内核,但此后他们的附加压缩包就被严重破坏。然而,回复正文中发布了一个补丁程序,使我们感到使用Yocto比较危险,因为我不想在SAM-Arduino端进行CAN,在两个处理器间使用UART-UART通信。这样,我确实需要适应其他采用i.MX6的SBC,如hummingboard,wandboard,technexion巨嘴鸟,塞科等,UDOO NEO。这个补丁将GPIO的一些pad定义改为CANTX/ CANRX信号,支持FlexCAN驱动程序。

重要细节
该UDOO Dual采用i.MX6 DualLite处理器,与其非常类似,但使用与双核/四核处理器不同的参考手册。要为UDOO Dual修补内核,我们需要改变:
board-x6sdl_seco_UDOO.h while the UDOO Quad is patched with board-x6sqd_seco_UDOO.h

此处介绍了可在UDOO Dual/Quad上工作的补丁程序。下载附件并应用 “git am”,或遵循之前的步骤,将其移动到右侧层。

如需了解在我的机器上建立拥有必要层级的Yocto环境所需的基本步骤,请点击此处。我随后对我的local.conf进行了以下配置。添加到local.conf的任何事项都会应用到您构建的每个图像。由于均采用了CAN,在local.conf中添加这些是合理的。

第10行和第26行是减少所用磁盘空间的简单小窍门,尤其是在试验阶段构建不同模块时。我能够通过删除日志(第26行)重新获得约32GB的空间(嗯,是千兆字节),只向部署文件夹输出我需要的文件类型(第8行)。如果您已使用Yocto一段时间,并希望利用这一优势,我认为您可以删除整个tmp文件夹,它会在下一个模块生成新版本。您无法战略性地删除tmp文件夹里的东西,删除整个文件夹即可。 tmp文件夹包含目前yocto构建流程的最大模块。Yocto常见问题 - Crashcourse维基百科。我认为如果您有问题并尝试调试bitbake引擎本身,则日志显得更加重要。

该yocto文档显示, 通过Append,可从4-6行安装其他软件包。这样可以防止意外覆盖IMAGE_INSTALLs,影响其他部分。Canutils提供cansend和candump等,而我认为libsocket可提供像cansniffer这样的东西。iproute2对于 “IP”工具与CAN驱动器对接必不可少,busybox没有用。local.conf中的其他部分按原样提供。

接下来,我们需要告诉bitbake使用我们的补丁。我赋予它一个名称,如0008-enableCAN.patch并将其复制到该文件夹:
sources/meta-ronga-udoo/recipes-kernel/linux/linux-udoo.3.0.35/

不需要将0008字符串作为开头,但这也不会有什么影响。修补顺序取决于SRC_URI变量。

在 sources/meta-ronga-udoo/recipes-kernel/linux下应也有linux-udoo.inc 和 linux-udoo_3.0.35.bb.如阅读一下本文档,您会发现包含补丁的正确方式似乎为使用Linux-udoo_3.0.35.bbappend文件。该文件的内容如下:
4.webp.jpg

后来发现,或许此处不需要FILESEXTRAPATHS_prepend,因为我们没有打补丁,我们正在修补内核。 (${PN}-${PV}是指当前目录中的软件包版本)。 OtavioSalvador和Daiane Angolini的书籍做了更多表述。

Bitbake!
在您主机上构建yocto图像:
6.webp.jpg

我正使用Ubuntu14.10,bitbake弹出一个小小的告警,说该平台还未经测试,但至今没发现任何问题。

<等待10-20分钟>

完成后,您应获得一个约为92MB 的不错的.sdcard文件,包含u-boot、 uImage、以及您可直接DD的RFS。
不要逐字复制以下步骤。在我的机器上,SD卡显示为“mmcblk0”。您可以使用“df -h”或“dmesg | tail”建立。请记得要在整个SD卡(mmcblk0)而不是在分区(mmcblk0p1)写下图像。
7.webp.jpg

这一步骤完成后,我启动了开发板,能够注册一个CAN0设备。

注:VSCP1级节点标准比特率,巴黎继电器模块为125kbps。

目前一切顺利!我们有正常运作的CAN驱动程序。与探测CAN_TX和CAN_RX相比,确认CAN是否真的携带收发器工作有点棘手。

我们可以将CAN0置于环回模式,并确认总线处于“ERROR-ACTIVE”状态,这是一个很好的工作状态。这一名字就说明它是能够检测错误的模式。

护盾
在他看来,我们需要一个CAN PHY接口。我的部门已经构建并定购了一些护盾来解决这一问题。跳线JP3H3和JP1H4使您可以在CAN_TX/ CAN_RX(TTL)信号中进行选择,可以是FRDM-K64F(垂直位置),也可以是udoo(侧面)。然而,其中有一个小问题。

(清理完毕后我会发布原理图)

如果我们回到补丁这个问题,就会发现GPIO引脚7被分配至CAN_TX,而GPIO引脚8 被分配至CAN_RX。然而,UDOO引脚图显示这些引脚的互换。当PCB就绪,我在飞思卡尔很棒的全新Make-It-Lab制作初始测试板时,我会为UDOO-CANRX 和CANTX留出头部部分并在我们订购更多开发板前将其用导线连接。
22webp.webp.jpg

VSCP 编制者Stefan 正在咨询有关EMC和电气隔离的问题。该CAN PHY(主板上的U2)是飞思卡尔的34901,适用于工业应用。在功能部分,我们看到它声称:
具有极高的电磁抗干扰性,无需使用共模扼流圈或其他外部组件即可实现低电磁辐射。



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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-22 15:25 , Processed in 0.224325 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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