I am running into an interesting conflict where my software runs fine on NFS but once run from the NAND flash gives a consistent failure as I attempt a Display_get() call for the OSD buffer. The NAND flash is programmed with the exact same file system as the NFS, and in both cases the kernel is being booted from NAND flash.
Having read through the forums a bit, I've seen that some people's OSD problems relate to the u-boot environment. However, my environment is almost identical for both cases. I have attached it below. My video capture and display come up fine and I can see frames being displayed, but the OSD fails.
I tried moving my file system to mtdblock4 from mtdblock3 just in case, and it made no difference.
One potential symptom is that I get a lot of messages that look like:
yaffs block 4389 gc prioritised
yaffs block 4399 gc prioritised
yaffs block 4428 needs retiring gc prioritised
For the NFS case, I execute:
setenv bootargs 'mem=116M console=ttyS0,115200n8 root=/dev/nfs rw noinitrd ip=dhcp nfsroot=192.168.2.2:/home/wblack/workdir/filesys,nolock davinci_enc_mngr.ch0_output=COMPOSITE video=davincifb:vid0=0,2500K:vid1=0,2500K:osd0=720x576x16,2025K'
boot
Which no longer sets the NTSC value - I was previously using the J1 method for that. But NAND also was using J1 to select NTSC and it hasn't made any difference.
Also, my loadmodules.sh script goes as:
#!/bin/sh
# 12MB
insmod cmemk.ko phys_start=0x87400000 phys_end=0x88000000 pools=1x2258880,2x1529856,7x829440,1x524288,1x108680,1x81920,2x8192,6x4096
./mapdmaq
insmod dm350mmap.ko
rm -f /dev/dm350mmap
mknod /dev/dm350mmap c `awk "\\$2==\"dm350mmap\" {print \\$1}" /proc/devices` 0
root@192.168.2.6:/opt/dvsdk/dm355#
I added some sched_yield() and usleep() calls between retries to the Display_get() call for good measure, to no avail.
Any suggestions appreciated!
Thanks!
-Wiley