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.

Crash after running cfft_dsp inside C6run lib example

Other Parts Discussed in Thread: OMAP3530

After rebuilt the example from the C6run lib at c6run_0_95_02_02/examples/c6runlib/emqbit, the ARM version is running without problems as following output.

root@omap3evm:/opt/gfxsdkdemos/ogles2/cruntest# ./cfft_arm
N=16,nTimes=100: 0.001373 s
N=32,nTimes=100: 0.001801 s
N=64,nTimes=100: 0.004364 s
N=128,nTimes=100: 0.010071 s
N=256,nTimes=100: 0.02301 s
N=512,nTimes=100: 0.053223 s
N=1024,nTimes=100: 0.114685 s
N=2048,nTimes=100: 0.252563 s
N=4096,nTimes=100: 0.551972 s
N=8192,nTimes=100: 1.19537 s
N=16384,nTimes=100: 2.57184 s

 When I tried to run the dsp version, I have the following crashing informaiton and it is related to v7_dma_clean_range. Where should I start to fix this problem based on the crash information? Thanks.

root@omap3evm:/opt/gfxsdkdemos/ogles2/cruntest# ./cfft_dsp
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = cfb18000
[00000000] *pgd=8ca6b031, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#1]
last sysfs file: /sys/devices/virtual/vtconsole/vtcon1/bind
Modules linked in: sdmak lpm_omap3530 dsplinkk cmemk omaplfb pvrsrvkm lowspi tiwlan_drv bmtrace sdio
CPU: 0    Not tainted  (2.6.32 #1)
PC is at v7_dma_clean_range+0x18/0x30
LR is at ioctl+0x908/0xb8c [cmemk]
pc : [<c008462c>]    lr : [<bf15b4c8>]    psr: 60000013
sp : cfad9ec8  ip : 00000018  fp : be825c2c
r10: 00000000  r9 : 0001fe07  r8 : be825bd0
r7 : cf8fe440  r6 : 0001fe07  r5 : be825bd0  r4 : 00000000
r3 : 0000003f  r2 : 00000040  r1 : 00000000  r0 : 00000000
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 10c5387d  Table: 8fb18019  DAC: 00000015
Process cfft_dsp (pid: 1627, stack limit = 0xcfad82e8)
Stack: (0xcfad9ec8 to 0xcfada000)
9ec0:                   cf8b67c0 cf8fe440 400e072c cfbd8234 00000200 00000000
9ee0: 00000000 00008000 ffffffff 00000000 be825c04 cf8fe440 be825bd0 0001fe07
9f00: cf8fe440 be825bd0 cfad8000 00000000 be825c2c c0101c00 00000003 cf8fe440
9f20: 00000003 c0102334 009959d0 00000000 c04a9310 00000000 00000000 00000000
9f40: 2873fd5b 0000009d 28733a0b 0000009d c00bbda8 c04a8e50 00000000 00000000
9f60: 00000000 000000ae 00000003 be825bd0 0001fe07 cf8fe440 c007c068 cfad8000
9f80: 00000000 c01023ac 00000003 00000001 be825bd0 00000000 00000000 45345824
9fa0: 00000036 c007bec0 00000000 00000000 00000003 0001fe07 be825bd0 0005f8b8
9fc0: 00000000 00000000 45345824 00000036 4534581c 00000000 45345828 be825c2c
9fe0: 402350a0 be825bd0 0000b280 401c677c 20000010 00000003 00000000 00000000
[<c008462c>] (v7_dma_clean_range+0x18/0x30) from [<bf15b4c8>] (ioctl+0x908/0xb8c [cmemk])
[<bf15b4c8>] (ioctl+0x908/0xb8c [cmemk]) from [<c0101c00>] (vfs_ioctl+0x2c/0x70)
[<c0101c00>] (vfs_ioctl+0x2c/0x70) from [<c0102334>] (do_vfs_ioctl+0x518/0x55c)
[<c0102334>] (do_vfs_ioctl+0x518/0x55c) from [<c01023ac>] (sys_ioctl+0x34/0x54)
[<c01023ac>] (sys_ioctl+0x34/0x54) from [<c007bec0>] (ret_fast_syscall+0x0/0x2c)
Code: e3a02010 e1a02312 e2423001 e1c00003 (ee070f3a)

---[ end trace 7418b98d925a72fe ]---

 

  • Update:

    Thought this is related to the kernal and about dma (v7_dma_clean_range). Then rebuilt the kernal by turning on dma related features. But it is still not working...

  • After debugging the problem for a while, reall could not find any clues...

    Just happened to find there is a test directory inside c6run_0_95_02_02 pacakge. We tried to build one of the projects inside this directory, which is called vector_args_malloc and it is also about ARM+DSP. Surprisely, this one works. So, I copied the cfft stuff to this project and it works. Then we compared the makefiles for these two projects (one under example directory and one under test directory). I found the only difference is the link parameter. For the cfft project, inside the makefile, the link argument has one related to math lib. We removed this link arg and we can build the original project.

    ARM_LDFLAGS = $(LDFLAGS)
    ARM_LDFLAGS+= -lm -lpthread

    It took us quite a while to get this solved. But really like to know why this math link caused such a big problem inside this code.