This page describes how to build and run Minix/ARM.

Target

The Minix ARM port targets the BeagleBoard-xM and it's QEMU based emulator, the BeagleBone and the BeagleBone Black products from the BeagleBoard community. These are all based on system on chip designs from TI and all contain a Cortex-A8 ARM core.

The code is developed and integrated in the same (master) code branch as the official MINIX3 x86 port.

Feature Matrix

This is a preliminary list of what's supported and what isn't. Feel free to add anything important that was left off the list and/or update the list with the latest developments.

Drivers

BeagleBone Black

BeagleBone (White)

BeagleBoard-xM

tty (Terminal)

yes

yes

yes

mmc (Multimedia Card)

yes

yes

yes

eMMC (Internal Multimedia Card)

no

no

no

i2c (Inter-Integrated Circuit)

yes

yes

yes

fb (Frame Buffer)

no

no

yes

EDID Reading (Extended Display Identification Data)

yes

yes

yes

eeprom

yes

yes

yes

gpio (General Purpose Input/Output)

yes

yes

yes

readclock

yes

yes

yes

PMIC (Power Management IC)

yes

yes

yes

ethernet

yes

yes

no

usb (Universal Serial Bus) HCD

exp.

exp.

no

usb mass storage

exp.

exp.

no

usb hubs

exp.

exp.

no

spi (Serial Peripheral Interface Bus)

no

no

no

pwm (Pulse-width modulation)

no

no

no

adc (Analog to Digital Converter)

no

no

no

audio

no

no

no

Kernel Features

BeagleBone Black

BeagleBone (White)

BeagleBoard-xM

reboot

yes

yes

yes

Power-Off

yes

yes

no

Miscellaneous Features

BeagleBone Black

BeagleBone (White)

BeagleBoard-xM

Capes / Expansion Boards

yes

yes

no

Supported Capes / Expansion Boards

Status

BeagleBone Weather

yes

Building Minix/ARM

First do a checkout of the code

$ mkdir -p $HOME/minix
$ cd $HOME/minix
$ git clone git://git.minix3.org/minix src
$ cd src

Secondly configure your build by creating a .settings file.

For the BeagleBoard-xM use these settings:

# beagleboard-xm
U_BOOT_BIN_DIR=build/omap3_beagle/
CONSOLE=tty02

For the BeagleBone(s) use the following settings:

#beaglebone (and black)
U_BOOT_BIN_DIR=build/am335x_evm/
CONSOLE=tty00

Now launch the build by calling the image creation script (This will call the DevelopersGuide/Crosscompiling with a machine set to "evbearm-el"):

$ ./releasetools/arm_sdimage.sh

The result is a file called minix_arm_sd.img in your src directory. This image can be copied onto an SD-Card using dd:

sudo dd if=minix_arm_sd.img of=/dev/mmcblk0 bs=1M oflag=direct

WARNING Just make sure your file system did not mount the sd-card while you where dd'ing.

Running Minix/ARM

Once the sd-card is inserted on the BeagleBoard-xM press the reset button and watch the serial for messages. Alternatively you can start the same image in the emulator (Read about that in DevelopersGuide/MinixOnLinaroQemuARM). For information on network booting, see the Netbooting ARM article.

## Starting application at 0x80200000 ...
MINIX booting

MINIX 3.2.1. Copyright 2012, Vrije Universiteit, Amsterdam, The Netherlands
MINIX is open source software, see http://www.minix3.org
Started VFS: 8 worker thread(s)
starting mmc driver
mmc_block(info)Initializing the MMC block device
mmc_host_mmchs(info)Using instance number 0
mmc_block(info)System event framework fresh start
Root device name is /dev/c0d0p1s0
/dev/c0d0p1s0: clean
/dev/c0d0p1s0 is mounted on /
none is mounted on /proc
date: timed: no such device or address
Tue Jan  1 00:00:00 GMT 2013
/dev/c0d0p1s2: clean
/dev/c0d0p1s1: clean
size on /dev/imgrd set to 0kB
Multiuser startup in progress ...
Starting services: randomrm /dev/eth0
rm /dev/eth
mknod /dev/psip0 c 7 1
ln /dev/psip0 /dev/psip
mknod /dev/ip0 c 7 2
ln /dev/ip0 /dev/ip
mknod /dev/tcp0 c 7 3
ln /dev/tcp0 /dev/tcp
mknod /dev/udp0 c 7 4
ln /dev/udp0 /dev/udp
mknod /dev/ipstat c 7 0
inet: unable to read random data from /dev/random: resource temporarily unavailable
inet: using current time for random-number seed
 inet ipc.
Starting daemons: update cron syslogd.
Starting networking: nonamed.
Local packages (start):  done.
 Minix  Release 3 Version 2.1  (console)

10.0.0.1 login:

Ethernet Configuration

If you're using a BeagleBone or BeagleBone Black, there is an ethernet driver available. It's configured through /etc/inet.conf. Running netconf as usual will let you select the right driver, which is lan8710a.

To enable services like telnet/ftp/etc you can create an rc.daemons file.

mv /etc/rc.daemons.dist /etc/rc.daemons
vi /etc/rc.daemons

Restart the system for the changes to take effect.

reboot

Videos

  • A video showing the above steps of obtaining and building the system is here.

  • A video showing how to use gdb to debug a minix from a qemu is here.

  • A video showing how to use Code Composer studio to debug the BeagleBone White is here.

Want to contribute?

Great, that's what I wanted to hear! Help with documentation, making the above procedure more clean, hardware support, debugging, running the test set and finding and debugging problems! Come and chat on #minix on freenode if you aren't already there.

See ARM-specific (or not ARM-specific!) points on the Wishlist page for the current list of todo's.

MinixWiki: DevelopersGuide/MinixOnARM (last edited 2014-09-12 15:43:23 by BenGras)