Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Feb 2007 10:01:28 +0200
From:      Krassimir Slavchev <krassi@bulinfo.net>
To:        "M. Warner Losh" <imp@bsdimp.com>,  freebsd-arm@freebsd.org
Subject:   Re: At91rm9200 boot?
Message-ID:  <45D95958.7060402@bulinfo.net>
In-Reply-To: <20070216.105436.1723233610.imp@bsdimp.com>
References:  <45D45269.4050509@bulinfo.net>	<20070215.094642.1645217654.imp@bsdimp.com>	<45D5DFD3.40805@bulinfo.net> <20070216.105436.1723233610.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
M. Warner Losh wrote:
> In message: <45D5DFD3.40805@bulinfo.net>
>             Krassimir Slavchev <krassi@bulinfo.net> writes:
> : M. Warner Losh wrote:
> : > In message: <45D45269.4050509@bulinfo.net>
> : >             Krassimir Slavchev <krassi@bulinfo.net> writes:
> : > : M. Warner Losh wrote:
> : > : > In message: <45D3119F.4020302@bulinfo.net>
> : > : >             Krassimir Slavchev <krassi@bulinfo.net> writes:
> : > : > : I have board with at91rm9200, 64Mb SDRAM, 4Mb dataflash and 64kb iic.
> : > : > : There is bootloader installed in iic which boots linux kernel from 
> : > : > : dataflash.
> : > : > : What I need to know for this bootloader to be able to boot FreeBSD kernel?
> : > : >
> : > : > How to install the FreeBSD kernel in place of the linux kernel
> : > : > currently in dataflash.
> : > : >
> : > : > Depending on the dataflash, you may also be able to do any or all of
> : > : > the following:
> : > : >     (1) install the freebsd boot loader that boots from SD cards (boot2)
> : > : >     (2) install the freebsd boot loader that boots from dataflash (bootspi)
> : > : >   
> : > : These boot loaders can't be fitted in the 8kbytes eeprom (24C64).
> : >
> : > Well, they could be made to fit into 8KB, but they don't right now.  A
> : > lot of effort has been made to make them small.  bootspi likely is the
> : > easiest candidate, since it is closest.  I tried really hard to make
> : > boot2 fit into 8k, but ran out of time.  I did manage to slim down the
> : > boot loaders from about 48k when I started to 9-10k after all was said
> : > and done.  The at91rm9200 parts have 16k of SRAM, of which 12k are
> : > useful.
> : >
> : > The newer AT91SAM926x parts have only 4kb of SRAM, so I'm unsure what
> : > I'll be doing there.
> : >
> : > : >     (3) Use the FreeBSD dataflash support to manage this situation.
> : > : >   
> : > : Where to find  more information about this support?
> : >
> : > At the moment there's only source.  src/sys/dev/flash/at45d.c has the
> : > main support for dataflash.  SPI infrastructure is in src/sys/dev/spi
> : > and src/sys/arm/at91/at91_spi.c.  /dev/flash/spi0, etc, appears when
> : > these devices are active.  The block size that the dataflash supports
> : > is, alas, hard coded into at45d.c file at the moment, but I think that
> : > most parts have at least some support in there.
> : >
> : > Warner
> : >
> : >   
> : Okay, I have disabled  TFTP code in bootspi and now it is 6712 bytes and 
> : runs fine.
> : I use minicom to upload bootloader but something is wrong with it 
> : because when it receives 'C' from terminal it can't upload correctly 
> : (Retry 0: NAK on sector ...). Always I need to start xmodem and  power 
> : off/on the board to be able to upload image but in this case I can't 
> : upload kernel with 'K' command.
> : Is there another xmodem program or I need to change something in the 
> : minicom settings?
>
> I forgot to mention that the usualy way that I upload this code is to
> use tip and lsx (from the lrzsz port).  I hit ~C to get a command
> prompt, type 'lsx boot0spi bootspi' which will load the bootspi code
> into the spi part.  boot0spi is a bootstrap loader.  I then reboot and
> upload the kernel.  I've only done that a few times on my company's
> board because it was very slow...
>
> I'm afraid that I've never used minicom, but here is my /etc/remote
> entry that I use for tip:
>
> ucom0:dv=/dev/cuaU0:br#115200:pa=none:
>
> or
>
> arm:dv=/dev/cuad0:br#115200:pa=none:
>
> depending on if I'm using the usb dongle with level conversion or a
> normal serial port.
>
>   
This works! Thanks.
My board seems to be different because I cant update eeprom with 
boot0iic nor dataflash with boot0spi.
I found that eeprom address is 0x57 not 0x50 ... When try to update 
dataflash I receive Bad Readback ...
This is not a big problem because coming with board bootstrap loader 
works and I can write bootspi
in the dataflash.
I try many times to compile working kernel but no luck.
I have TARGET=arm and TARGET_ARCH=arm in /etc/make.conf
This is the steps I use on CURRENT:

1. cd /usr/src
2. make buildenv
3. make kernel-toolchain
4. cd /usr/src/sys/arm/conf
5. config ARMKERNEL
6. cd ../compile/ARMKERNEL
7. make cleandepend depend all
8. make trampoline

And kernel.gz.tramp should be the file suitable for loading on the board.
Step 3 may be necessary only once.

Is this the correct way to build kernel or I miss something?

Also I need some points how to set KERNPHYSADDR, KERNVIRTADDR and PHYSADDR.

PS: This is the my board: http://www.harerod.de/centipad/index.html

Best Regards




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45D95958.7060402>