Dear Sir or Madam:
I am a software engineer.
I am just begin to use TI 's OMAP series products, and met some
difficulties which I can't figure out, so I hope that you can give me
some help, thanks a lot.
I have finished the program to draw ultrasonic wave data to a
Image(like B -ultrasonic scan used in the medical detection). To
improve the image refresh rate, I first calculate several tables to
memorize the information of every pixels in the image, so when refresh
the image I can search the table to determine every pixel in the image
how to be set.
My algorithm first execute in OMAP3530(beagleboard) GPP side,
the calculation of tables cost about 200ms, and refresh(fb0—screen
buffer) exceed 20fps. Now I want the above operation to be executed in
DSP side of OMAP3530, in this transplant I met some problems.
First, the tables' calculation cost more than 11s(about 50
times in GPP side). In this calculation, though a lot of div
operations are used and visit outer ram(CMEM allocated buffer for
tables and wave data) very often, I think it is impossible. Can you
give me a reason why the same code run in DSP side is much slower than
in run in GPP side?
Second, I use dsplink(1.65.00.03), the default “*.tci” file do
not map screen buff and CMEM allocated memory to DSP, so I use
PROC_control() to map outer ram to DSP mmu, first I map cmem
0x85f00000 with 1MB, and 0x807c0000 (screen buff) 1MB to dsp, then I
get error of exceed 31 entries. But when I map 0x85000000 16MB and
0x80000000 16MB to dsp succeed, can you explain it to me? The 1M and
16M both use 1 entry!
Third, in the dsplink-omap3530-base.tci file line
53: prog.module("GBL").C64PLUSMAR128to159 =
0x00000080 ; I change the value to “0x0000ffff” to enable cache
for my cmem allocated memory and screen buff. But it does nothing to
improve my calculation speed. Should it be like this?
The last problem is, when I refresh the screen buffer 100 times, an
error occur: [ 92.008880] DSP MMU Error Fault! MMU_IRQSTATUS =
[0x1]. Virtual DSP addr reference that generated the interrupt =
[0x80852980]. Actually, [0x80852980] is a address of screen
buffer, how can this error occur after I have map the 0x80000000 to
0x81000000 to dsp, and how can this error occur during the screen
refresh, not the first time visit this address?
Look forward to your reply.