[Prev][Next][Index][Thread]

OSKit StrongARM support



Date: Tue Sept 14 1999

This informal snapshot is to make available a very preliminary version
of StrongARM support. The only platform supported at this time is the
Digital DNARD (Shark), which contains an SA-110 StrongARM CPU, and an
I/O architecture that is very similar to a PC. There is still quite a
bit of work to do, and the device support is extremely limited since
the OSKit's device driver framework has not yet been ported to the
Digital DNARD. The only documentation at this time is this message,
although the kernel library is very similar to its x86 counterpart.
If you are familiar with the x86 kernel library, you should be able to
apply that knowledge to the ARM kernel library.

***********************************************************************
WARNING: If you are not interested in StrongARM support, then do not
update to this snapshot, as validation has been very minimal.
***********************************************************************

As before, go to http://www.cs.utah.edu/projects/flux/oskit/
and everything hangs off there; currently mostly in ftp.

These components and libaries build and appear to work okay:

	oskit		crt		kern		
	boot/ofw	libc		posix/sys
	posix/sys_r	threads		svm
	amm		com		exec
	lmm		dev		startup
	clientos	memdebug	memfs
	fsnamespace/fsn	fsnamespace/fsn_r	
	freebsd/libc	freebsd/libc_r
	examples/arm32	examples/arm32/extended	examples/arm32/threads

There is a new boot adaptor in boot/ofw that provides OFW->Multiboot
boot adaptor support. The operation is very similar to the BSD boot
adaptor, in that you can give it a multiboot compliant executable plus
optional boot modules, and it will generate an OFW compliant (netbsd
a.out) image which you can boot via tftp (dhcp). See the mkofwimage
script in boot/ofw.  Note that mkofwimage relies on linker emulation;
binutils needs to be built with both arm-elf and arm-netbsd targets
enabled so that an a.out file can be generated from ELF input files.
More on that below.

At the moment, the only console that is fully supported is the serial
console. VGA display output works, but keyboard input has not been
finished, so you will need to interact with your DNARD via a serial
line.  The baud rate defaults to 9600, since that is the speed at
which the OFW boot loader drives the port. Of course, if you do not
need to input anything, you can use the display for output by changing
the "serial_console" variable in kern/arm32/shark/base_console_init.c.

These components are not yet available: 

	* FreeBSD networking and math library
	* Netbsd filesystem
	* Linux filesystems and device drivers
	* Netboot and multiboot adaptor
	* Runtime Linker (RTLD)
	* bootp
	* fsread
	* video/X11/wimp
	* Keyboard support
	* GPROF profiling support

A note about compiler tools: Finding a consistent and working set of
tools that would allow us to build on our FreeBSD 3.0 machines was a
bit of a pain. We ended up using:

	GCC 2.95
	Binutils 990818 daily snapshot with a small patch
	GDB 19990816 daily snapshot (for remote debugging)

Using this toolset, you can build ELF multiboot compliant libraries
and executables, but still create a proper OFW compliant a.out image
using linker emulation. You can pick up these tools at the OSKit ftp
site: ftp://flux.cs.utah.edu/flux/oskit/tools. There is a README file
in that directory with instructions on how to configure and build the
tools. 

Once you have a working tool chain on your path, the OSKit can be
configured as follows (for cross compilation on a FreeBSD 3.0 box):

	cd oskit-obj-dir
	oskit-src-dir/configure --prefix=/your/prefix/dir \
			--build=i586-freebsd arm-elf
	gmake
	gmake install

Once you have an example kernel, you can create an OFW-bootable image
using the mkofwimage script:

	/your/prefix/dir/bin/mkofwimage -o foo.image your_kernel
	cp foo.image /your/tftp/dir/proper_kernel_name

Then log into your DNARD, and reboot it.