This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
PRU拥有对全局访问的权限,也就是说,PRU是可以直接访问到DDR上的内容的,所以考虑ARM侧和PRU的数据共享问题,只要知道数据在哪个区域,就可以让PRU取到了。PS: PRU也是可以访问到外设接口的寄存器。
格式上的要求,取决于当前编译器上支持的类型,就是说PRU侧写到DDR上写了一个float型,ARM侧读一个float才能读到正确的数据。如果PRU不支持FLOAT,你就要看他是按照什么格式写入的数据了。
不过看你的描述,往全0地址写数据,你是用PRU往自己的data ram中写数据吧,然后用ARM读出来,是指ARM侧读PRU内部的DRAM?
对,是这种情况,
在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,没有小数部分
pru的C编译器clpru 2.1.4,hexpru 2.0.0B2
ARM的gcc 4.6.3
在ARM程序中使用的是PRU Linux Application Loader那一组函数,对PRU的地址写一个float型,再读出来,也是一个正整数