完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PRU-ICSS(可编程实时单元子系统和工业通信子系统,简称PRU)由双32位RISC核(PRU可编程实时单元)、共享数据和指令存储器、内部外围模块和中断控制器(INTC)组成。PRU可以通过L3_MAIN interconnect上的主端口访问设备上的所有资源,反之,外部主机处理器可以通过L3_MAIN slave端口访问PRU资源。 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit CCS:CCS7.4.0 PRU编译器:ti-cgt-pru_2.3.3 PRU开发包:pru-icss-5.1.0 PRU详细说明可查阅产品资料“6-开发参考资料数据手册核心板元器件CPU”目录下《AM572x Sitara Processor Technical Reference Manual》手册的PRU章节。 创龙科技TL5728F-EVM是一款基于TI Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核评估板,由核心板与评估底板组成。AM5728与Artix-7在核心板内部通过GPMC、I2C通信总线连接,在评估底板通过PCIe通信总线连接。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 评估板接口资源丰富,引出双路千兆网口、双路SFP光口、USB 3.0、CAN、RS485、SATA、HDMI、GPMC、FMC等接口,方便用户快速进行产品方案评估与技术预研。 图 1 通常ARM Cortex-A15核心运行Linux系统,ARM核心通过pruss和pru rproc驱动程序,将固件加载至PRU,并提供启动、停止等基本控制。通过驱动程序RPMsg(remote processor message)实现通信,它允许PRU和ARM核心互相传递消息。 图 2 驱动程序详细使用说明可参考:https://software-dl.ti.com/proce ... .html#linux-drivers。 本文档涉及的案例位于产品资料“4-软件资料DemoPRU-demos”目录下。 表 1
案例功能:ARM与PRU之间使用RPMsg实现数据交互,ARM通过RPMsg传输数据至PRU,PRU根据数据内容控制评估底板LED3。 案例测试将本案例image目录下的tl572x-pru-overlay.dtbo、pru_rpmsg_led_flash.out文件拷贝至评估板文件系统"/lib/firmware/"目录下。 图 3 执行如下命令,通过加载动态设备树将LED对应的IO模式配置为PRU专属IO。 Target# mkdir /configfs //如configfs文件夹已存在,请跳过此命令 Target# mount -t configfs configfs /configfs Target# mkdir /configfs/device-tree/overlays/pru Target# echo -n "tl572x-pru-overlay.dtbo" > /configfs/device-tree/overlays/pru/path 图 4 执行如下命令,进入"/lib/firmware/"目录,建立新的PRU固件链接。 Target# cd /lib/firmware/ Target# ln -s pru_rpmsg_led_flash.out am57xx-pru1_0-fw 图 5 执行如下命令,将PRU固件pru_rpmsg_led_flash.out加载至pru1_0核。 Target# echo 'start' > /sys/class/remoteproc/remoteproc4/state 图 6 执行如下命令,通过"/dev/rpmsg_pru30"节点发送数据信息至PRU,实现控制评估底板LED的亮灭。 Target# echo on > /dev/rpmsg_pru30 //点亮LED Target# echo off > /dev/rpmsg_pru30 //熄灭LED 图 7 执行如下命令,可停止运行PRU固件。 Target# echo 'stop' > /sys/class/remoteproc/remoteproc4/state 图 8 案例编译动态设备树编译 将本案例image目录下的tl572x-pru-overlay.dts文件,拷贝至Ubuntu内核源码的"arch/arm/boot/dts/"目录下。 图 9 在内核源码所在目录下,执行如下命令编译动态设备树。 Host# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tl572x-pru-overlay.dtbo 图 10 图 11 将编译生成的动态设备树tl572x-pru-overlay.dtbo,拷贝至评估板文件系统"/lib/firmware/"目录下即可。 PRU案例编译打开CCS7.4.0,点击"Project -> Import CCS Projects…",导入CCS工程。 图 12 在弹出的界面中点击"Browse…",选择非中文路径下的案例project目录,然后点击Finish。 图 13 请将“4-软件资料DemoPRU-demospru-icss-5.1.0.zip”压缩包解至CCS7.4.0安装目录,右击工程后点击Properties选项,重新指定PRU案例的头文件和库文件路径。 备注:pru-icss-5.1.0.zip压缩包源自Processor-SDK安装包"ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05example-applicationspru-icss-5.1.0"文件夹。 图 14 进入工程属性设置界面后依次点击"Resource -> Linked Resources",选中"PRU_DEMO_DIR"后点击"Edit…"。 图 15 在弹出的界面中点击"Folder…",选择pru-icss-5.1.0所在路径,然后点击OK。 图 16 点击OK完成配置,右击工程选择"Build Project"或"Rebuild Project"即可进行工程编译。 图 17 关键代码 允许PRU访问OCP主端口,以便PRU可读取外部存储器;清除PRU系统事件状态。 图 18 初始化RPMsg,并创建ARM和PRU的RPMsg通道。 图 19 等待ARM通过RPMsg发送数据,并根据数据内容控制LED亮灭。通过PRU的__R30寄存器控制LED。 图 20 pru_rpmsg_pulse_motor案例 案例功能:PRU根据ARM传输的数据内容,控制电机驱动器的PUL和DIR管脚来调整电机的转速和转动方向。ARM通过监听按键事件,然后通过RPMsg传输频率数据至PRU,从而控制电机的转动速度。 程序流程框图如下: 图 21 案例测试 本案例使用锐特技术的42步进电机(型号为42CM04)和驱动器(型号为DM320C),按照下图将评估板与电机进行连接。 表 2 评估板J3接口与电机接口引脚对应关系
图 22 评估板J3接口原理图 图 23 将电机驱动器拨码开关(SW1~SW6)拨至010000,即电流设置为1.7A,细分设置为6400脉冲/转。 图 24 将案例"linux_demodtsimage"目录下的动态设备树文件和"pru_demoin"目录下的.out文件拷贝至评估板文件系统"/lib/firmware/"目录下。 图 25 执行如下命令,通过加载动态设备树将评估板J3接口的上的GPMC_A10和GPMC_A11对应的IO模式修改为GPIO模式。 Target# mkdir /configfs //如configfs文件夹已存在,请跳过此命令 Target# mount -t configfs configfs /configfs Target# mkdir /configfs/device-tree/overlays/pru Target# echo -n "tl572x-pru-overlay.dtbo" > /configfs/device-tree/overlays/pru/path 图 26 执行如下命令,进入"/lib/firmware/"目录,将原有的PRU固件链接删除,并建立新的PRU固件链接。 Target# cd /lib/firmware/ Target# rm am57xx-pru1_0-fw //如测试过其它案例,请执行此命令,否则请忽略 Target# ln -s pru_rpmsg_pulse_motor.out am57xx-pru1_0-fw 图 27 执行如下命令,将PRU固件pru_rpmsg_pulse_motor.out加载至pru1_0核。 Target# echo 'start' > /sys/class/remoteproc/remoteproc4/state 图 28 基于命令行控制电机 通过"/dev/rpmsg_pru30"节点向PRU发送字符,PRU根据数据内容控制电机驱动器的PUL和DIR管脚来选择电机的转速和转动方向。电机默认脉冲频率为0Hz,细分设置为6400脉冲/转,即默认转速为0r/s。可通过RPMsg设置脉冲频率,如设置脉冲频率为32KHz,即转速 = 32KHz / 6400 = 5r/s。 设置电机顺时针正向转动 Target# echo FWD > /dev/rpmsg_pru30 //电机顺时针正向转动 Target# echo 32000 > /dev/rpmsg_pru30 //3200为脉冲频率 图 29 设置电机逆时针反向转动 Target# echo REV > /dev/rpmsg_pru30 //电机逆时针反向转动 Target# echo 'stop' > /sys/class/remoteproc/remoteproc4/state //停止运行PRU固件,电机停止 图 30 基于应用程序控制电机 将案例"linux_demoin"目录下的pru_rpmsg_pulse_motor可执行文件拷贝至评估板文件系统,评估板上电启动,加载动态设备树和PRU固件。 图 31 执行如下命令,运行pru_rpmsg_pulse_motor测试程序。 Target# ./pru_rpmsg_pulse_motor -d /dev/rpmsg_pru30 图 32 程序启动后,按下评估板的USER0(KEY3)用户按键控制电机开始转动。 案例所使用电机支持6档调速,从电机运转开始,每按下一次按键,档位加1,电机转动速度变快;当转速达到6档后,每按下一次按键,档位减1,电机转动速度变慢。当减到0挡后,再加档,以此循环。 案例编译动态设备树编译将案例"linux_demodtssrc"目录下的tl572x-pru-overlay.dts文件拷贝至Ubuntu内核源码的"arch/arm/boot/dts/"目录下。 图 33 在内核源码所在目录下,执行如下命令编译动态设备树。 Host# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tl572x-pru-overlay.dtbo 图 34 图 35 将编译生成的动态设备树tl572x-pru-overlay.dtbo,拷贝至评估板文件系统"/lib/firmware/"目录下即可。 linux_demo编译将本案例linux_demo目录下的源码src拷贝至Ubuntu工作目录下,执行如下命令进行编译。 Host# source /home/tronlong/ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05/linux-devkit/environment-setup Host# make 图 36 PRU案例编译 打开CCS7.4.0,点击"Project -> Import CCS Projects…",导入CCS工程。 图 37 在弹出的界面中点击Browse,选择非中文路径下的案例project目录,然后点击Finish。 图 38 进入工程属性设置界面后依次点击"Resource -> Linked Resources",选中PRU_DEMO_DIR后点击"Edit…"。 图 39 在弹出的界面中点击"Folder…",选择pru-icss-5.1.0所在路径,然后点击OK。 图 40 点击OK完成配置,右击工程选择"Build Project"或"Rebuild Project"即可进行工程编译。 图 41 关键代码PRU案例代码 允许PRU访问OCP主端口,以便PRU可读取外部存储器;清除PRU系统事件状态。 图 42 初始化RPMsg,并创建ARM和PRU的RPMsg通道。 图 43 PUL管脚输入所设置的脉冲频率的脉冲。 图 44 等待ARM通过RPMsg发送数据,PRU根据数据内容控制电机驱动器的PUL和DIR管脚来调整电机的转速和转动方向。 图 45 Linux案例代码 打开key和rpmsg_pru设备节点。 图 46 监听按键事件。 图 47 控制电机转动速度。 图 48 |
||
相关推荐
|
||
飞凌嵌入式-ELFBOARD 硬件知识分享-ELF 2电源电路讲解
361 浏览 0 评论
1378 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
1312 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
743 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
1139 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 02:52 , Processed in 1.107294 second(s), Total 65, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号