AM335x的PRUSSv2简介

PRUSSv2 = Programmable Real-time Unit Sub-System = PRU-ICSS= PRU Industrial Communication Sub-System =上一代PRUSS的v2进化版

这是一个AM335x等芯片上自带的,独立于ARM CPU运行的子系统。其时钟频率为200MHz,可以直接控制特定的IO口,可以达到非常高的实时性要求。一般两种情况需要用到它:一是linux系统的实时性不满足要求的时候;二是芯片的功能模块不够用的时候(比如你想要10个UART,但芯片上只有6个,那你可以用它再创造4个)。

几个可能的应用场合:

高速ADC
    摄像机接口
    显示屏接口
    音频处理
    电机反馈控制

从某种意义上说,有了它,我们就有了一个片上CPLD或FPGA,只不过PRU编程不是用VDHL语言,而是用专门的汇编语言。它的汇编语句都是在一个时钟周期内执行完的,没有流水线之类可能扰乱程序时序的因素,这使得程序的可预测性大大提高。

AM335x芯片上带有两个PRU。(不知道能不能同时工作?)

配置BBB,安装PRU assembler和示例程序

root@beaglebone:~/tmp# git clone git://github.com/beagleboard/am335x_pru_package.git
Cloning into 'am335x_pru_package'...
...
root@beaglebone:~/tmp# cd am335x_pru_package/pru_sw/app_loader/interface
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/app_loader/interface# make CROSS_COMPILE="" #无需交叉编译
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/app_loader/interface# cd ../../utils/pasm_source
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/utils/pasm_source# ./linuxbuild
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/utils/pasm_source# cd ../../example_apps

编辑一下example_apps目录中的Makefile,把 PASM?=../utils/pasm_2 改成 PASM?=../utils/pasm,然后继续

root@beaglebone:~/tmp/am335x_pru_package/pru_sw/example_apps# make CROSS_COMPILE=""

编译完成以后PRU assembler和示例程序就安装好了。但BBB默认是没有使能pruss的(BB white好像不用进行下面这一步),所以还需要修改一下系统dtb文件

cd /boot
cp am335x-boneblack.dtb am335x-boneblack.dtb_orig
dtc -I dtb -O dts am335x-boneblack.dtb > am335x-boneblack.dts

(插一句,我之前没有仔细看过dtc命令,原来还可以反编译dtb文件啊。。。)

vim am335x-boneblack.dts

找到

pruss@4a30000 {
    ...
    status = "disabled";
    ...
    };

把"disabled"改成"okay",保存。

dtc -I dts -O dtb am335x-boneblack.dts > am335x-boneblack.dtb_pru
cp am335x-boneblack.dtb_pru am335x-boneblack.dtb

然后重启。

最后,把程序运行需要的库文件拷贝到 /usr/lib 目录下,省得每次都得添加引用目录:

即把 pru_sw/app_loader/lib 目录中的4个文件拷贝到 /usr/lib 中。

至此,BBB也已经配置好了。

重启后我们用自带的example_apps测试一下

root@beaglebone:~#cd tmp/am335x_pru_package/pru_sw/example_apps/bin
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/example_apps/bin# modprobe uio_pruss #每次重启都要运行这句话
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/example_apps/bin# ./PRU_memAccessPRUDataRam
INFO: Starting PRU_memAccessPRUDataRam example.
AM33XX
        INFO: Initializing example.
        INFO: Executing example.
File ./PRU_memAccessPRUDataRam.bin open passed
        INFO: Waiting for HALT command.
        INFO: PRU completed transfer.
INFO: Example executed succesfully.

测试成功。

本文最开始的git文件建议在电脑上也clone一份,里面有几个关于PRU的pdf文档可能需要经常查看。

原文:https://blog.csdn.net/wyt2013/article/details/17396555

