RetroBSD
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
#



