Friday, October 17, 2008

OpenEmbedded Angstrom for Advantech PCM-9375

I'm attempting to install a modern embedded linux OS on a 3.5" single-board computer (SBC), made by Advantech, the PCM-9375. It uses an AMD Geode processor, and has lots of connectors, but the main one we need is the PC/104 connector, because we have a PC/104 board for a laser rangefinder we use.

After some investigation, I found that Cliff Blake at BEC systems has successfully used OpenEmbedded and the Anstrom distribution on this SBC. I'm going to attempt the same thing myself, then go beg for help. :)

First, I upgraded my box to Ubuntu Hardy Heron, 8.04

Next, follow the Anstrom build page: Get bitbake and OpenEmbedded
I look at the GettingStarted wiki page, and it points to OE and your Distro, which says make sure Dash is not /bin/sh. It was on my system, so I did:
"sudo dpkg-reconfigure dash" and select No when it asks you to install dash as /bin/sh.
as instructed.

Next install a bunch of stuff. I checked these off in System .. Administration .. Synaptic Package Manager, although I found the command easier on a second machine.
sudo apt-get install ccache sed wget cvs subversion git-core monotone \
coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils \
gawk python-pysqlite2 diffstat help2man
And these too:
sudo apt-get install python-psyco bitbake
I added bitbake since it was in the list and Getting Started said I could. We'll see.

OK, done with OEandYourDistro, back to Getting Started, which looks like it's mirroring the Angstrom page, so back to Angstrom.
Skip install bitbake, since it was installed as a package.

Instructions say to operate in /OE, but I get 'permission denied' doing mkdir /OE, so I'm going to operate in ~/deltasphere/OE/ instead.

get OE metadata:

cd /OE
git clone git://git.openembedded.net/openembedded.git org.openembedded.stable
cd org.openembedded.stable && git checkout origin/org.openembedded.stable
That first git command downloads a bunch of stuff. The second one is quick, but says this:
Note: moving to "origin/org.openembedded.stable" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b
HEAD is now at de8489b... angstrom 2007: bump to r19
Update OE metadata:
cd /OE/org.openembedded.stable
git pull --rebase
It does some downloading, then says:
You asked me to pull without telling me which branch you
want to merge with, and 'branch..merge' in
your configuration file does not tell me either. Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull ').
See git-pull(1) for details on the refspec.

We'll have to wait and see what that means.

I download source_me.txt from Angstrom,
changed /OE to /home/myusername/deltasphere/OE everywhere
(Note first I tried ~/deltasphere/OE, but the soft link causes bitbake to have errors)
Copied their suggestions for build/conf/local.conf
(and make sure it's not named builds instead)
Changed MACHINE="geodelx"
since this is the processor in my SBC.
Finally try a build:
source source_me.txt
cd ../org.openembedded.stable
bitbake base-image
Oops:
ERROR: Openembedded's config sanity checker detected a potential misconfiguration.
Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
Following is the list of potential problems / advisories:

/proc/sys/vm/mmap_min_addr is not 0. This will cause problems with qemu so please fix the value (as root).
Luckily, the OE GettingStarted page says how to fix it.
echo 0 > /proc/sys/vm/mmap_min_addr
But I get 'permission denied'. And Ubuntu doesn't like 'su' to run as root, and 'sudo' leaves out the > redirect. So do it like this:
echo 0 > foo.txt
sudo cp foo.txt /proc/sys/vm/mmap_min_addr
Whew.
Now try
bitbake base-image
Nope - can't find any *.bb files! I wondered whether that note about 'make a simple dir, not one with symbolic links' would prove relevant - '~' is a symbolic link to /home/myusername, so I search-replace all occurrences of ~ in source_me.txt and local.conf, source source_me.txt again, and try again. Success!
Now it does a huge amount of stuff, like:
....
NOTE: package glibc-initial-2.5: started
NOTE: package glibc-initial-2.5-r10: task do_configure: started
NOTE: package glibc-initial-2.5-r10: task do_configure: completed
NOTE: package glibc-initial-2.5: completed
NOTE: Running task 116 of 607 (ID: 585, /home/helser/deltasphere/OE/org.openembedded.stable/packages/gcc/gcc-cross-initial_4.1.2.bb, do_fetch)
NOTE: package gcc-cross-initial-4.1.2: started
NOTE: package gcc-cross-initial-4.1.2-r13: task do_fetch: started
NOTE: fetch ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
...
It's fetching and managing all the packages necessary for a the base-image of a linux distro for my SBC. Pretty cool. Wonder if I'm going to run out of disk space, with only 3.5 Gb left?
We'll see tomorrow, in Part 2........... (oh, the suspense)
Post a Comment