1.2 PRU Implement Industrial Communication

收藏 分享
接下来的章节大家比较感兴趣了 如何用PR实现工业通讯总线协议 首先我想跟大家探讨一下 大家可以想一想 工业通讯总线协议为什么不容易做 或者说为什么用EtherCAT去做 刚才提到几点 扩展性好应该不算是对于技术上的难点 吞吐量大 可以说我有一个百兆网甚至是千兆网的载体 是不是就OK了 其实我们可以看一下Ethercat这边的定义 有助于我们去理解工业通讯协议 去实现这个工业通讯协议中你会遇到什么样的跳战 这样就能理解TI 的架构为什么能满足你的设定需求 Ethercat目前在中国市场铺的还是非常开的 Ethercat主站 我们直接看到下面 implementation这块 主站这方面的实现往往是存储转发机制 很简单 就是我的每个数据包过来相当于说每个CPU都会处理的 但是对于从站这个地方大家看到了没有 它叫on-the-fly的processing 很简单 就是我是free to capture 给大家一个简单的例子 我们有一个msater带六个节点 那我的Ethercat往往是由总线或者是环型结构去做的 我们想一个总线结构 第一个master接着第二个的 一个master接着第一个slave接着第二个slave接第三第四第五第六 每一个slave之间都是手拉手一进一出的结构 大家可以看system level view 比如说我们最左上角的 就是第一个 紧接着第二个 第三个 第四个 我最后一个节点的收到我master侧的数据时延 是由前面三个的slave节点的时延的总和决定的 所以它是一个叠加的过程 这个叠加的过程带来一个什么问题 就是我的slave这边的时延必须要很快 必须要很小 如果我slave节点口比较大 那会有个什么情况 如果每个slave节点相对来说不可控 抖动比较大 就是我们说jitter 或者是抖动比较大的话 那我环路想要做到比如说一毫秒同周期 我能带的节点就比较少了 因为我在算每个节点时延的时候我都会每个节点时延中 最消耗资源或者抖动最差的情况我才能保证环路的稳定 所以 Ethercat的slave节点这块 重要的特点就是我必须要on the fly的去capture我的数据 这样我才能保证我的节点时延比较小 所以,对slave的实质性要求是比较高的 对于master它是不会再说 像我们平常看一个CPU去处理一个数据包 数据包过来了 我就解析 比如说ethernet ethercat net 我去比对 这些东西的mac地址和我自己的IP地址这些东西 是不是我的如果不是我的我再转发走 其实对于EtherCAT而言的话 它是没有办法去忍受这个时延的 它必须要on the fly动态的去做一个capture 去做所谓的数据端的切片 数据端切片过后我再去做所谓的数据处理 去拿到自己的数据过后我再去做处理 然后在下一个同步轴器之中再去丢掉 再丢回去 所以对master侧的这一块来说 master侧的这一块其实有一个压力 就是我要保证在一个同步周期内 把我底下这些数据的处理 就是要去处理掉的信息及时处理掉 如果我只是简单做一个数据收集 那我master侧对于CPU的性能就没有这么高 但倘若我master侧这块是类似于做运动控制器 那我要去规划 调整我下面节点的运动控制轨迹 这时候master侧的对于arm 运算能力以及对dsp的使用能力就可能是你关注的一个焦点 而对于slave侧的话最主要的一点就是 我要非常快的把数据端切片拿下来 一般来说 我们CPU体系之中的接口 我们可以看一下 下一张 一般来说 我们CPU的外设接口是很难做到的 而pru单独这块体系中它是怎么去做到这块 这张图能够给大家一个解释 大家可以看到 一般来说比如说我们就拿gpl口做解释好了 这里有一个gpl口 我们的arm侧最左侧的是我们的arm核 arm核我想访问这个gpl口往往是挂在很多总线上 每一条总线上都会有自己的总线带宽 也会有总线仲裁 那我arm想要访问到一个gpl口的外设状态的话 我是要通过L4 L3 然后再通过各种数据指令集的缓存 最终才能够拿到这个接口 所以这就是为什么外面普通以太网 cpsw 就是我们的普通以太网很难以实施高效做处理的一个原因 对于pru来说 它有什么差别呢 pru是跟arm相对来说独立的一个体系 这个体系跟arm的位置是等同的 而且它有自己独立的instruction RAM 还有Data RAM 所以它能自己独立的运转 当你把固件这些东西去load到pru核里后 它能够很快的自己capture到外面io电频的变换 因为pru这边的io口 与这个不同 这个是挂在总线上的一级一级进去的 这边是io口 直通寄存器的 pru到io口直通寄存器 代表着什么含义 这里边我们是200兆的pru 我一个指令周期就是五个纳秒 pru的汇编大多数指令都是单指令周期的运算 也就是说五个纳秒一个周期 往往我就能capture到外面的变换了 所以,这样子的话只要外面有数据进来 我的pru能够很迅速的capture到 而且 pru这里面往往就像是单片机一样 我就是一个从上往下的顺序执行结构 就跟我们原来学习hello world一样 就是一个主man 你一个主man下来过后是什么样子就是什么样子 所有的逻辑控制 你都可以去按照指令周期去算出来的 所以它的指令执行会非常高效 在pru的这一点上 就保证了它独立的处理暗核 不会受到外界CPU loading干扰这个特性 所以它能够去做我们刚才提到的on the fly capture 有人可能问这地方只是io 难道我要把Ethercat作为io去做吗 其实不是大家看黄色的peripherals就包含了 上页这张图里面的 黄色的里面就包括了 我们这方有mii的接口 这个就是我们的百兆以太网 所以它跟gpl口也是一样的 都是直通到我们pru这侧的 除了mii之外 我们还会有uart 这就是为什么我们还可以去做类似于periphery bus这些东西的原因 而periphery net Ethercat之类的都要依赖于我们的mii接口 和pru核 往往是一个pru核做一进另一个pru核和mii做一出 所以等于是单核单用 基本上我们看到在a8体系架构中的一个pru子系统 我们都是两个核 一个pru子系统两个核 这两个核 一个进 一个出 这两个核之间是可以相互发中断的 并且pru拥有对全局的访问权限 当然 在这地方能访问是一回事 但是arm这块要规划好 我不要发生资源冲突 比如说我一直在做一些接口的轮循 pru进来够后 可能会有打架的情况 这个我们在系统设计层面上是会去避免的 但是从功能上来说它是有访问全局的 它就可以通过电路dma 去把我的数据实时的从内部的RAM空间之中 搬到外部的ddr上 它跟arm之间也可以有一个中断去做访问 给arm一个中断 我的处理机制就可以变成pru把所有的数据capture完 处理完了过后 丢到我的ddr上 最后给arm一个中断 每一次接到这个中断的时候对它来讲没有loading 它就把刚才提到的那些复杂的切片 和这些实时算法 在ddr上的数据 把它这个算法中的数据全都拿到了 直接去处理职业数据就OK了 然后发的话 也是有pru这边 去通过自己独立的ram 去运行 去发的 所以这样一来 pru就能做到实时 高效的通信 所以 我们回到这张图上来 所以,刚才我提到的这点 就是“pru为什么在这样一个体系架构之中能够做工业通信的ltave” 作为主站来说它有没有什么好处呢 大家可以看到主站我刚刚提到的一点是 主站,并不要求说 你立刻就要去保证节点时延 因为节点时延的保障是有slave去进行的 那首先我刚才提到了一点 一个就是说CPU的性能 你做算法和处理数据的能力 这是非常重要的 对通信上来讲 它 一般来讲会怎么去做 目前来讲我们看到有两种方式 一种就是在普通的以太网上 通过所谓软的方式加载一层Ethercat的通信 Ethercat的协议 去完成Ethercat master的功能 还有一个就是用pru去实现 pru实现的好处是什么 刚才我们提到pru的实时控制性能力非常强 所以在这个地方的话我们pru可以去做到一个功能 叫Time trick set TTS的这样一个功能 包括后面的Time sensitivity network这个tsn的一些能力 都是可以在pru这个体系上实现的 如果你把pru换成对外界的io口 就是相当于说挂在L3 L4上这些东西的能力 那它插的东西就不止一个等级了 一个是总线上带宽通信的仲裁的时间 这个东西被节约掉了 另外的就是指令周期方面的时间 排队时间被节约掉了 单指令周期L口直通进行器 这是它的特点 这也是为什么它能够成为工业通信上一个重要应用手段的原因 这里给大家一个重要的叫bench Mark 一个数据对比 大家可以看到 左侧我们用arm的gpio 做了一些测试 我们在一个arm上拉了gpio 这边是直接使用汇编 去写的一个拉高拉低 右边是我们在pru体系上 去用了汇编去写的拉高拉低 事实上 从测试结果看 之间的速度差距可以达到40倍之差 通过这张图 希望大家能够更加理解住pru它的实时特性 相对来说还是比arm这边的外设处理器 还是强大了和好几个等级的 所以它能够作比较多的事情 回到我们实现的这个层面上 有人可能问了 如果arm pru这块都是用去汇编写的我要怎么去hold这个事情 这开发难度对我来说有多大 事实上 TI在这边的话 是把所有的固件和相关应用程序和api都已经写好了 所有第三方的资源都已经囊括在内了 真正对于用户的时候用来说他只需要使用上层的api就OK 下层的改动会非常小 特别是针对固件这边的改动 基本上大家不太会碰到 如果说一定会碰到的场景是什么样的 TI现在目前为了很多工业客户去开放的出来的 这个开源性的Ethernet架构 因为现在很多客户想去做 自己自定义的工业控制通讯协议 比如说我们看看国内几个大的运动控制器的生产厂商 都有自定义的协议 都是基于百兆甚至千兆以太网去做的 TI有一套开源的基于pru的协议框架 这个(听不清) 也是release在了官网上 大家感兴趣的话可以同过pru的关键字眼去搜索 能够找到这个东西 这里面能够把pru内部的汇编 包括整个汇编工程 拉出来给到大家 大家可以在汇编工程上去做修改 它是直接把连接的建立到连接的协商 到很多内部连接数据交换机制之类的都给规划出来了 你是可以直接跳进去改里面汇编的机制的 改汇编对于有些朋友来说会比较陌生 这个其实在TI这边来讲首先提供了两种方式 一种是汇编 一种是C语言 因为C语言我们已经实现了在pru上有一个pru的编译器 可以把你的C语言转成汇编这样对于很多初级和终极玩家来说 会比较容易上手 汇编主要的一个好处就是 在处理这种复杂的通讯协议的时候 你的实时性可以精确到每一个指令周期 这个对于很多朋友 老鸟来说 这个还是比较重要的 很多人在这个基础上 去做二次开发的时候 会需要很多的资料 这种资料我们已经把它收集到我们当前的pru的Tools complier上了 大家可以在我们的Wiki上去搜一下prucomplier 和pru的汇编 我们用(听不清)编译的那套体系和流程 这个讲说的非常明白 其实总的汇编指令大概也就是二三十条 总的来说不是很困难 上手给大家一点信心 就是在TI这边 之前带实习生 就是有来做毕设的 我们曾经有一个毕设的学生做一个pru camera的一个应用 大概是用了两个多月 在我们资深FAE的带领下 他就独立完成了对于pru实现摄像头的一个功能 所以这个东西的实现并没有大家想象的这么困难 感兴趣的话大家可以会后去看一看 在我看目前TI的方案之中 我们回到这一点上 pru的特性刚才跟大家介绍过了 它实现工业通讯协议的优势 其实从整体成本上来说 这个为大家节省的还是比较多的 我们知道ASICs跟FPGAs现在的价格相对来说是比较昂贵的 基本上在TI的arm+pru架构 我们推出了amic110的产品 以及am335系列的产品 就是想在这个市场上给大家带来一个福利 基本上能够做到整体的BOM成本节约大概20%—30% 在右边的产品构架上 我们在不同的应用领域内 我们可以有不同的玩法 比如说刚才提到的motion control 如果是motion control+带有Ethercat master的 就可以选择用arm+dsp+pru这种完善的体系 我们am57系列就可以做到这些事情 如果说你响应的只是简单的逻辑控制器 或者是带有小motion功能的plc 那又要有Ethercat 那我们的an335系列的产品就可以满足需求 如果你说其实我想要做的是一个兼容性的平台 我的工业通讯协议可能在我以后的路标设备之中 现在我只是想预留这样一个可能性 我现在想做的只是一些中低端的 比如说 做一些can 485一些很平常的这种通讯方式 那一样 我们的纯arm核的产品 也是比较适合发展 也是比较适应大家选择 因为我们的arm+pru+dsp这套架构 往往设计的理念都是PIN 2 PIN结合 特别是在我们amic110这代产品之中 它基本上是把a8整个芯片做到了PIN2 PIN的兼容 所以不管是面对高端的应用还是中低端的应用 都是比较合适的 这张就是我们am335x的系统框图 am335x这种框图之中 点几个重点去讲 大家可能会关心到的一个是a8的主频 a8的主频的话这边有300 600 800 1G 当然了 如果你做所谓工业通信的时候 肯定是不需要lcd的 但是对于下面经常被问到的can通信 spi通信 UR的通信pru这些东西肯定是必备的 然后这些东西会不会有 以太网通信会不会有 这些东西都是可配选项 所以amic110也是在这个市场上应运而生出来的新的产品 它基本上就是把刚才我们提到的 因为你pru这块已经能做工业通信控制 那么我们的a8其实本身的工业通信能力在外设的基础上并没有这么强 这就是为什么之前单ASIC去做的功能全在这儿了 我们配了一个a8的300兆的mpu 关于3D加速器lcd显示这一块全都被除掉了 包括之前的一些音频接口 包括之前的一些pw 不好意思这个是EtherCap和千兆以太网 千兆以太网这边可能就不太需要了 所以定制化出来了一个amic110的产品 amic110的产品的话相对来说 对于335的性价比就会高很多 除此之外的话 如果说我们还需要更高端一点的 比如刚才提到的带有运动控制器的motion control 然后可能是arm+dsp+pru架构 那就是am57x系列 然后plc逻辑控制器这块 我们可以用335可以用437 可以用57 这个差异点也是在于说你有没有复杂的联动算法 你有没有工业通讯的需求 所以 在这一套体系架构 通过sitara系列的产品能为大家带来相应的设计价值 能让大家使用一个规划的平台 去完善整个系统解决方案 大家知道 其实在工业上面 去验证一个平台的稳定性 往往是需要花费两年 三年甚至更多时间 这种时间的积累对各位研发来说也是一笔财富 所以如果能够通过同样一套体系架构让你玩转整套产品 这个对开发来说的价值是不言而喻的 那TI在立足于这一点 除了在我们当前的a8 a9 a15的芯片每一代之间 就是每一代产品系列之间 做到了PIN2 PIN 在跨代 比如说a8升a9 a9升a15 包括后面我们升到a53的体系架构之中 我们也考虑了软件的兼容性这一点 希望大家把软件开发的门槛降到最低 目前的peocessor SDK便是针对于我们当前的 a8 a9 a15全系列支持的一个SDK 它把所有目录的解析 所有dts文件的架构和位置 基本上都是使用了同样的框架 这样对于已经开发过a8的兄弟们而言 你网上走a9或者a15还是比较容易的
课程介绍 共计6课时,1小时7分1秒

TI - 基于 AMIC 产品的工业通信总线设计方案

EtherCAT Sitara AMIC ProfiNET

随着工业通信的不断发展,各种通信协议百花齐放,各类驱动器控制器产品支持EtherCAT, ProfiNET的趋势也越发明显。本次直播通过对TI Sitara的工业通信方案及产品的介绍,通过实例演示让大家了解TI方案的实现原理及优势。
展开

分享到X
微博
QQ
QQ空间
微信

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved