【Easy IoT with VSCP连载】: 2 –借助Yocto项目,在UDOO上支持CAN总线系统

分享到:

简介
在我第一个帖子末尾的“未来项目”列表中,我已将“在UDOO上运行VSCP守护进程”列为第一个逻辑步骤。然而,由于我们需要制作开发板(CAN-Shields),我想要先发布这个帖子,确保我们在UDOO上具有必要的FlexCAN软件支持。这应该让事情进展得更为顺利。

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

VSCP2 1


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

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

VSCP2 2
无法找到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”,或遵循之前的步骤,将其移动到右侧层。

VSCP2 3

 

VSCP2 4

 

VSCP2 5

 

VSCP2 6

 

VSCP2 7


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

VSCP2 8


第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文件。该文件的内容如下:

VSCP2 9


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

Bitbake!
在您主机上构建yocto图像:

VSCP2 10


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

<等待10-20分钟>

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

VSCP2 11


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

VSCP2 12


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

VSCP2 13


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

VSCP2 14


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

VSCP2 15


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

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

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

VSCP 2 17


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

继续阅读
Thread将终结IoT通信协议乱战,加速万物互联

接入物联网(IoT)的各种设备正加速爆发,不过它们在通信标准上却各立山头,有采用蓝牙的,有采用ZigBee的,使用Wi-Fi的也不在少数。面对标准不一的物联网通信协议,各IoT设备间的互联互通性自然备受影响。不过一个名为“Thread”的协议将会从众多协议中脱颖而出成为未来IoT标准而稳得天下。

高度集成APU,联发科新AIOT芯片发布助力物联网生态升级

全球领先的IC设计公司联发科技发布AIoT平台, 包含拥有高集成度和高端APU性能的i300和i500系列处理器芯片,为业界提供面向智能家居、智慧城市和智能工厂三大领域的解决方案,助力人工智能技术和物联网技术的落地融合。

华为抢先入驻智能家居市场,3.0时代将会发生怎样的进展

AWE 2019的华为“真生态 臻品质”生态大会上,余承东宣布华为IoT生态战略全面升级为全场景智慧化战略,将围绕HiAI、两大开放平台和三层结构化产品,为行业打造一个丰富多彩的智能家居生态系统。4月9日,华为再次亮相CITE 2019,给予了全新升级的全场景智慧化战略更多诠释与解读。

处理器的安全不是说说而已,需要经过认证的

基于慕尼黑安全会议签订的《The Charter of Trust》和推动物联网安全的承诺,恩智浦半导体宣布,旗下的各类处理器系列获得了Arm平台安全架构 (PSA) 认证计划PSA Certified™的1级认证。

物联网技术快速发展,家家都有的路由器充当了怎样的角色

不知不觉间,我们的生活正在以肉眼可见的速度变得智能起来。不知从什么时候开始,扫地机器人开始不再到处乱跑,音箱开始在我们闲聊时搭话。这些陪伴我们的对象没有发生变化,但它们似乎逐渐拥有了灵魂。