Table of Contents

RetroBSD

2.11bsd.jpg

2.11bsd-2.jpg

RetroBSD is an embedded version of 2.11BSD for PIC32 micro-controllers.

Setup

First we need to fetch a working cross-compiler. RetroBSD supports this one in Linux.

cd /usr/local
wget https://github.com/downloads/jasonkajita/chipKIT-cxx/pic32-tools-chipKIT-cxx-master-Linux32-image-20120720.zip
unzip pic32-tools-chipKIT-cxx-master-Linux32-image-20120720.zip

Checkout

Now we fetch the RetroBSD source from GitHUB.

mkdir -p /embedded
cd /embedded
git clone https://github.com/RetroBSD/retrobsd.git
cd retrobsd

Configure

In this example we will configure RetroBSD for the SDXL board.

First select the SDXL.

sed -i 's/(MAX32)/(SDXL)/' Makefile

Now we will enable two UARTS. Edit the following file,

vi sys/pic32/sdxl/Makefile

and add the following within the DEFS section, save the file.

DEFS += -DUART1_BAUD=115200
DEFS += -DUART1_ENABLED=YES
DEFS += -DUART2_BAUD=115200
DEFS += -DUART2_ENABLED=YES

Now edit the kernel configuration to enable the devices.

vi sys/pic32/sdxl/SDXL

Add the following options to enable the UARTS.

# tty0
device uart1 baud=115200
# tty1
device uart2 baud=115200

Build

Building will create the unix boot image and the SD card image for the system.

make cleanall
make

Install

First we create the file system image on a micro SD card.

dd if=sdcard.img of=/dev/sdc bs=4M

Next, Hold the PROG button and toggle RESET on the SDXL board to enter the boot laoder. We will use PIC32Prog to install the kernel.

pic32prog -d /dev/ttyACM0 ./sys/pic32/sdxl/unix.hex
Programmer for Microchip PIC32 microcontrollers, Version 1.119M
    Copyright: (C) 2011-2014 Serge Vakulenko
      Adapter: STK500v2 Bootloader
 Program area: 1d000000-1d07ffff
    Processor: Bootloader
 Flash memory: 512 kbytes
  Boot memory: 12 kbytes
         Data: 157004 bytes
        Erase: done
Program flash: ####################################### done
 Verify flash: ####################################### done
Rate: 40790 bytes per second

Login

A virtual com port should have been detected after installation.

The kernel will log something similar to the following.

usb 1-1.4: new full-speed USB device number 12 using dwc_otg
usb 1-1.4: New USB device found, idVendor=04d8, idProduct=000a
usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.4: Product: RetroBSD Console
usb 1-1.4: Manufacturer: Microchip Technology Inc.
cdc_acm 1-1.4:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 1-1.4:1.0: ttyACM0: USB ACM device

Connecting with a terminal emulator to the virtual com port and pressing enter will boot the system.

screen /dev/ttyACM0 115200

Enter the username root with an empty password to login.

2.11 BSD Unix for PIC32, revision G205 build 2:
     Compiled 2015-03-09 by root@beethoven:
     /embedded/retrobsd/sys/pic32/sdxl
cpu: 795F512H 80 MHz, bus 80 MHz
oscillator: external, PLL div 1:2 mult x20
console: ttyUSB0 (6,0)
sd0: port SPI2, select pin G9
sd0: type SDHC, size 3932160 kbytes, speed 13 Mbit/sec
phys mem  = 128 kbytes
user mem  = 96 kbytes
root dev  = rd0a (0,1)
root size = 102400 kbytes
swap dev  = rd0b (0,2)
swap size = 2048 kbytes
/dev/rd0a: 659 files, 10738 used, 91261 free
Starting daemons: update /var/cron: No such file or directory
/var/cron: created
tabs: No such file or directory
tabs: created
cron 


2.11 BSD UNIX (pic32) (console)

login: root
Password:
Welcome to RetroBSD!
erase, kill ^U, intr ^C
# ps axl
  F S   UID   PID  PPID CPU PRI NICE  ADDR  SZ WCHAN    TTY  TIME COMMAND
  3 S     0     0     0  54   0   0 0x6800   3 runout   ?    0:03 swapper
200 S     0     1     0   1  30   0   0x69  45 proc     ?    0:00 init - 
200 S     0    11     1  23  40   0    0xd   6 u        ?    0:00 update 
200 S     0    13     1  42  26   0    0x9  73 selwait  ?    0:00 cron 
200 S     0    14     1   0  30   0   0x19  56 proc     USB  0:00 -sh 
  1 R     0    17    14  24  51   0 0x7400  52          USB  0:00 ps axl 
#