[openfirmware] OFW Client Programs Problems

Andrea r&d4 at dave-tech.it
Tue Jun 17 09:30:44 CEST 2008


Dear OFW Users,

I'm trying to build a simple ELF application (e.g. helloworld) that uses 
OFW client interface to interact with my (geode based) embedded system 
(later I will use this interface to build an FPGA programmer).

I just go inside ofw/client/lib/x86 and run 'make', after changing just 
a bit the Makefile, due compiler requirement (I use gcc 3.4.6)
After this I just copied the hello.elf on my device and run as following

ok com1 io
ok verbose-cif
ok boot u:\hello.elf
Boot device: /usb/disk:\hello.elf  Arguments: Boot device: 
/usb/disk:\hello.elf
  Arguments:
finddevice ( 101b92 -- ff82b044 )
getprop ( 4 ff9e77a0 101b9a ff82b044 -- 4 )
getprop ( 4 ff9e77a0 101ba0 ff82b044 -- 4 )
getproplen ( 101ba7 ff82b044 -- 44 )
claim ( 4 1000 0 -- ffb73000 )
getprop ( 44 ffb73018 101ba7 ff82b044 -- 44 )
getproplen ( 101bb0 ff82b044 -- 1 )
getprop ( 1 ffb73078 101bb0 ff82b044 -- 1 )
write ( e 101f2c ff9b5180 -- Hello, world
e )
exit ( --
ok

That's preatty correct, but if I run it again I got:

ok boot u:\hello.elf
[board resets here]
þ+bcs
Type 'i' to interrupt stand-init sequence
First stand-init:
Exceptions
CIF
DHCP init

I also try with this one:

ok com1 io
ok load u:\hello.elf
Boot device: /usb/disk:\hello.elf  Arguments: Boot device: 
/usb/disk:\hello.elf
  Arguments:
ok go
Hello, world
ok go
Hello, world
ok go
Hello, world
ok load u:\hello.elf
Boot device: /usb/disk:\hello.elf  Arguments: Boot device: 
/usb/disk:\hello.elf
  Arguments:
[board halts here]


So it seems that the problem is NOT regarding running the client program 
but accessing USB device after the program in already run.
This is a problem for us because the FPGA programmer require the access 
to bitstream file:

ok com1 io
ok verbose-cif
ok boot u:\vme.elf u:\neptune.vme
Boot device: /usb/disk:\vme.elf  Arguments: u:\neptune.vmeBoot device: 
/usb/disk:\vme.elf  Arguments: u:\neptune.vme
finddevice ( 105463 -- ff82b044 )
getprop ( 4 ff9e77b8 10546b ff82b044 -- 4 )
getprop ( 4 ff9e77b8 105471 ff82b044 -- 4 )
getproplen ( 105478 ff82b044 -- 40 )
claim ( 4 1000 0 -- ffb73000 )
getprop ( 40 ffb73018 105478 ff82b044 -- 40 )
getproplen ( 105481 ff82b044 -- f )
getprop ( f ffb73074 105481 ff82b044 -- f )
write ( 2e 1058ac ff9b5180 --                  Lattice Semiconductor Corp.
2e )
write ( 2 1058ac ff9b5180 --
2 )
write ( 34 1058ac ff9b5180 --              ispVME(tm) V12.1 Copyright 
1998-2008.
34 )
write ( 2 1058ac ff9b5180 --
2 )
write ( 43 1058ac ff9b5180 -- For daisy chain programming of all 
in-system programmable devices
43 )
write ( 2 1058ac ff9b5180 --
2 )
write ( 38 1058ac ff9b5180 -- Processing virtual machine file 
(u:\neptune.vme)..
....
38 )
write ( 2 1058ac ff9b5180 --
2 )
open ( ff9e7668 --
[here the board halt as before]

Can it be a problem of gcc version? (If so, which version should I use 
for client applications?)
Can I debug it somehow?

Best Regards and TIA,

-- 

Andrea

DAVE Srl - Electronics System House
e-mail address: r&d4 at dave-tech.it




More information about the openfirmware mailing list