Revision History

Draft Date

Revision No.

Description

2016/05/25

V1.1

1.模板更新。

2015/04/28

V1.0

1.初始版本。


1 环境搭建

1.1安装pru-sdk包

PRU的SDK源码ti-pru-sw-1.00.00-r0+svnr33.tar.bz2位于光盘资料tools目录下,将此文件解压到虚拟机任意路径下,解压后如下图所示:

图 1

1.2 编译pru-sdk包

执行以下命令进行编译:

Host# make CROSS_COMPILE=arm-none-linux-gnueabi- LINUXKERNEL_INSTALL_DIR=/home/tl/omapl138/linux-3.3

编译成功如下图所示:

图 2

参数解析:

CROSS_COMPILE交叉编译工具链;

LINUXKERNEL_INSTALL_DIR:内核安装路径;

请务必使用创龙提供的linux-3.3内核源码进行编译,编译前确保内核源码已正确编译过。

1.3 安装pru-sdk包到文件系统中

执行以下命令进行编译:

Host# sudo make  DESTDIR=/home/tl/omapl138/rootfs install

安装完如下图所示:

图 3

参数解析:

DESTDIR:文件系统位置;

2  LED开发例程

本例程主要通过PRU控制开发板LED灯的闪烁。

2.1源码安装

源码路径位于光盘资料"demo/app/tl-pru-example/tl-pru-leds.tar.bz2",将源码解压到虚拟机任意路径下,如下图所示:

图 4

2.2 修改配置文件

修改Rules.make配置文件:

CCTOOLS?=arm-none-linux-gnueabi-gcc   //交叉编译工具链

# where the ti_pru_sw path

PRU_SW_DIR=/home/tl/pru/pru-sdk/ti-pru-sw-1.00.00-r0+svnr33   //PRU_SDK安装目录

LIBDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/lib

INCDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/include

UTILS_DIR=$(PRU_SW_DIR)/utils

如下图所示:

图 5

2.3 编译

执行以下命令进行编译:

Host# make

图 6

编译生成的可执行文件位于bin目录下,如下图所示:

图 7

2.4 运行程序

将bin目录中的tl-pru-leds和tl-pru-leds.bin目标文件拷贝到开发板上,并放于同一目录下。在此目录下执行以下命令:

Target# ./tl-pru-leds

如下图所示:

图 8

演示现象:

开发板LED会同时闪烁十次。

3 按键开发例程

本例程演示PRU通过按键对LED灯进行控制。

开发板LED编号和GPIO对应关系如下:

表 1

开发板型号

GPIO0[0]

GPIO0[5]

GPIO0[1]

GPIO0[2]

TL138/1808-EVM

D7

D6

D9

D10

TL138/1808-EasyEVM

D7

D6

D9

D10

TL138/1808-EthEVM

D7

D6

D9

D10

TL138/1808F-EasyEVM

\

GD1

GD2

GD3

TL138/1808F-EVM

\

D1

D2

D3


3.1 源码安装

源码路径位于光盘资料"demo/app/tl-pru-example/tl-pru-keys.tar.bz2",将源码解压到虚拟机任意路径下,如下图所示:

图 9

3.2 修改配置文件

修改Rules.make配置文件:

CCTOOLS?=arm-none-linux-gnueabi-gcc   //交叉编译工具链

# where the ti_pru_sw path

PRU_SW_DIR=/home/tl/pru/pru-sdk/ti-pru-sw-1.00.00-r0+svnr33   //PRU_SDK安装目录

LIBDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/lib

INCDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/include

UTILS_DIR=$(PRU_SW_DIR)/utils

如下图所示:

图 10

3.3编译

执行以下命令进行编译:

Host# make

图 11

编译生成的可执行文件位于当前bin目录下,如下图所示:

图 12

3.4 运行程序

将bin目录中的tl-pru-keys和tl-pru-keys.bin目标文件拷贝到开发板上,并放于同一目录下。在此目录下执行以下命令:

Target# ./tl-pru-keys

如下图所示:

图 13

演示现象:

以TL138-EVM为例,开发板LED D6被点亮,按下按键SW5时LED D9会被点亮,按下按键SW6时,LED D10会被点亮,大约历时10s,测试程序执行完毕,LED D6熄灭,程序退出。

4 程序代码分析

以LED例程为例:

Linux端代码分析

程序设计流程如下:

  • 初始化pru模块
  • 打开pru中断
  • 下载程序到pru中
  • 等待程序执行完毕,pru会发送一个中断给arm
  • 关闭pru并退出

Linux端代码主要位于tl-pru-leds.c文件内,代码如下图所示:

图 14

PRU端代码分析

PRU端代码主要位于tl-pru-leds.p文件内,主要以汇编为主。主函数程序工作流程如下:

  • Pinmux配置
  • Gpio Direct配置
  • Gpio Data输出1,LED ON
  • 延时
  • Gpio Data输出0,LED OFF

/*程序入口地址,汇编程序需要注明入口地址*/

.origin 0            //表示PRU从程序的0开始的位置开始取指

.entrypoint START //告诉编译器,程序入口地址是从label:START开始

/*宏定义*/

#define LOOP_TIMES 10 // define the LED flash times

// Refer to this mapping in the file - \prussdrv\include\pruss_intc_mapping.h

#define PRU0_ARM_INTERRUPT 34

#define GPIO_BASE 0x01E26000 // the base address of GPIO registers

#define GPIO01_DIRECT 0x10 // the offset address of DIR01 register

#define GPIO0_SETDATAOUT 0x18 // the offset address of SET_DATA01  registers

#define GPIO0_CLEARDATAOUT 0x1C // the offset address of CLR_DATA01 registers

#define SYSCFG_BASE 0x01c14000

#define PINMUX1_OFFSET 0x124

// PINMUX_GPIO0_0  PINMUX_GPIO0_1  PINMUX_GPIO0_2  PINMUX_GPIO0_5

#define PINMUX1_GPIO_LED_MASS (0xf << 28 | 0xf << 24 | 0xf << 20 | 0xf << 8)

#define PINMUX1_GPIO_LED (0x8 << 28 | 0x8 << 24 | 0x8 << 20 | 0x8 << 8)

/*START标号开始了PRU程序,类似C程序从main函数开始*/

START:

// setup pinmux gpio led

MOV r3, SYSCFG_BASE + PINMUX1_OFFSET

LBBO r2, r3, 0, 4

MOV r4, PINMUX1_GPIO_LED_MASS

NOT r4, r4

AND r2, r2, r4

MOV r4, PINMUX1_GPIO_LED

OR r2, r2, r4

SBBO r2, r3, 0, 4

/*函数的定义*/

// Delay 200ms funcation

DELAY_400MS:

MOV r0, 45600000 // delay: 400ms

LOOP_DELAY: // PRU CORE CLK: 228MHz, cycle:8.77ns

SUB r0, r0, 1 // 1 CPI

QBNE LOOP_DELAY, r0, 0 // 1 CPI

RET

/*函数的调用*/

CALL DELAY_400MS // Call to delay some time

/*发送中断信号给ARM*/

// Send notification to Host for program completion

MOV r31.b0, #PRU0_ARM_INTERRUPT

/*关闭PRU*/

// Halt the processor

HALT

附录1

图15

