- 本课程为精品课,您可以登录eeworld继续观看:
- 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秒
猜你喜欢
换一换
推荐帖子
- 请教定时器中断和比较器中断
- 使用msp430想达到如下效果:比较器CA0与0.25VCC比较,开始时CA0>0.25Vcc,比较的同时开启定时器定时,晶振32768,定时器溢出后秒数+1,当CA0与0.25Vcc的中断产生后得到一共耗费的秒数,也就是同时保持两个中断随时可以开启,请问程序应该怎么写,请大家给个思路或是代码 ...
- cona123 微控制器 MCU
- 2.4 GHz CDMA无线电收发器CYWUSB6934应用电路
- CYWUSB6934是一个2.4 GHz CDMA无线电收发器。其通过SPI接口能够直接与USB控制器或者任何一种标准的8位微控制器连接。CYWUSB6934适应PC机上的硬盘驱动器、鼠标、键盘和操作杆无线连接;游戏机上控制键盘和控制台遥控;电子收款机系统终端和消费类电子产品的应用。 主要技术特点如下: ·RF工作频率为2.401~2.482 GHz; &middo...
- Aguilera 无线连接
- 为您的3G手机选取合适的DSP
- 经过多年的准备,3G手机的推出已提到日程上.3G TD-SCDMA和WCDMA手机的设计很复杂,而分隔问题对现有的基带处理器带来了挑战.本文主要探讨3G基带所面临的挑战,可编程DSP的要求,以及平衡处理等问题,这是设计者要找到用在3G无线手机正确DSP所必修面临的问题...
- lorant DSP 与 ARM 处理器
- "Load Program" & "download flash"
- 我将一个program build好之后分别用file里的"load program"与flash utility download进LF2407A,都没有设定csm的密码. 在ccs底下跑的很正常,但是stand along的版本却是跑不起来,我检查后发现program都被download在同一段program memory里,开始/结束的address(因为用同一个cmd...
- cyu02 DSP 与 ARM 处理器