TI AM335x 可编程实时模块(PRUSS)详解

1. PRU内核理解

可编程实时单元(Programmable Real-time Unit SubSystem,PRUSS),是Cotex A8内核中的一个子系统,它可运行在1/2CPU时钟频率下,具有本地的指令和数据RAM,并可寻址访问整个片上系统资源。

PRU模块的认识:

2. 地址映射

地址映射与PRU模块的寻址方式密切相关,这里所说的寻址有两个含义,一是PRU对其系统内部的寻址,二是PRU对其外部整个片上系统的寻址。因而对应的地址映射就分为局部地址映射和全局地址映射。

2.1 局部地址映射

PRUSS模块存储器分为指令存储器和数据存储器,相应的局部地址映射也将两部分分开处理。
指令存储区映射:
每个PRU模块拥有8KB的指令存储区,在PRU运行指令之前,必须由主控制器对其进行初始化,当PRU运行之后,主控制器便失去对该区域的访问权。

数据存储区映射:
数据存储区映射允许PRU内核访问PRUSS内的可寻址空间以及该子系统外的地址空间。当其访问外部存储空间时,起始地址为0x0008_0000,默认的0x0000_0000-0x0007_FFFF对应的为内部存储区,当需要访问地址空间在0x0000_0000-0x0007_FFFF的外部空间时,需要借助寄存器操作。

从表中可以看出,PRU0的优先数据存储区为RAM0,PRU1的优先数据存储区为RAM1.

2.2 全局地址映射
表3给出了PRUSS内部空间和控制单元的全局地址映射。

全局地址映射是针对主处理器而言的,PRU同样也可通过全局地址映射访问内部空间。比较表3和表4可以发现,其资源地址完全相同,局部地址映射仅仅是在PRU0和PRU1数据存储区做了区分。但是通过全局地址映射访问内部空间时,速度会比通过局部映射访问的速度慢,这时因为通过全局地址映射访问时需要通过PRUSS外部总线最终再通过接口返回到PRUSS内部。

3. PRU系统结构

3.1 PRU系统结构框图

图1.PRU系统结构框图

重点讲述其中两个资源信息,特殊寄存器R30,R31和常量表,前者和PRU系统的状态和事件相关,后者与PRU系统寻址相联系。

3.2 特殊寄存器 R30,R31

PRU模块接口是由两个内部寄存器R30和R31构成。R31为PRU的通用输入端(GPI)中断控制器(INTC)提供接口。通过读取R31的值便可获得GPI引脚以及INTC的状态信息。写R31则可为PRU系统产生事件信息。R30为PRU模块的通用输出端(GPO)的状态接口。

3.2.1 状态接口映射(R31):中断事件输入

PRU模块的实时状态信息直接填入R31寄存器中,PRU根据这些信息决定程序如何执行。这些信息是由PRUSS内不同模块产生的。主机的中断被放置在R31的第31位和30位,进而提供给中断控制器。

3.2.2 事件接口映射(R31):PRU系统事件

PRU事件接口可以直接从ALU中产生事件信息并将其投递到PRUSS之外片上系统级的中断控制器中。事件接口也可以将PRU产生软件中断投递给主控制器。

在Pru_r31_vec_vavid(R31 bit5)中写“1”,并在Pru_r31_vec[3:0]写入数据就会产生一个通道号为1-16的中断。

3.3 常量表(Constant Table)

常量表是一个与PRU模块接口相关的结构,PRU模块通过该常量表为数据装载和储存提供基址(LBCO,SBCO指令)。通过将大量常用数据以及计算得到的基址数据从内部寄存器移到外部表中,从而更大限度的利用内部寄存器。PRU模块内常量表定义如下:

在PRU模块寻址过程中,常量表常用于为寻址提供基址,且可用于大量块数据的传输,用到的指令为LBCO和SBCO。

LBCO (Load Byte Burst with Constant Table Offset)
LBCO指令用于将一块数据从存储器装载到寄存器中,存储器的基址是由常量表提供的,偏移量是由寄存器或立即数提供的。
定义:LBCO REG1, Cn2, OP(255), IM(124)
说明:REG1代表操作数为寄存器,Cn2表示常量表入口,OP表示该操作数既可是寄存器,又可是立即数(不超过255),IM(124)表示不超过124的立即数。

例如:

LBCO  r2, c1, 5, 8   //从C1+5地址空间取出8个字节放入
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值