使用Beaglebone Black的PRU(一)相关推荐

  1. 使用Beaglebone Black的PRU(二)——Hello World!

    经过上一篇博客,已经安装好了am335x_pru_package,本文将用它来编写.编译一个最简单的PRU程序--闪烁BBB上的led灯. 大体来说每个PRU程序都包括两部分: 在ARM核的Linux ...

  2. 聊聊Beaglebone Black的cape和device tree overlay和dtc命令【转】

    本文转载自:https://blog.csdn.net/wyt2013/article/details/16846171 本文是我早期写的,语言略混乱.请直接看我最新整理的,适用于初学者的文章< ...

  3. BeagleBone 可编程实时单元(PRU)控制 GPIO 和 UART

    概述 BeagleBone(及其底层 TI Sitara SoC)最独特的功能是其 PRU,它们是与 ARM 内核完美集成的实时微控制器.您有两个选项可以对 PRU 进行编程: 基础用法 要将编译后的 ...

  4. AI 边缘计算平台 - BeagleBone AI 64 简介

    BeagleBone AI 64 简介 Beagleboard 组织 2022 年 6 月份发布了BeagleBone® AI-64平台的B1版本,由seeedstudio开发,是一款用于开发人工智能 ...

  5. BeagleBone Black使用(一):狗板简介

    前言 BeagleBone 与 Arduino 和 Raspberry Pi(树莓派)可以说是目前应用最广泛的三大嵌入式开源平台.而 BeagleBone 在一定程度上可视为融合了 Arduino 与 ...

  6. 2021-09-20 BeagleBone 系列 简介

    目录 BeagleBone 系列简介 1. BeagleBone Black 2. BeagleBone® Blue 3. SeeedStudio BeagleBone Green 4. SanClo ...

  7. 通过ROS控制真实机械臂(9)---上、下位机和PRU程序

    上位机的程序redwall_arm_server.cpp 功能是作为ROS的move_group客户端接收ROS规划的机械臂路点信息,进行三次样条插补获得各个关节或自由度的运动PVAT数据,然后通过T ...

  8. Beaglebone Black教程BeagleBone Black安装最新系统映像

    Beaglebone Black教程BeagleBone Black安装最新系统映像 BeagleBone Black安装最新系统映像 Beaglebone Black虽然已经预装了Debian操作系 ...

  9. Beaglebone Black教程项目1闪烁板载LED

    Beaglebone Black教程项目1闪烁板载LED 项目1闪烁板载LED 当设置完你的Beaglebone Black的时候,可能早就非常期待你的第一个项目了.下面就来满足大家的愿望,当然,这个 ...

最新文章

  1. html使用highcharts绘制饼图,html js highcharts绘制圆饼图表
  2. Lotgstash日志切割示例
  3. javaBean 转json指定key-value个数
  4. TCP/IP详解学习笔记(7)-广播和多播,IGMP协议
  5. [html] title与h1、b与strong、i与em的区别分别是什么?
  6. 三层神经网络实现手写数字的识别(基于tensorflow)
  7. 计算机有什么著名基金经理排名,百万年薪的基金经理,都是什么专业出身?!...
  8. 【缅怀妈妈系列诗歌】之十三:妈妈,我接您回家
  9. Code Review : Review Board + Svn
  10. XS9951 两通道多合一同轴高清解码芯片 国产
  11. spssfisher判别分析步骤_SPSS判别分析
  12. 徒手撸了一个 API 网关,理解更透彻了,代码已上传github,自取~
  13. 2021Java不死我不倒,吊打面试官系列!
  14. 九龙战登录只显示一个服务器,九龙战登录失败进不去解决办法
  15. 浅谈Android之SurfaceFlinger相关介绍(一)
  16. linux dumpe2fs命令
  17. VS2017无法调试Unity
  18. 使用FFMPEG工具包移除视频的水印
  19. 基于asp.net816mvc汽车维修保养年检管理系统三层架构
  20. shell高级编程笔记(第九章 变量重游)

热门文章

  1. day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记
  2. SD卡读卡程序 C语言 IO模拟,请问大神些,有谁用过SD模式读写SD卡?时序是用单片机IO模拟。...
  3. 阿里云 OSS 云存储 文件上传
  4. OMV安装CUPS共享惠普打印机为网络打印机
  5. iPhone软件开发之多线程初步
  6. Siamese network
  7. php如何判断ipv4_PHP校验IPV4和IPV6格式正确性
  8. 雷军:你尽管天天骂我,但在你最需要的时候还是我拿出了830万!
  9. 【机器学习】多项式回归的思想以及在sklearn中使用多项式回归(含示例+代码)
  10. CSS选择器及优先级 总结