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 #