diff --git a/Makefile b/Makefile index 836adfc..4e00a76 100644 --- a/Makefile +++ b/Makefile @@ -104,7 +104,7 @@ cleanall: clean rm -f share/re.help share/emg.keys share/misc/more.help rm -f etc/termcap etc/remote etc/phones rm -f tools/configsys/.depend - rm -f var/log/aculog + rm -f var/log/aculog sdcard.img rm -rf var/lock share/unixbench installfs: diff --git a/tools/build/.gitignore b/tools/build/.gitignore new file mode 100644 index 0000000..d558479 --- /dev/null +++ b/tools/build/.gitignore @@ -0,0 +1,4 @@ +build-*.log +retrobsd-*.zip +sdcard-*.zip +retrobsd-*-????-??-?? diff --git a/tools/build/Makefile b/tools/build/Makefile new file mode 100644 index 0000000..9716ff6 --- /dev/null +++ b/tools/build/Makefile @@ -0,0 +1,65 @@ +BOARD_LIST = duinomite fubarino max32 maximite maximite-color picadillo sdxl + +SKEL_SCRATCH = skeleton/linux32/pic32prog \ + skeleton/linux64/pic32prog \ + skeleton/macosx/pic32prog \ + skeleton/pic32prog.exe \ + skeleton/sdcard.img \ + skeleton/unix.dis \ + skeleton/unix.hex + +PIC32PROG = https://raw.githubusercontent.com/sergev/pic32prog/master + +DATE := $(shell date +'%Y-%m-%d') + +all: sdcard-$(DATE).zip + for b in $(BOARD_LIST); do \ + $(MAKE) retrobsd-$$b-$(DATE).zip TARGET=$$b; \ + done + +clean: + rm -rf *.zip $(wildcard retrobsd-*-????-??-??) + +clean-all: + rm -f $(SKEL_SCRATCH) build-$(DATE).log + +build: build-$(DATE).log + +sdcard-$(DATE).zip: ../../sdcard.img + zip -jq $@ ../../sdcard.img + +retrobsd-$(TARGET)-$(DATE).zip: update-skeleton + @rm -rf retrobsd-$(TARGET)-$(DATE) $@ + cp -rp skeleton retrobsd-$(TARGET)-$(DATE) + ln ../../sdcard.img retrobsd-$(TARGET)-$(DATE)/sdcard.img + ln ../../sys/pic32/$(TARGET)/unix.hex retrobsd-$(TARGET)-$(DATE)/unix.hex + ln ../../sys/pic32/$(TARGET)/unix.dis retrobsd-$(TARGET)-$(DATE)/unix.dis + zip -rq $@ retrobsd-$(TARGET)-$(DATE) + +build-$(DATE).log: + make -C ../.. cleanall + (echo === RetroBSD Build Revision $(shell git rev-list HEAD --count) ===; \ + make -C ../../tools; \ + make -C ../../lib; \ + make -C ../../src install; \ + make -C ../../sys/pic32 all; \ + make -C ../.. fs) 2>&1 > build-$(DATE).log + +update-skeleton: skeleton/linux32/pic32prog skeleton/linux64/pic32prog \ + skeleton/macosx/pic32prog skeleton/pic32prog.exe \ + +skeleton/linux32/pic32prog: + (cd skeleton/linux32 && \ + curl -o pic32prog $(PIC32PROG)/linux32/pic32prog) + +skeleton/linux64/pic32prog: + (cd skeleton/linux64 && \ + curl -o pic32prog $(PIC32PROG)/linux64/pic32prog) + +skeleton/macosx/pic32prog: + (cd skeleton/macosx && \ + curl -o pic32prog $(PIC32PROG)/macosx/pic32prog) + +skeleton/pic32prog.exe: + (cd skeleton && \ + curl -o pic32prog.exe $(PIC32PROG)/pic32prog.exe) diff --git a/tools/build/skeleton/.gitignore b/tools/build/skeleton/.gitignore new file mode 100644 index 0000000..8b37219 --- /dev/null +++ b/tools/build/skeleton/.gitignore @@ -0,0 +1,7 @@ +pic32prog.exe +sdcard.img +unix.dis +unix.hex +linux32/pic32prog +linux64/pic32prog +macosx/pic32prog diff --git a/tools/build/skeleton/README.txt b/tools/build/skeleton/README.txt new file mode 100644 index 0000000..0bf6f26 --- /dev/null +++ b/tools/build/skeleton/README.txt @@ -0,0 +1,133 @@ + +RetroBSD is a version of 2.11BSD Unix for microcontrollers. +It can run on PIC32 in only 128 kbytes of RAM. The operating +system includes not only a set of basic Unix utilities, but also +a C compiler, assembler, linker, libraries and include files +sufficient to develop user applications directly on the target +processor. Cross-compile is possible as well. + +Files in this package: + + unix.hex - Unix kernel image + unix.dis - Disassembly of the kernel image, for debugging + sdcard.img - Root filesystem image + pic32prog.exe - PIC32 programmer utility for Windows + linux32/pic32prog - PIC32 programmer utility for 32-bit Linux + linux64/pic32prog - PIC32 programmer utility for 64-bit Linux + macos/pic32prog - PIC32 programmer utility for Mac OS X + pic32prog.txt - Brief description of pic32prog utility + README.txt - This file + +The installation of RetroBSD to your board consists of +three steps: + +(1) Transfer the Unix kernel to the board +(2) Put the filesystem image on to a SD card +(3) Connect to the console port and start RetroBSD + + +Transfer the Unix kernel on to the board +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Connect the board via microUSB cable to your computer. To enter +a bootloader mode, press the PRG key first, hold it, then press +the RESET key. The LED will now flash and your board is ready +to accept new code. Use pic32prog utility to program the flash +code. The bootloader can appear as a HID device, or as a virtual +serial port (COM port) on your computer, depending on your +board type. + +Boards which use HID bootloader: Maximite, Color Maximite, +Duinomite, CGMMSTICK1. For these boards you do not need to +specify the -d option and device name. + +Boards which use a virtual serial port for bootloader: Fubarino +SD, chipKIT Max32, Picadillo 35T, Majenko SDXL. For these +boards you need to know the exact device name to specify for +pic32prog (typically /dev/ACM0 on Linux, something like COM12 +on Windows, /dev/tty.usbmodemfa131 on Mac OS X). + +Use proper pic32prog binary for your operating system: + + pic32prog.exe - for Windows + linux32/pic32prog - for 32-bit Linux + linux64/pic32prog - for 64-bit Linux + macos/pic32prog - for Mac OS X + +Unpack the package and run command (say, for 64-bit Linux): + + linux64/pic32prog -d /dev/ttyACM0 unix.hex + +For Windows, it should be like: + + pic32prog -d COM12 unix.hex + +On Mac OS X: + + macosx/pic32prog -d /dev/tty.usbmodemfa131 unix.hex + +You should see: + + Programmer for Microchip PIC32 microcontrollers, Version 1.112 + Copyright: (C) 2011-2014 Serge Vakulenko + Adapter: STK500v2 Bootloader + Program area: 1d000000-1d07ffff + Processor: Bootloader + Flash memory: 512 kbytes + Data: 153384 bytes + Erase: done + Program flash: ###################################### done + Verify flash: ###################################### done + Rate: 9307 bytes per second + + +Put the filesystem image on to a SD card +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Use any USB-to-SD card reader to attach the SD card to your PC. +On Windows, use Win32DiskImager utility. On Linux or Mac OS X, +run: + + sudo dd bs=32k if=sdcard.img of=/dev/XYZ + +where XYZ is a name of SD card on your computer (use lsblk or +"diskutil list" to obtain). + +Once that is done remove the SD card from card reader and plug +it into SD slot on your board. The RetroBSD system is ready +to run. + + +Connect to the console port and start RetroBSD +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Connect USB cable to the board and to your computer. The RetroBSD +console will appear as a virtual COM port on your computer. Use +any terminal emulation program (like putty on Windows or +minicom on Linux) to connect to this virtual COM port at baud +rate 115200. Press to start RetroBSD. On Login prompt, +enter "root". Password is empty: + + 2.11 BSD Unix for PIC32, revision G226 build 1: + Compiled 2015-05-19 by vak@tundra.local: + /Users/vak/retrobsd-github/sys/pic32/fubarino + cpu: 795F512H 80 MHz, bus 80 MHz + oscillator: HS crystal, PLL div 1:2 mult x20 + console: ttyUSB0 (5,0) + sd0: port SPI2, select pin G9 + sd0: type SDHC, size 3914752 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: 690 files, 10880 used, 91119 free + Starting daemons: update cron + + + 2.11 BSD UNIX (pic32) (console) + + login: root + Password: + Welcome to RetroBSD! + erase, kill ^U, intr ^C + # _ diff --git a/tools/build/skeleton/linux32/README.txt b/tools/build/skeleton/linux32/README.txt new file mode 100644 index 0000000..0dd2b9f --- /dev/null +++ b/tools/build/skeleton/linux32/README.txt @@ -0,0 +1 @@ +This directory contains a pic32prog binary for 32bit Ubuntu Linux. diff --git a/tools/build/skeleton/linux64/README.txt b/tools/build/skeleton/linux64/README.txt new file mode 100644 index 0000000..acd49cf --- /dev/null +++ b/tools/build/skeleton/linux64/README.txt @@ -0,0 +1 @@ +This directory contains a pic32prog binary for 64bit Ubuntu Linux. diff --git a/tools/build/skeleton/macosx/README.txt b/tools/build/skeleton/macosx/README.txt new file mode 100644 index 0000000..942c4b6 --- /dev/null +++ b/tools/build/skeleton/macosx/README.txt @@ -0,0 +1 @@ +This directory contains a pic32prog binary for Mac OS X. diff --git a/tools/build/skeleton/pic32prog.txt b/tools/build/skeleton/pic32prog.txt new file mode 100644 index 0000000..39ef633 --- /dev/null +++ b/tools/build/skeleton/pic32prog.txt @@ -0,0 +1,91 @@ +Pic32prog is a utility for loading data into a flash memory of Microchip PIC32 +microcontrollers. Supported adapters and bootloaders: + * Microchip PICkit2 + * Microchip PICkit3 with scripting firmware + * Olimex ARM-USB-Tiny (not finished yet) + * Olimex ARM-USB-Tiny, ARM-USB-Tiny-H and ARM-USB-OCH-H JTAG adapters + * Olimex MIPS-USB-OCH-H JTAG adapter + * Bus Blaster v2 JTAG adapter from Dangerous Prototypes + * Flyswatter JTAG adapter from TinCanTools + * AN1388 HID bootloader + * Legacy FS_USB HID bootloader + + +=== Usage === + +When called without parameters, pic32prog utility detects a type of microcontroller +and device configuration. For example: + + % pic32prog + Programmer for Microchip PIC32 microcontrollers, Version 1.0 + Copyright: (C) 2011 Serge Vakulenko + Adapter: PICkit2 Version 2.32.0 + Processor: 795F512L (id 04307053) + Flash memory: 512 kbytes + Configuration: + DEVCFG0 = 7ffffffd + 1 Debugger enabled + 8 Use PGC2/PGD2 + DEVCFG1 = ff6afd5b + 3 Primary oscillator with PLL + 1 Primary oscillator: XT + 4 CLKO output active + 3 Peripheral bus clock: SYSCLK / 8 + 4 Fail-safe clock monitor disable + 8 Clock switching disable + a Watchdog postscale: 1/1024 + DEVCFG2 = fff8f9d9 + 1 PLL divider: 1/2 + 5 PLL multiplier: 20x + 1 USB PLL divider: 1/2 + 8 Disable USB PLL + Enable USB PLL + 0 PLL postscaler: 1/1 + DEVCFG3 = 3affffff + 7 Assign irq priority 7 to shadow set + Ethernet RMII enabled + 2 Default Ethernet i/o pins + Alternate CAN i/o pins + USBID pin: controlled by port + VBuson pin: controlled by port + +Writing to flash memory: + + pic32prog [-v] file.srec + pic32prog [-v] file.hex + +Reading memory to file: + + pic32prog -r file.bin address length + +Parameters: + + file.srec - file with firmware in SREC format + file.srec - file with firmware in Intel HEX format + file.bin - binary file + address - address in memory + -v - verify only (no write) + -r - read mode + +Input file should have format SREC or Intel HEX. +You can convert ELF format (also COFF or A.OUT) to SREC using objcopy utility, +for example: + + objcopy -O srec firmware.elf firmware.srec + + +=== Sources === + +Sources are distributed under the terms of GPL. +You can download sources using Git: + + git clone https://github.com/sergev/pic32prog.git + +To build it on Ubuntu, a few additional packages need +to be installed: + + sudo apt-get install libusb-dev libusb-1.0-0-dev libudev-dev + +___ +Regards, +Serge Vakulenko