Bring up FreeBSD on MicroBlaze

Project description

This project is about porting FreeBSD for MicroBlaze architecture. MicroBlaze is a soft-processor which could be embedded as part of FPGA project. It is highly configurable and extensible making good alternative for adding a external CPU core in embedded systems based on FPGA chips. Current aim is to make bootable version of FreeBSD for MicroBlaze with ability to use console by serial interface.

Approach to solving the problem

I would like to prepare full bootstrap and kernel loader for MicroBlaze architecture. Current approach assumes using GNU toolchain for building kernel (as it support MicroBlaze target), using CLang is long run goal but not within GSoC. I chose QEMU emulator as test platform. Later real FPGA with embedded MicroBlaze will be used (after kernel loading will be done).

First aim is to load minimal kernel with only basic necessary parts and stubs, next goal is to build necessary drivers.

Deliverables

Midterm

Final

Milestones

Proposed milestones:

Status of work

Building kernel

At the moment kernel is not able to run. However it can be built and this is the base for future work. Code can be fetched from here: https://socsvn.freebsd.org/socsvn/soc2014/estaszuk/microblaze-head/head/

Building steps are:

This file contains most recent instructions about building current version of FreeBSD for microblaze target

To begin a proper toolchain will be needed. Currently the easiest way to obtain a toolchain is using a bash script './microblaze-gcc/build-toolchain.sh'.

You can then put created install dir whatever you want it. Next edit './src.conf' file and change 'MB-TOOLCHAIN' value to the path where toolchain has been moved (remember about 'bin' subdirectory).

After that type 'make kernel-toolchain' and wait to complete. This step currently does not build microblaze toolchain, but will make some necessary tools for next steps (config, etc.).

Now it's time to set env value 'TARGET_ARCH' to 'microblaze'.

You can change the MAKEOBJDIRPREFIX env if you do not want to use default directory (/usr/obj/microblaze.microblaze).

And finally this can be executed: make SRCCONF=${PWD}/src.conf buildkernel

SummerOfCode2014/MicroBlazeBringup (last edited 2018-03-14T04:55:19+0000 by MarkLinimon)