ts-7000
[Top] [All Lists]

[ts-7000] ts7390, OpenEmbedded, QtE-4.5 and NFS root

To:
Subject: [ts-7000] ts7390, OpenEmbedded, QtE-4.5 and NFS root
From: "Theodore A. Roth" <>
Date: Tue, 12 May 2009 09:27:22 -0700
Hi,

I have gotten my ts7390 to boot using a 2.6.29.1 kernel with Matt's
patches plus the touchscreen and frame buffer drivers from the
2.6.21ts kernel. Using OpenEmbedded, I have a root file system that
has QtE-4.5 and tslib plus the fbtest application from TS. I have the
ts_calibrate and ts_test programs working fine (only required a
minimal change to the ts_lcd.c file in the kernel instead of tweaking
tslib). All of this is running using a NFSROOT boot without needing an
initrd, just booting straight to the nfs root (thanks to good docs
here: http://ts78xx.digriz.org.uk/fpga/getready).

Now for the problematic part. All of the above works great. I have
written a simple Qt app and made a recipe for OpenEmbedded which
builds my app fine. My app runs fine on my dev host using qvfb. When I
run the app on the ts7390, I see this line repeatedly:

locking qpf: Permission denied
locking qpf: Permission denied
locking qpf: Permission denied
locking qpf: Permission denied
locking qpf: Permission denied
locking qpf: Permission denied
locking qpf: Permission denied
locking qpf: Permission denied

Touching the screen results in more of the same error messages. The
app looks to be running, but all the fonts are complete gibberish. The
Mighty Google turns up nothing useful. Searching the Qt forums
revealed nothing.

Tracking this down by asking the source, it looks like Qt is trying to
lock a font file in qfontengine_qpf.cpp:

bool QFontEngineQPF::lockFile()
{
    // #### this does not handle the case when the process holding the
    // lock hangs for some reason
    struct flock lock;
    lock.l_type = F_WRLCK;
    lock.l_whence = SEEK_SET;
    lock.l_start = 0;
    lock.l_len = 0; // lock the whole file
    while (fcntl(fd, F_SETLKW, &lock) != 0) {
        if (errno == EINTR)
            continue;
        perror("locking qpf");
        return false;
    }
...

More research leads me to believe that this is a problem with file
locking and NFS. I have tried adding no_auth_nlm to the /etc/exports
file on the NFS server which didn't help.

I also tried mounting a tmpfs partition, copying the /usr/lib/fonts
into it and then moving (with 'mount --move') the tmpfs to
/usr/lib/fonts, but that didn't help.

Is there any NFS magic I'm missing that will make this work? Has
anyone else dealt with this?

My next course of action is to go back to an initrd and root on SD
card and see if that eliminates the problem. I have been avoiding that
due to the need to port the TS-SD module to the 2.6.29.1 kernel. I
would rather have NFS root working since it is much more convenient
and quicker to test my builds.

I know this is somewhat off topic, but I thought there might be some
interest in the OpenEmbedded aspect of it. I will be pushing my
changes up to OE once I get this working.

Thanks.

Ted Roth


------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/ts-7000/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/ts-7000/join
    (Yahoo! ID required)

<*> To change settings via email:
     
    

<*> To unsubscribe from this group, send an email to:
    

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU