I work for Arm for my sins, and in my spare time I’ve been playing with 
FreeBSD. In my day job I work with the CPU core validation team, and one of the 
things we do is take the hardware design of a new core and run it on a machine 
called an emulator. This emulator isn’t the same thing as QEMU, nor is it just 
an FPGA, it’s something in the middle - you compile the hardware design and 
download it to the emulator, and it can then run programs on your design at 
about 1MHz. Which is lovely. Our main bread and butter is to take such a design 
and get it to boot Arm Linux, a very cut down version, and then run some tests 
hosted in the Linux environment. These tests would typically thrash the snot 
out of some particular aspect of the architecture, such as memory sharing 
amongst multiple processor cores. Now, we would like to use other operating 
systems that behave differently to Linux, there are some obvious candidates 
that I’m not going to talk about for legal reasons, but one that was suggested 
was using FreeBSD under emulation.

So, what is needed is someway of telling the operating system that it is going 
to use a ram disk for its root filesystem, and that the ram disk is going to be 
at a fixed physical address in the memory map. That way we can pre-load root 
from a file in the emulation environment. In the Linux environment we would 
package the kernel, it’s DRB and the root filesystem memory image inside a 
light-weight bootloader wrapper, load that at the right offset into the 
emulator’s memory map, and twang the virtual reset line of the emulated 
processor. There’s some magic jiggery pokery to get console output from what 
the OS thinks is an AMBA UART, but that’s about size of it.

So, what does FreeBSD have to offer in the way of ramdisk functionality?

freebsd-current@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to