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

beaglbone的am3359和pru之间怎么交换数据?

beaglbone的am3359和pru之间怎么交换数据?直接对共享内存写数据是只能存成正整数?有没有相关的例子

Steven Liu1:

PRU拥有对全局访问的权限,也就是说,PRU是可以直接访问到DDR上的内容的,所以考虑ARM侧和PRU的数据共享问题,只要知道数据在哪个区域,就可以让PRU取到了。PS: PRU也是可以访问到外设接口的寄存器。

yu chen16:

回复 Steven Liu1:

那对格式有没有什么要求呢,比如说,pru对0X00000000地址写入一个float型的数据,am3359这边读出的是一个正整数,这是怎么情况

Steven Liu1:

回复 yu chen16:

格式上的要求,取决于当前编译器上支持的类型,就是说PRU侧写到DDR上写了一个float型,ARM侧读一个float才能读到正确的数据。如果PRU不支持FLOAT,你就要看他是按照什么格式写入的数据了。

不过看你的描述,往全0地址写数据,你是用PRU往自己的data ram中写数据吧,然后用ARM读出来,是指ARM侧读PRU内部的DRAM?

yu chen16:

回复 Steven Liu1:

对,是这种情况,

在pru上往一个地址里写一个float型,

   pru0DataMemory_int=0x00000000;   float AAngle=234.23;  *(pru0DataMemory_int+12)=AAngle;

在ARM这边读取

float AAngle3;AAngle3=*(pru0DataMemory_int+12);printf(" AAngle3  %f.\n", AAngle3);

结果是234.000000,没有小数部分

Steven Liu1:

回复 yu chen16:

PRU用的C编译器?哪个版本的编译器?能否提供一下版本号?看下是不是编译的时候就把float处理成int了

yu chen16:

回复 Steven Liu1:

pru的C编译器clpru 2.1.4,hexpru 2.0.0B2

ARM的gcc  4.6.3

在ARM程序中使用的是PRU Linux Application Loader那一组函数,对PRU的地址写一个float型,再读出来,也是一个正整数

赞(0)
未经允许不得转载:TI中文支持网 » beaglbone的am3359和pru之间怎么交换数据?
分享到: 更多 (0)