Hello, LEDs (was RE: Meta Boot Loader)

Scott C. Karlin scott at CS.Princeton.EDU
Tue May 2 11:33:24 EDT 2000


I've built some arm-aout cross compiler tools for Linux and am
now attempting a "pre- Hello, World" program: a "write something
on the LEDs" program.

It doesn't work yet so I thought I'd call upon the collective
experience of the mailing list.

Here's the code:

   /*
   **  The next line is a guess
   */
   typedef unsigned long UINT32;

   /*
   **  From BoardSupport/VxWorks/IXP1200EB/ixp1200eb.h
   */
   #define IXP1200_LED_ADDR   (0x38400000+0x108000)  /* Addr of LED */
   #define IXP1200_REG_WRITE(a,val) (*(volatile UINT32 *)(a) = (val))

   /*
   **  From BoardSupport/VxWorks/IXP1200EB/sysLib.c
   */
   #define DEBUG_LED(val) IXP1200_REG_WRITE(IXP1200_LED_ADDR, (val))


   void __main(void)
   {
      DEBUG_LED(3);

   loop:
      goto loop;
   }

I compile it with:
   arm-aout-gcc -nostartfiles -nodefaultlibs -o led.aout led.c

An "arm-aout-objdump --disassemble led.aout" of the resulting file
gives this:

   led.aout:     file format a.out-arm-little

   Disassembly of section .text:

   00008000 <___main>:
       8000:       e1a0c00d        mov     ip, sp
       8004:       e92dd800        stmdb   sp!, {fp, ip, lr, pc}
       8008:       e24cb004        sub     fp, ip, #4
       800c:       e3a035e1        mov     r3, #943718400
       8010:       e2833942        add     r3, r3, #1081344
       8014:       e3a02003        mov     r2, #3
       8018:       e5832000        str     r2, [r3]

   0000801c <L3>:
       801c:       eafffffe        b       801c <L3>
       8020:       e95ba800        ldmdb   fp, {fp, sp, pc}^
           ...

When I put it in place of the vxWorks boot image and reboot the
system I get this:

   Attached TCP/IP interface to eeE0.
   Attaching network interface lo0... done.
   Loading... tftpGet: Error occurred while transferring the file.

   Error loading file: errno = 0x530001.
   Can't load boot file!!
   Early serial debug initialized
   muxLoad failed!
   0x


   [VxWorks Boot]:

There are many things which could be wrong.
   I'm using little-endian.
   I'm using the default start address of 0x00008000.
   I'm using an a.out file.

Any suggestions?  Anyone know what error 0x530001 means?

Thanks,
Scott


Johnson, Erik J writes:
>
> > If the boot loader can load our code directly, this is just what we
> > want.  I guess we just need to get the details of the initial boot
> > loader.  For example, what is the format of the file it pulls over?
>
> a.out, if I remember the code correctly.  After pulling it down, it
> will jump to the entry point given in the a.out header.
>
> > Where in memory is the image placed?  (i.e., where do we need to
> > link our text, bss, and data sections.)
>
> there should be MACROs and a routine that determines this in
> the BSP (BoardSupport/VxWorks/...../sysLib.c) (sorry I don't
> have the code handy right now, so I might have
> the names wrong).  But look for things of the
> nature like sysMemTop() and SYS_MEM???.  The memory map
> given in in the HRM might also provide the information.
>
> erik
>
> >
> > -Scott
> >
> >
> > Raghunandan, Makaram writes:
> > >
> > > The VxWorks boot image that is on the Flash ROM of IXP1200
> > > Evaluation system does exactly what you need.  The initial
> > > boot loader comes up initializes the Chip, and, the Ethernet
> > > NIC.  After that the full suite of VxWorks is pulled over
> > > from the network.  Now, in your case, you can use this
> > > method to load your OS rather than the default file.
> > >
> > > Another alternative is to use the Angel Debug Monitor that is also
> > > loaded on the FlashROM. The ARM SDT (from ARM LTD.) can be used in
> > > conjunction with this to load any program on to the StrongARM core.
> > >
> > > -----Original Message-----
> > > From: Scott C. Karlin [mailto:scott at CS.Princeton.EDU]
> > > Sent: Wednesday, April 19, 2000 8:27 PM
> > > To: ixp1200 at CS.Princeton.EDU
> > > Subject: Meta Boot Loader
> > >
> > >
> > > We'd like to begin porting our own operating system (Scout)
> > > to the StrongARM core of the IXP1200.  To do this we'll
> > > need a way to get code into the device.  We have a couple
> > > of thoughts on this and would like to get some feedback
> > > (especially from the Intel folks who are on the list).
> > > We basically need a way to load a raw image into the core
> > > and start running it.  We are not using VxWorks or eCOS.
> > >
> > > Approaches:
> > >
> > >    1.  Purchase or lease a NetROM device.
> > >    2.  Use a device programmer to program the flash EEPROM.
> > >        Is the flash in a socket?  The chip packaging looks
> > >        unfamiliar.
> > >    3.  Use a Meta Boot Loader.  This is code that runs
> > >        under VxWorks.  The preprogrammed boot loader in
> > >        ROM can load the meta boot loader which will, in
> > >        turn, load our OS code.
> > >
> > > Number 3 has the advantage that it is an all software solution.
> > > The problem is that it appears to need a VxWorks executable
> > > (the meta boot loader) but we aren't interested in purchasing
> > > a license for this one little program.  Is this something
> > > that someone else has done (or could do)?



More information about the ixp1200 mailing list