深入Sitara:PRU介绍

+荐课 提问/讨论 评论 收藏
  • 课程目录
  • 相关资源
  • 课程笔记

这一章主要是讲这个 PRU 因为之前的介绍 包括上午介绍 我们在讲工业通信的时候 一直在提这个 PRU 所以这个章节就是着重把这部分拿出来 再给大家做一个比较详细的介绍 可能短时间就是这个东西 可能你想通过短时间的介绍 把它了解的特别详细 可能也不太可能 我们只是希望给大家一个概念性的东西 就是你在用我们 TI 芯片 在去实现这个 无论是工业通信 还是一些其它的功能的时候 你能够对我们这个 PRU 能够有一些客观的了解 分四个部分 一个是整体的介绍 还有一个就是 它硬件的架构的整体的一个概况 另外呢是 PRU 本身它软件的一个开发方法 以及在 Linux 下边它驱动的一个介绍 PRU 这个东西呢 实际上它是一个可编程的一个 我们叫 RISC 的一个协处理器 其实它应该是 算是有点像一个 MCU 的一个东西 跟 MCU 也不太一样 它是一个 可以认为是一个32位的一个 精简指令级的一个辅助的 一个 processor 这是它本质的一个东西 另外它也有自己的指令和数据的 RAM 而且它可以通过片上总线 去访问你整个 Processor 片上的一些资源 一些外设它都可以访问到 所以呢可以把它理解成一个 32bit 的 一个精简指令级的一个 processor 是一个可编程的一个 processor 实际上 PRU 这个系统也是我们 TI 芯片 它特有的一个东西 不仅仅在我们现在主推的 335 437以及57上有 实际上在我们很早以前的 芯片上它就存在了 像我们 TI 比较老的芯片 像我们 OMAPL 的芯片 包括我们以前的 DSP C674 的东西上面 已经都就存在这个 PRU 这个东西 那么之前的 我们之前一些老的用这个 OMAPL 以及 C674 的一些老的客户 他们有些客户实际上已经用 PRU 开发了一些功能性的东西 那么我们在这个老的这个 PRU 我们叫 Legacy PRU 就是相对一个比较老的一个架构 那么针对我们现在 335 4375 及这些主推主流的处理器上面 PRU 呢 它实际上是一个更新版的一个 PRU 系统 而且它叫 ICSS 就是我讲的 它是专门针对工业通信 做了一些特殊的一些加强 PRU 系统能给客户提供的东西呢 首先呢是能给客户提供一些差异化的东西 就是你可以用 PRU 它是可编程的 你可以实现一些客户自己想定制化的一些东西 第二点呢 它能去做一些嵌入式任务 也就是说可能会减轻负荷 它有能力去减轻 CPU 需要干的一些事情 比如说一些数据搬移啊 数字融合这些工作 另外呢它有自己专用的控制的 I/O 和自己专用控制的外设 那么它的实时性会非常好 所以呢正因为这个特点 我们专门用它来实现工业通信上边的一些 对时实性要求比较高的一些功能 下面呢就去告诉大家 那么 PRU 它是什么东西 同时它不能干什么事情 首先呢它是一个专门为数据 数据的融合 数据搬移 以及时移要求高的一些应用 所做的一个双核的一个 32bit 的 一个精简指令级的处理器 每一个 PRU 系统的话呢 它实际上它是包含两个 PRU 的核 也就包含两个处理器 但是呢 它和 DSP 还是有很大区别的 它并不能做硬件一些的加速 比如像我们335上边 比如说有些加速 比如像这个加密算法的一些加速 那么这个东西专门是由加速模块去实现的 这个东西的一些加速 它是不能通过 PRU 去实现的 另外呢它是一个 精简指令级的这么一个小的协处理器 它的这个指令只有大概40个指令 然后呢它很多的指令呢 都是单周期去实现的 但是呢和通用的 processor 来比呢 它既没有 cache 也没有 pipeline 就是它相对特殊的一个地方 第三呢就是说它呢本身带一些 自己能够亲自控制的一些外设 比如说像 UART 像这个 MAC 但是呢它对于处理器来讲呢 它整个并不是一个 对处理器来看呢它并不是一个整体的一个外设 就是它自己可以控制一些外设 但是对于 ARM 来看的话 从 ARM 角度来看 它并不是一个外设单元 它是需要有一些专门的一些配置 来去实现让它去工作 而不是它自己就能去默认能干一些事情 所以它就是 它是一个可编程的东西 是需要进行编程的 还有一点呢就是说 它可以去辅助 CPU 去做一些特殊的一些事情 可以去实现一些特殊的需求 但是呢它本身它这个上面是不能 跑任何类似于操作系统的东西 这个也是跟 MCU 比较区别的地方 因为我看有一些像 C2000 也好 像 M3 M4 也好 实际上它上面都能跑一些 类似于自动化系统的一些 类似的一些简单的 OS 但是我们这个 PRU 是做不了的 所以它本质上像是一个小的协处理器 但是它跟真正的处理器还有很多的区别 我们的 Sitara 系列处理器呢 加入了这个 PRU 的东西呢 增强了我们处理器 TI Sitara 处理器 和其它我们竞争对手一些处理器 一些差异化的东西 这一块呢主要是讲它的 PRU 的一些价值 首先呢就是之前在讲的它可以 因为它的实时性 因为它的自己可以控制一些外设 那么它就可以很方便的实现一些 工业通信满足的一些协议 像 EtherCAT 像 PROFINNET 像 Ether(NET) PROFIBUS 因为它们对 因为这些协议的话 它对 MAC 层的实时性要求比较高 跟普通的这种以太网 MAC 是很不一样的 所以我们可以用它去编一些特殊的方案去实现 另外呢它可以去做一些特殊的外设 因为它是可编程的 比如说我们可以用它去扩高速的串口 我们335标配的这个串口 最高的波特率能只能达到3.8Mbit 最高的波特率 那我们用 PRU 去实现 最高可以到12Mbit 那有些特殊的应用的话呢 你可以用 PRU 去扩一些 特殊的高速的一些串口 另外呢它对这个 I/O 的控制 它有专门的 I/O 控制 它对 I/O 控制来解决它的时延 是和 ARM 去控制 I/O 的时延相比来讲 它的时延是非常小的 后边会讲只有几个纳秒 这样的话呢在一些 特殊的一些工业应用场景 可能你去做一些实时采样 它对 I/O 的响应速度要求非常高 那有些用 processor 来做的话呢 可能一个 processor 后边 还要加一个简单的一个小 MCU 像我们 TI 的430这种 可能430前面去带一些 对实时性要求非常高的采样 然后 ARM 这边你去跑一个 操作系统进行管理 但你用 PRU 的话 你可以把那430省掉 因为它本身它的对 它相当于就可以把430的外部的 实时的采样的事情就可以给你给做了 另外呢它可以做一些数据的一些搬移操作 比如像我们有一些音频的一些算法 实际上是很适合用 PRU 来实现的 另外就是说呢 因为它干的是一个辅助 MCU 的活 但是你当是 system on chead 它做单片去实现的你不用在外边扩芯片 这样的话它是节省你整个系统的电能的 总体来讲呢 它是一方面是可以实现一些特殊的外设接口 另一方面呢它可以去减荷 CPU 的一些资源 下面就是把 PRU 的架构呢给整个讲一下 那么看我们单纯的 ARM SoC 的话 它就是说首先是一个 ARM 核 然后里面有它的一级二级和三级的 cache 那么它和 DDR 仪片上外设的话呢 是通过 L3 和 L4 总线去连的 那么它这上面讲的 当然它跟一级 cache 来讲 它用的指令周期是最小的 所以就是说 cash 的原理 就是实际上 DDR 很多代码都是拷在 cache 上的 L1 L2 级的这个缓存的 寻址周期都是非常短的 到这个 on-chip SRAM 以及到 shared RAM 就是一些我们片上的一些记忆的话呢 它的指令周期大概是20到40个周期 也就是说呢它123 以及到这个 shared RAM 的这个访问周期 都是 latency 的话都是逐渐变大 但是 PRU 的话呢实际它这边它的周期呢 实际上有自己的一些 RAM 自己 RAM 来讲的话呢 它的访问周期呢是相比 ARM 的话呢是更小 它访问自己的需求层 自己的 shared RAM 的话只有3个周期 另外呢它是通过 L3 总线 和片上的一些外设进行相连 因此它也可以去控制片上的 理论上片上所有外设它都可以去控制 这是它的一个基本架构 可以看到就是说在一个 ICSS 就是一个 PRU 系统的话呢 它是包含两个 PRU 的核 也就是每个 PRU 的核是跑在 200M 就是它每个的话是跑在200M 的主频上 也就是说它的每个指令周期 大概是5个纳秒 它所有的指令呢都是单周期指令 它都是没有 pipline 所以它去跑一些 尤其是你会汇编的话 你每条指令 每一个指令的周期都能精确算出来 它具体指哪些任务 可以把它具体的时间能够精确的算出来 通过这个有一个 international SCR 的一个 interconnect SCR 的总线 和它自己的这个 PRU 自己的 shared RAM 相连 然后你可以通过这个中断系统 和 ARM 以及 DSP 去进行通信 另外呢就是它对 它有专门的这个 I/O 控制 这些 pin 呢实际上就是这个 跟我们整个芯片的 pin 是复用的 它这些 pin 呢去操作的话 都是通过 PRU 自己去操作 不用通过 ARM 通过 ARM 总线去操作 它的 PRU 的操作时间响应时间是非常快的 它的 GPIO 的响应时间是非常快的 这就是它的一个特点 这个就是讲的就是 它是有些 Dedicated GPI 和 GPO 就是这些 pin 的话实际上 直接都是芯片的 pin 它这个具体的这些 pin 你可以 去接一些输入输出的一些信号 它的这个实时性是非常强的 那么这张图呢就是一个示例 就是说比如说对一个 pin 的这个操作 无论是输入还是输出 那么如果用 A8 进行操作的话 它要经过 L3 L4 两级数据总线 然后再去连一些外设的一些功能模块 再通过 PMAX 才能去访问 然后 PRU 的话实际上 它直接就通过 PMAX 去访问 这是它的一些 I/O 那么这是它的 Fast I/O 的一个特性 具体实测出来的话呢 就是如果你要用 ARM 去控制 I/O 的话 它的这种编程呢就是要置高置低嘛 需要用 C 的话大概是这样一个闭环方式 那如果说是我优化到我就直接去用汇编 去用汇编去访问 那实际上它的响应时间大概有 200个纳秒 但是如果要用 PRU 汇编去编的话 实际上它大概只有 5个纳秒 比这个 ARM 去访问要快很多 所以这个就是为什么 我们工业总线对实时性要求很高的这些东西 用 PRU 来实行 这就是它的原因之一 另外呢它本身 PRU 会控制一些外设 像这个 eCAP 像这个 UART 和 IEP 最关键的应该是还有一个 MAP 执行控制区的 MAP 那这个实际上是它自己的外设 这个外设应该是 ARM 访问不了的 是它自己的一个外设模块 那实际上我们这个工业以太网的话 就是 工业总线的话主要是两种实现方式 一种是 eCAP 方式 一种是串口方式 那么它都可以 因为它本身自己有自己的外设 所以用它去实现是非常合适的 那么这个是它整个的一个功能框图 PRU 执行单元的功能框图 它里边有采样表 然后有执行单元 然后有它的指令 RAM 还有它的一些通用的寄存器 实际上呢就是编程的话 实际上主要就是根据这个框图 去编一些汇编指令 我们的话呢就是有 专门有一个 TI 这边专门有一个开发的团队 专门是根据用 PRU 去开发一些 相关的一些专用的实时性的功能 像工业总线啊 这一块我们都是有一个 专门的开发团队去开发的 包括一些实时的一些 之前讲过的 PST 以及1588 因为它对实时性要求很高 都是用 PRU 的汇编去实现的 这个是它的一个 Memory Map Memory Map 的话就是 它就是有自己的 每个 PRU 有自己的一个 memory 它实际上去访问它自己的寄存器 它访问自己的 RAM 它都是有自己的 memory 内设 同时呢它还有一个 global memory map 这是两个不同的 memory map 对应本身 PRU 的这部分 就是它这部分 memory 的话 实际上对于整个芯片 对于整个 ARM 来看的话 它也是映射到一个 ARM 的空间 那么这段空间 PRU 自己也可以去访问 那么 ARM 也可以去访问 这个是去访问不同的外设空间所用的周期数 这个是和编程有关的 就是具体编程的话呢 可以去根据它不同的访问时间 去进行不同的寄存器访问 这个是整个 PRU 的一个工况 像我们这个 PRU 工作在 200M 那么整个 cpu 工作在固定 100 大概 1.1V 额定电压情况下呢 它的功耗是很低的 基本上就是十几 二十几个毫瓦 这个功耗是非常低的 对于这个 335 还有 437 还有 57 的话呢 实际上我们带的 PRU 子系统都是不太一样的 像这个最早的 你看最早的 AM18 或 OMAPL138 那么都是以前老的 legacy PRU 子系统 你看它上边的这个 它整个的 PRU 的 core 包括它上边的指令和数据 RAM 都是不一样的 新的话可能是要比老的有一个加强 像335上面带一个 PRU 子系统 这块的话呢 如果你作为定位分析的话呢 这个子系统基本就用于工业通信方面的 像 437 像57 上边都带两个 PRU 子系统 那就可以实现一个做工业通信 一个做其它的东西 比如像我们有一个 TI design 就是用437 一个 PRU 子系统 去做这个类似于 RBJ 的一些功能 比如像 sigma delta 像电流的回环检测 另外一个作用它有通信 后边有 TIdesign 那么实际上这个 PRU 的话呢 我这边看到我的客户的话呢 他们的有各种用途也是比较多的 有很多都是客户自己定制的 有的是客户直接用 C 或者甚至用汇编编程自己做出来的 我们看到的一些使用例子的话 首先就是我们工业总线协议 这块是由我们 TI 本身有开发团队去开发的 另外有它拿它做模拟高速串口 有拿它去实现 MAC 的 就普通 MAC 的 还有拿它做一些扩展接口的 像 LCD 接口 像 RS485 接口 像 Camera 接口 像 Sensors I2C 的接口 就是说一些它可以用来去拓展一些接口 比如你的串口 我们335上带6个串口 但你可能觉得还不够用 或者是说你觉得这个串口速度不够用 你可以用它继续扩 扩高速串口 后边举个例子 举一个这个是我们 应该是国外的应该是一个客户或者是一个实验室 用我们的 A8 在 BeagleBone 做的一个 3D 打印机 A8 上面呢跑这个 Linux 跑一些 HMI 网络的一些协议 PRU 呢主要就是控制电机 因为它的实时性非常好 我们还有些客户这边有个客户做那个打印机的 他们用也是 335 的 A8 上面去跑 这个操作系统跑 Linux 他用 PRU 去实时的去控制一个 SPI 去控制一个打印头 因为那个打印头对实时性要求特别高 如果你是整个跑操作系统的话它实时性满足不了 因为操作系统本身有很大的 latency 任务调度啊 会有很多 latency 他就用 PRU 去实时控制的 这个是一个比较成熟的案例 用 PRU 去做的 因为这个案例的话呢 实际上我这边也有一些客户在跟我咨询 说能不能拿它整套方案 因为他可以觉得这个打印机 它可以做一些多轴的一些控制 这个是我们的一个应该是 TI design 就是我一直在讲的一个 整合了电机控制和工业通信的一套方案 电机控制这一块呢 实际上干的就是 C2000的事 因为它 437 有足够的 PWM 和这个 ecap 这些信号 然后呢它可以去控制电机 然后用 PRU 去做反馈 位置和电流的反馈 然后另外一个 PRU 系统的话呢 可以去做一些总线 现场通信的一些这个东西 另外也可以去上边可以跑一些这个 因为它接口相对来讲比 C200要丰富 可以干一些更多的事情 我觉得把可能之前需要一个 C2000+ BECKHOFF 再加一些其它的这种 甚至加 RBJ 这种架构整合在一起了 这个 TI design 的话呢也是我们这边 一个最近比较主推的一个 TI design 了 大家感兴趣的话可以去我们官网详细了解一下 一个单芯片的驱动控制 这个例子呢是用 PRU 去 在点钞机里面去实现一些功能 就是一些特殊的 CIS 就是一些 CIS 的 sensor 和一些 V_SYNC H_SYNC 参考时钟 一些 CIS 它比较特殊 时序比较特殊 它 PRU 的一些控制信号来去实现一些控制 用 PRU 的一些功能去实现一些特殊的信号控制 这个是我们国内的一个做的客户 用我们的 PRU 去实现的 之前这两个都是国外的 这个是国外做的 这个是国内做的 所以 PRU 这个东西 还是感觉能做出一些差异化的 这个也是我们一个 应该算是一个 TI design 的东西 是我们叫 smart grid 就是我们那个智能电网 TI 有一个专门做智能电网的单位 他们做的一套方案 是用我们 335 上面的 PRU 去实现什么呢 去实现一些特殊的一些接口 电网上面它的集中器要跑一些特殊的协议 像 G3 PRIME 这些协议可能在欧洲或美国北美 那边可能比较流行 它还要接一些特殊的 ESAM 口 包括现在好像国内的电网做的那个充电桩 还是集中系统也要接一些特殊的 ESAM 它实际上我们这个方案是用 PRU 来实现的 就是 ESAM 下面呢讲一下 PRU 的开发 我们现在因为考虑到可编程系统 我们最新的 PRU 都是可以用 C 语言直接去开发 因为它在 CCS 上 都是有这个特殊的针对 PRU 的编译器 支持 C 语言的整体开发 包括 debug 都有仿真 就是你如果用 CCS 去接 我们的335也好 437也好 57也好 它的那个 你看它出来的那些核 除了 ARM核 除了 DSP 以外 还会有 PRU 的核出来 就是用来去调试的 而且我们会有很多的 PRU 的 一些现成的摘要提供给客户进行参考 但实际上 PRU 这块呢 我问过我们美国那边的开发的团队 他们更多的还是汇编 因为汇编开发效率会更高一些 在 CCS 下呢这个 IDE 的这个环境下呢 PRU 有一些方便客户开发的一些东西 比如说 Memory window Disassembly window 用 C 编的话可以给你反馈编程的代码 你可以去看 你可以去看 可以去调整 还有一些 Register window 实际上就跟还可以执行单步 断点 还有 PRU soft reset 实际上就是方便客户的开发 就是我们现在最新的 CCS 上面已经对这些 PRU 调试仿真都是有完整支持的 就是你可以像去 仿这个 DSP 也好 仿 ARM 也好 用这套方案去访问 PRU 那么么针对这个 Linux 操作系统的话呢 我们也是有这个完整一个的支持 就是你开发完 PRU 的东西之后呢 你可以把 PRU 的代码做成一个封面 然后通过 Linux 下到这个 PRU 里面 然后呢跑起来之后呢 就是整个作为一个 Linux 的一个驱动 来去操作整个的 PRU 去实现这个功能 比如说你用 PRU 扩充出来两个高速串口 你可以把它整合到 Linux 里面 通过 Linux 驱动访问的方式 在操作系统上面 我们客户的话呢 你像之前那几个应用 应该是都整合到 Linux 里边了 Linux 要做的事情呢 就是包括下载固件 包括管理它的一些资源 包括一些控制 就是实际上就是说 跟 Linux 控制其它外设是比较类似的 像 I/O 控制这些功能 你可以把它们映射进去 实际上它是用这个 Linux 上面 带的这个 remoteproc 这么个架构去实现的 这个是整个 Linux 这么一个改进的一个架构 这个应该是我们在这个 remoteproc 的话 应该是最新的我看4点几的那个 是专门有这么个架构 应该就是支持这种多核访问的这么个架构 上边我们这边是做了一个叫 PRUSS 上面加了一层 midware 或叫 client driver 就是再加了一层 然后呢应用层的话呢实际上呢 对应用层来讲 驱动层实现了 应用层来讲呢就是下面一个 pru-rpmsg 的接口 你可以直接进行打开啊关闭啊读写这种 I/O 控制去灵活的进行控制 我们都是网上有一些例子 后边会讲 就是我们会有一些资源 你在我们 wiki 上面去输入这个 PRU 这么一个总体的目录 你会看到下边有很多的资源 包括软件 包括提供的一些评估板 包括一些训练都是有 就是说你如果想进行 PRU 开发的话 上面有完整的资源去支持你去开发 像我们最早的可能它的资源是很少的 因为也不支持 C 因为也不支持 C 现在我们开发起来相对比较方便 这是一些 Useful Link 像这个硬件来讲的话呢 现在用的比较多的就是 beaglebone 也比较便宜 我们上边可以提供一个扩展的一个 board 专门是给 PRU 扩展 上边能扩展出来很多东西 可以从我们 TI 官网上去购买 另外整个这个这些工具 这些驱动 我们最新的 SDK 里面都有
课程介绍 共计1课时,31分58秒

