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