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

omapl137共享内存读写问题

大家好,我用omapl137进行系统设计,程序设计思路如下:

1. ARM 用于与PC机进行通信,接收数据并写入共享内存1区;

2. DSP从1区中读取数据处理后写入共享内存2区;

3. ARM从2区读取数据发回PC机。

问题:

         系统在前几十步ARM与DSP交替读写共享内存正常,后面便跑飞了,DSP好像停止了工作,只有ARM在读取数据,但返回来的却是正常运行时的最后一个数据。

请问这是什么原因?

kooking:

这两个buf的处理是每次后面的数据覆盖前面的数据吗,还有就是写好要发中断通知另一端收,收到后也要发信号到对方,还有每次读的长度什么的

dongdong ma:

回复 kooking:

    您好,感谢您抽出时间回答我的问题。

    1. 两个buf中的数据都是后面新来的数据覆盖前面的旧数据;

     2. 每次读写的数据都是一个结构体,包含4个成员,共24个字节;

     3. 当ARM写数据到buf1中完成后,就设置标志位tag1=1,然后等待标志位tag2=1;  此前DSP一直在等待tag1变为1,当tag1变为1后就读取buf1中数据,处 理完成后写入buf2中,并令tag2=1,tag1=0; ARM读到tag2=1后又开始从PC机(上位机)读取数据写入buf1,然后置tag2=1,通知DSP处理,依次循环;

     4. ARM与DSP是通过设置标志位tag1 和 tag2 为1来实现互相通知对方的,没有使用中断。

     问题是前几十步系统运行正常,后面DSP就不处理数据了,返回的数据都一样。

     请问这样的问题该如何解决?

 

dongdong ma:

回复 kooking:

    您好,感谢您抽出时间回答我的问题。

    1. 两个buf中的内容都是后面新来的数据覆盖前面的数据;

    2. 每次读写的数据都是一个结构体,有4个成员,共24字节;

    3. 当ARM收到PC端(上位机)的数据后,就将数据写入buf1中,并置标志位tag1=1,然后等待标志位tag2 = 1;此前DSP一直在等待tag1 = 1,当DSP读到tag1=1时,就从buf1中读取数据进行处理,并将处理后的数据写入buf2中,并置tag2=1,tag1=0; 然后ARM等到tag2=1后就又开始从PC机端读取数据,依次循环;

    4. ARM与DSP是通过分别设置tag1和tag2标志位来通知对方的,没有使用中断;

    问题是系统前几十步运行正常,后面ARM返回来的数据都一样,好像ARM没有将数据写入buf1中;ARM读数据的代码如下:

    tag2 = sharedram_read(offset);                  // sharedram_read()是读数据的函数

    while(tag2 != 1)   tag2 = sharedram_read(offset); 

    请问这样的问题该如何解决?

赞(0)
未经允许不得转载:TI中文支持网 » omapl137共享内存读写问题
分享到: 更多 (0)