==== RetroBSD ====
{{:tools:2.11bsd.jpg?200}}
\\ \\
{{:tools:2.11bsd-2.jpg?200}}
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 [[:boards:sdxl|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 [[:tools:pic32prog|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
#