创龙OMAPL138 PRU开发例程相关推荐

  1. OMAPL138 PRU开发例程

    Revision History Draft Date Revision No. Description 2016/05/25 V1.1 1.模板更新. 2015/04/28 V1.0 1.初始版本. ...

  2. 广州创龙TMS320C6748 DSP开发板免费申请试用

    2019独角兽企业重金招聘Python工程师标准>>> 1.广州创龙TMS320C6748 DSP开发板免费申请试用,历史上例程最丰富的C6000 DSP开发板,不容错过. 申请链接 ...

  3. 广州创龙TMS320C6748 DSP 开发板免费申请试用

    2019独角兽企业重金招聘Python工程师标准>>> 1.广州创龙TMS320C6748 DSP开发板免费申请试用,历史上例程最丰富的C6000 DSP开发板,不容错过. 申请链接 ...

  4. vivado2018.3创建一个流水灯(基于创龙k7核心开发板)

    vivado新建工程&流水灯 导言 之前一直用Quartus学习FPGA,第一次接触Xilinx开发工具vivado,看了一些新建工程教程之后,记录一下自己新建工程的过程,作为备忘,也作为初学 ...

  5. DSP 创龙omapl138 起始管脚对应值

    /****************************************************************************/ /* */ /* GPIO 管脚初始化 * ...

  6. 创龙OMAPL138 Linux系统修改静态IP地址

    1. 设置命令 ifconfig eth0 192.168.11.22 netmask 255.255.255.0 仅一次有效,断电后无效 2.在启动文件配置中修改,好处是每次启动就有效 vi /et ...

  7. 【学习分享】0、创龙 TMS320C6748开发例程使用手册

    如果需要从头开始进行本使用手册的阅读,欢迎阅读本博其他文章(见置顶或文章结尾) 由广州创龙自主研发的SOM-TL6748核心板是基于TI TMS320C6748定点/浮点DSP核心板,55mm*33m ...

  8. 【学习分享】2、创龙 TMS320C6748开发板程序加载和烧写(一)

    此部分由于篇幅过长,将分为五个小点进行叙述,此处主讲基于仿真器的程序加载和烧写,所用器件为创龙TMS320C6748开发板.需要注意的点已在备注中进行说明. 如果需要从头开始进行本使用手册的阅读,欢迎 ...

  9. 【学习分享】2、创龙 TMS320C6748开发板程序加载和烧写(四)

    此部分由于篇幅过长,将分为五个小点进行叙述,此处主讲基于SD卡烧写程序到NAND FLASH,所用器件为创龙TMS320C6748开发板.需要注意的点已在备注中进行说明. 如果需要从头开始进行本使用手 ...

最新文章

  1. 《JAVA编程思想》学习笔记——第三章 操作符
  2. KEIL、uVision 和 MDK 区别和联系
  3. ClearTextBox.Text
  4. C语言,谁都能看得懂的归并排序
  5. python设置单元格宽度_Python xlwt-访问现有单元格内容,自动调整列宽
  6. IP计算机取证,计算机取证1资料.doc
  7. linux多线程学习(四)——互斥锁线程控制
  8. 如何在centos7上安装redis
  9. 10. 王道考研-树与二叉树
  10. PHP WebShell 免杀
  11. AHP(层次分析法)学习笔记及多层权重Python实践
  12. 关于word的标题处小黑点的去除
  13. 跳马问题C++递归调用
  14. 2017年下半年阅读书单
  15. 关于计算机未来理想,关于未来与梦想的作文
  16. 电脑老是弹出脱机连接_电脑经常弹出脱机工作窗口,怎么解决?
  17. AssertionError: Torch not compiled with CUDA enabled到底是什么原因
  18. Java Enum 浅析
  19. nginx反向代理二级目录 导致vue项目静态文件css js访问不到
  20. 第七周——复数模板类

热门文章

  1. Catia 端面凸轮设计
  2. Hadoop读书笔记(三)Java API操作HDFS
  3. 小米10至尊纪念版对比华为P40 Pro 哪个更值得入手
  4. 卢松松:关于腾讯微博关闭的一些运营感想!
  5. 人像精细分割问题分析
  6. 2021全球与中国显微镜载玻片市场现状及未来发展趋势
  7. springboot影视评论小程序毕业设计毕设作品开题报告开题答辩PPT
  8. html中form表单提交和阻止表单提交的细节
  9. 2020身高体重标准表儿童_2020最新儿童身高体重标准表,从0岁到6岁
  10. 数论四大定理(争取用最少的篇幅给你们讲解清楚)