From owner-freebsd-arm@FreeBSD.ORG Mon Feb 19 08:52:21 2007 Return-Path: X-Original-To: freebsd-arm@freebsd.org Delivered-To: freebsd-arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BEA6716A402 for ; Mon, 19 Feb 2007 08:52:21 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (vc4-2-0-87.dsl.netrack.net [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 6B50113C4C9 for ; Mon, 19 Feb 2007 08:52:21 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.13.4/8.13.4) with ESMTP id l1J8q6WJ057374; Mon, 19 Feb 2007 01:52:06 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Mon, 19 Feb 2007 01:52:53 -0700 (MST) Message-Id: <20070219.015253.1112027279.imp@bsdimp.com> To: krassi@bulinfo.net From: "M. Warner Losh" In-Reply-To: <45D95958.7060402@bulinfo.net> References: <45D5DFD3.40805@bulinfo.net> <20070216.105436.1723233610.imp@bsdimp.com> <45D95958.7060402@bulinfo.net> X-Mailer: Mew version 4.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0 (harmony.bsdimp.com [127.0.0.1]); Mon, 19 Feb 2007 01:52:06 -0700 (MST) Cc: freebsd-arm@freebsd.org Subject: Re: At91rm9200 boot? X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Feb 2007 08:52:21 -0000 In message: <45D95958.7060402@bulinfo.net> Krassimir Slavchev writes: : M. Warner Losh wrote: : > In message: <45D5DFD3.40805@bulinfo.net> : > Krassimir Slavchev writes: : > : M. Warner Losh wrote: : > : > In message: <45D45269.4050509@bulinfo.net> : > : > Krassimir Slavchev writes: : > : > : M. Warner Losh wrote: : > : > : > In message: <45D3119F.4020302@bulinfo.net> : > : > : > Krassimir Slavchev 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 ... hmmm. iic does vary a lot, but at 0x57 it won't be in the boot sequence... : This is not a big problem because coming with board bootstrap loader : works and I can write bootspi : in the dataflash. Good. There may be one tweak needed for bootspi to get the memory recognized correctly. I think that given the explosion of boards that have been posted here lately, I'm going to have to make all this stuff a lot more configurable. : 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. These should be right in the std.at91 file. KERNPHYSADDR is where the kernel is loaded in physical memory, by default 0x20000000. KERNVIRTADDR is this in virtual address space (0xc0000000). PHYSADDR I believe is where physical memory starts. : PS: This is the my board: http://www.harerod.de/centipad/index.html cool! Warner