深入Sitara:PRU介绍_2016 TI 嵌入式产品研讨会实录

Sitara PRU 嵌入式 研讨会

本课程为2016 TI嵌入式产品线下研讨会实录,更加深入地讲解了Sitara PRU。

推荐帖子

ccs8.3.1导入ccs3.3工程 28335
导入后编译不通过,出现错误,错误显示找不到Flash28335_API_V210.lib库文件 右击工程名选择Properties---->C2000 Linker---->File Search Path   选择+图标---->Browse...---->选择工程中.lib库文件路径---->OK ...
fish001 微控制器 MCU
基于Hercules 的工业“安全”控制系统 PCB打样
基于Hercules 的工业“安全”控制系统 PCB打样 板子终于回来了! 可惜PCB上有个图标怎么没做出来! 第一次TAOBAO打样 ...
蓝雨夜 微控制器 MCU
LM3S811DDLLXXRR笔记之三:时钟及PLL
基础时钟源器件有2个时钟源可供使用:■ 内部振荡器(IOSC):内部振荡器是片内时钟源。 它不需要使用任何外部元件。 内部振荡器的频率是12 MHz ± 30%。 不依赖精确时钟源的应用可以使用这个时钟源来降低系统成本。■ 主振荡器:主振荡器用下面的其中一种方法来提供一个频率精确的时钟源:OSC0输入管脚连接一个外部单端时钟源或在OSC0输入和OSC1输出管脚之间连接一个外部晶体。 允许的晶体值取...
ddllxxrr 微控制器 MCU
5529这样设置怎么不可以
{         P2DIR |= BIT2;         P2REN |= BIT2;         P2OUT |= BIT2;         P2IES &= ~BIT2;      ...
slyagw 微控制器 MCU

大明58

深入Sitara:PRU介绍_2016 TI 嵌入式产品研讨会实录

2020年03月31日 10:42:26

shakencity

学习下深入Sitara:PRU介绍_2016 TI 嵌入式产品研讨会实录

2020年01月21日 08:46:08

zx1988ZX

好好学习,天天向上!

2019年09月28日 07:15:34

hellokt43

好好学习天天向上。。。

2019年03月11日 09:35:07

wudianjun2001

学习

2019年01月05日 12:44:00

nick_liu1129

学习

2018年12月18日 07:55:32

采样电阻

签到

2018年12月15日 08:59:54

Laspide

学习

2018年09月21日 19:54:53

song430

啥都有,厉害

2018年09月08日 09:16:24

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

EEWorld订阅号

EEWorld服务号

汽车开发圈

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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