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?
firstname.lastname@example.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"