TI中文支持网
TI专业的中文技术问题搜集分享网站

CLA 与 CPU 数据交换的问题

28035 有两个区域CLA Shared Message RAMs,

CLA to CPU Message RAM , CLA to CPU Message RAM

我想问的是当CLA写数据到 CLA_CPU_MSGRAM 时,还没有写完,此时CPU中断读这个值,会不会出问题?

反之CPU写数据到 CPU_CLA_MSGRAM 时,还没有写完,此时CLA中断读这个值,会不会出问题?

Hardy Hu:

Peter:

您好!您指的是一串数组写到一半还是一个字写了几个bit?

28035 有两个区域CLA Shared Message RAMs,

CLA to CPU Message RAM , CLA to CPU Message RAM

我想问的是当CLA写数据到 CLA_CPU_MSGRAM 时,还没有写完,此时CPU中断读这个值,会不会出问题?

反之CPU写数据到 CPU_CLA_MSGRAM 时,还没有写完,此时CLA中断读这个值,会不会出问题?

peter shi:

回复 Hardy Hu:

一个字写了几个bit

28035 有两个区域CLA Shared Message RAMs,

CLA to CPU Message RAM , CLA to CPU Message RAM

我想问的是当CLA写数据到 CLA_CPU_MSGRAM 时,还没有写完,此时CPU中断读这个值,会不会出问题?

反之CPU写数据到 CPU_CLA_MSGRAM 时,还没有写完,此时CLA中断读这个值,会不会出问题?

Eric Ma:

Peter,

         如果CPU和CLA同时访问一个shared RAM区域,是要遵循下面的仲裁机制的,即先后顺序,

CLA to CPU Message RAM: Priority of accesses are (highest priority first):

CLA write
CPU debug write
CPU data read, program read, CPU debug read
CLA data read

CPU to CLA Message RAM: Priority of accesses are (highest priority first):

CLA read
CPU data write, program write, CPU debug write
CPU data read, CPU debug read
CPU program read

所以如果CLA正在写这个RAM,CPU来访问,则这时候CPU需要等。所以不会出现问题。

Eric

 

28035 有两个区域CLA Shared Message RAMs,

CLA to CPU Message RAM , CLA to CPU Message RAM

我想问的是当CLA写数据到 CLA_CPU_MSGRAM 时,还没有写完,此时CPU中断读这个值,会不会出问题?

反之CPU写数据到 CPU_CLA_MSGRAM 时,还没有写完,此时CLA中断读这个值,会不会出问题?

user3900194:

回复 Eric Ma:

您好,Eric,

之前您给我解答了好多问题,尤其是CLA问题,我现在又有一个cla问题,就是通过cpu.C改变cla.asm的值,我现在遇到的问题是cla.asm内的变量值可以送到cpu.c,但是通过cpu.c无法改变cla.asm的值。

ti官网上运行28035的例程,运行cla.asm。C:\tidcs\c28\DSP2803x\v121\DSP2803x_examples\cla_adc_fir_flash

问题:我应用的28035的例程,第一步将10赋值给_VoltFilt是对的,这是_VoltFilt等于10,在向下运行时,我设置的A4是200.375,为何_VoltFilt的不更新呢,还一直是10?

请看:在Example_2803xClaAdcFir.c中定义:

#pragma DATA_SECTION(A,          "CpuToCla1MsgRAM");

float32 A [FILTER_LEN] = {62.5L, -100.25L, 200.375L, -300.25L, 10.0625L};

在cla.asm中:

_X4 .set _X+8_X3 .set _X+6_X2 .set _X+4_X1 .set _X+2_X0 .set _X+0

_A4 .set _A+8_A3 .set _A+6_A2 .set _A+4_A1 .set _A+2_A0 .set _A+0

MDEBUGSTOPMMOVF32 MR0,#10.6MF32TOUI16 MR2, MR0 ; Get back to Uint16 valueMMOV16 @_VoltFilt, MR2

MMOV32 MR0,@_X4 ;1 Load MR0 with X4MMOV32 MR1,@_A4 ;2 Load MR1 with A4MF32TOUI16 MR2, MR1 ;T Get back to Uint16 valueMMOV16 @_VoltFilt, MR2 ;TMNOP ;3 Wait till I8 to read result

赞(0)
未经允许不得转载:TI中文支持网 » CLA 与 CPU 数据交换的问题
分享到: 更多 (0)