什么是PRU-ICSS及相关知识学习_技术文章_行业资讯_武汉华和机电技术有限公司
设为首页 | 加入收藏 | 联系我们
  • 解决方案
  • 杆塔betway体育
  • 机械安控
  • 扬尘betway体育
  • 边坡betway体育
  • 大坝betway体育
  • 高支模betway体育
  • 基坑betway体育
  • 建筑betway体育
  • 桥梁betway体育
  • 隧道betway体育
  • 成功案例
  • 服务中心
  • 个性服务
  • 技术支持
  • 资源下载
  • 关于华和
  • 华和介绍
  • 华和历程
  • 联系华和
  • 人才招聘
  • 行业资讯
    information center
    技术文章
    当前位置:首页 > 行业资讯 > 技术文章
    什么是PRU-ICSS及相关知识学习
    作者:华和技术 点击量: 发布时间:2015-12-21

    Beaglebone Black所使用的TI芯片(XAM3359AZCZ revision 2)包含了一个主处理器和许多其他的模块,如下图:

    尽管ARM Cortex-A8内核的性能十分强大,但是Linux的本质决定了对于高速外部硬件的控制可能会不太容易实现。而TI的这款芯片添加了两个额外的CPU(称为PRU-ICSS或PRUSSv2,即可编程实时单元和工业用通信子系统,以后简称PRU),从而使这个问题得到了改善。这意味着这两个CPU可以分别运行不同的软件,以便减轻底层协议在硬件接口和处理上的工作量。
      这款芯片就好像具有Arduino类似功能的处理器,只不过其额外的两个CPU工作频率要高出许多,达到200MHz,也就是说在许多情况下可以不再需要外部逻辑器件、CPLD或者FPGA。
      通常来说,针对一个以上的处理器进行编程是一件麻烦事,而且处理器之前还需要有通信协议。而TI的这款芯片则极大的简化了这种麻烦,原因有两点,一是用于PRU的代码可以从主处理器下载,二是为了方便处理器之间通信,芯片集成了共享存储器。
    PRU的作用体现在哪儿?
      对于低速通信来说,传统的I2C或者常用的协议就已经足够应付了,因此PRU在这些地方并没有用武之地。而对于高速通信PRU可能会非常受欢迎,这是因为PRU能够消除由于Linux环境切换所造成的中断,从而连续对硬件提供服务,也不会对ARM主处理器造成负担。这里有一些常见的并且可行例子;
      • 连接到高速ADC(例如模拟信号捕捉)
      • CCD 或者CMOS摄像机
      • LED或者LCD显示器
      • 生成模拟视频信号(视频编码器)
      • 自定义PWM或者其他自定义协议或非标准协议
      • 带反馈的电机控制
      据我所知,PRU甚至能够用某个外部时钟来作为并行数据的时钟。

      如何使用PRU?

      当前来说使用PRU即不简单也不算困难。主要的难度在于在网上找到完整的实例。这里提供的内容就是从网上收集而来的。
     主要步骤如下:
      1. 在BB-Black上使能PRU系统
      2. 将PRU汇编程序安装到BBB上(当前用于PRU的代码是都是用汇编写的,还没有人开发出这对PRU的C编译器)
      3. 编写代码。PRU应用程序分为两部分,而且相互之间能够通过存储器寻址来进行通信,即
      (a) 汇编代码,编译为.bin机器指令文件,以便在PRU上运行
      (b) C语言代码,运行于主处理器上,也就是Linux系统上。这些代码负责将汇编代码下载到RPU
      4. 配置Linux设置树,启用所有引脚用于输入输出
      5. 运行程序
      PRU使用什么样的汇编代码?
      还好寄存器数量很给力(都是32位),而且指令都是正交的,另外用于操作的位和字节参考都相当令人满意,所以相对而言,比起某些常见的汇编语言,例如针对PIC或其他8位处理器的汇编来说,PRU使用的汇编代码算是比较容易上手的了。汇编命令数量并不多,目前为止我只使用了大约45条命令中的一小部分,结果还不错。(通常本人不愿意为了某个不太好用的处理器花太多时间学习汇编 – 但RPU完全不同,其指令集貌似很好用的样子)

    PRU是否物有所值?


      我觉得答案是肯定的,应为有了PRU就能够在高速状态下控制硬件(比如50MHz)。每条指令在PRU上只需要5纳秒的执行时间(200MHz频率,每条指令占用一个周期),并且不存在由于Linux内核造成的不规则延迟。
      难点在哪儿?
    难点主要在于和设备树相关的东西。希望在未来能够有所变化或者变得更简单。在一个典型的微控制器上,输入输出的设定是用特定的寄存器完成的,这些寄存器存在于某个设备的某一部分存储映射中。据我所知,当前运行在BB-Black上的软件不允许用户通过传统的C代码对这些硬件寄存器进行直接的修改操作。当前采用的方法叫做“设备树”。它是一个文本文件,并且被压缩成为二进制文件,在系统启动时需要对其进行读操作。该文件高速系统哪些是用于输入输出的引脚。设备树的修改也适用于使能RPU系统。
      有人曾经通过设备树关闭了BB-Black上默认闪烁的LED灯。设备树文件位于BB-Black的/boot目录下,是一个二进制文件,其内容自然无法看懂(如下图),通常文件名为.dtb或者.dtbo。

     

    PRU IDH相关知识学习:

    http://home.eeworld.com.cn/my/space-uid-367319-blogid-95026.html  Sitara AM335x新手私房菜系列之可编程实时单元 (PRU)
    AM335x处理器系列 软文!一枚!  

    http://www.cnii.com.cn/technology/2014-07/03/content_1393229.htm  TI全新处理器系列带来更高的性能和实时处理能力
     AM437x处理器系列 软文!一枚  2页!  


    http://wenku.baidu.com/view/2ded112f3169a4517723a3b3.html
    IDH 名词解释!软文!一枚  有助于对自身定位的认识!

    http://www.chinaaet.com/article/80582  遗漏产品学习!  
    德州仪器推出具有业界最高性能单内核 ARM® Cortex-A8 与极高集成度的最新 AM389x Sitara ARM 处理器

    Sitara  有强大的HMI,HMI设备包括硬件与软件。这里的软件也就是组态软件,硬件我更关心的是他的串口和以太网接口。在有些的情况下可能要使用的串口会非常的多,可能会达到七八个之多,这是就很少有CPU可以达到这个程度,这时如果你使用别的一些CPU通过串口扩展芯来做,这是就有一个问题:多串口的扩展芯片非常的贵,有时甚至超过了CPU本身,如果是用电脑通过插多串口卡来做,串口卡的价格也是一个永远的痛,前段时间论坛好像就有人问什么片子有10个串口!       
          而TI Sitara 的AM335x、AM437x系列有一种可以根据用户需要而自行构造的逻辑功能的数字集成电路引脚("CPLD"),可以根据你的需要灵活的配制出任意你想要的功能。可以通过它配置出一个串口或者是CAN总线;通过AM335x、AM437x的PRU模块,可以将它管理到的而你别的常规没直接用到的引脚配置成任意你想要的功能。比如说串口或是CAN总线。所不同的是CPLD时,你用的是VHDL,而PRU时你用的是TI提供的PRU汇编(TI提供了丰富的例程)。因此我们可以看着PRU就是AM335x、AM437x的片上 “CPLD”。对于只使用串口的HMI产品而言,你可以将网络接口等对应的引脚全部配置成串口。这样你只需要一颗CPU的钱,就买到了一颗CPU外加四路以上的串口扩展而对于使用网络接口的高端HMI产品,TI Sitara AM389x是你的最佳选择。强大的显示子系统PowerVR 3D 2000MPoly/Sec, 足以应付HMI所需的各种复杂图形处理要求。
         拥有了PRU就实现了设备电路的灵活性,也极大的简化了电路,降低了成本。

    关于我们


    华和技术(WONHERE)顺应市场发展趋势,作为智能硬件一站式解决方案提供者,基于低功耗嵌入式平台专注采集、控制、通讯一站式解决智能硬件研发,坚持以持续)创新为客户不断创造独有价值。成功案例遍布检测betway体育仪器、环境工程与自然、工业控制与自动化、智能交通能源、北斗位置服务、国防及医疗电子等领域。致力于通过方案开发帮助客户:缩短开发周期,降低开发成本,提高投资效率。致力于通过技术服务、项目管理和集成化的采购、生产帮助客户提高供货质量和降低企业运营成本。


    华和技术(WONHERE)有十余年的嵌入式项目研发及管理经验,团队致力于平台级产品的研发和检测、betway体育、控制类系统方案的项目定制。华和技术是武汉大学研究生培养基地、湖北省仪器仪表学会理事单位,拥有嵌入式系统开发领域的多项知识产权。华和技术以打造中国低功耗嵌入式平台、物联网智能硬件开发及技术支持中心为使命。我们的产品有:ARM335x嵌入式板卡、ARM3530嵌入式板卡、ARM3730嵌入式板卡,X86嵌入式平台、Power PC嵌入式平台,以及仪器仪表、环境工程、智能装备、智能交通、行业嵌入式系统方案。产品咨询请与华和技术(WONHERE)联系。