User Tools

Site Tools


build_mac

You might want to disable .DS_Store files on (network) mounts …otherwise Mac OS will break your r0ket file system. NEVER EVER access the r0ket with the finder. Always use only the terminal.

Build environment on Mac OS X

1. Compiler

Using Mac OS X:

The CodeSourcery G++ package provides a GNU cross-compiler toolchain for ARM. The Mac OS X version is not distributed by CodeSourcery in binary form, but can be built from source code, or mainline gcc for arm-none-eabi can be installed via MacPorts.

Solution 1

  • This explains how to build the tool chain on a Mac: Git project: jsnyder / arm-eabi-toolchain
  • You will probably want to add this line to /etc/bashrc, so that the tools are always accessible when you open a new Terminal:
    export PATH=$HOME/arm-cs-tools/bin:$PATH

Solution 2

This “Solution” produces slightly bigger code (with gcc 4.6.2) compared to older gcc versions. Therefore you can not compile some l0dables. This results in errors like:

arm-none-eabi-ld -nostartfiles -T loadable.ld -o mp0ng.elf mp0ng.o  -lc -L/opt/local/arm-none-eabi/lib/
arm-none-eabi-ld: mp0ng.elf section `.text' will not fit in region `sram'
arm-none-eabi-ld: region `sram' overflowed by 148 bytes

  • Install MacPorts
  • Don't forget
    sudo port sync
  • Install the port arm-none-eabi-gcc:
    sudo port install arm-none-eabi-gcc

Solution 3

  • Currently not working (at least on Lion). Less pain: MacPorts
  • Install Homebrew
  • Import (as in copy to /usr/local/Library/Formula) the formulae for cloog-ppl and arm-none-eabi-gcc from here
  • Install the formula arm-none-eabi-gcc:
    brew install arm-none-eabi-gcc
Another option: Installing Ubuntu Linux in a VirtualBox:

2. Source

3. Build

4. Deploy

Bring the r0ket into ISP-Mode: e.g. by using Method 1 (up to 30 seconds, but works always)

  • Power off r0ket
  • Press and hold button “Left”, power r0ket on
  • Connect r0ket via USB

Mac OS X will show a “CRP DISABLD” USB device.

Using the Mac OS X Terminal:
cp firmware.bin /Volumes/CRP\ DISABLD/

Note: Copying the firmware.bin over to the device in the Mac OS X Finder does not work.

Using the Ubunto Terminal in a VirtualBox:

Share the directory “CRP DISABLD” on the Mac OS X host with VirtualBox, e.g. using the name r0flash - it will be available on the Ubuntu guest at /media/sf_r0flash.

Copy the file firmware.bin to that directory:

cp firmware.bin /media/sf_r0flash/

9. Prepare a brand new r0ket

See main Build article (scoll to the bottom), or:

Bring the r0ket into ISP-Mode: e.g. by using Method 1 (up to 30 seconds, but works always)

  • Power off r0ket
  • Press and hold button “Left”, power r0ket on
  • Connect r0ket via USB

If you want to start from scratch:

rm /Volumes/CRP2\ ENABLD/*

Install the “initial” formatting firmware:

cd firmware
make APP=initial
cp firmware.bin /Volumes/CRP\ DISABLD/firmware.bin

The Data Flash will be formatted. Now the r0ket will present a flash file system called “NO NAME” over USB. Install the l0dables:

cd l0dable
make
cp *.c0d /Volumes/NO\ NAME/
cp *.int /Volumes/NO\ NAME/
cp *.nik /Volumes/NO\ NAME/
cd ..

Now install the Camp firmware (“final”):

make APP=final
cp firmware.bin /Volumes/CRP2\ ENABLD/firmware.bin

Example commands that worked for me

MacOSX, Lion, Up-to-date MacPorts - DanBUK

sudo port sync
sudo port install arm-none-eabi-gcc
git clone git://github.com/r0ket/r0ket.git
cd r0ket
git checkout c583ddc7e3b6ecc2cdb94fe0a0474d52bcbb220b
cd firmware
cp SECRETS SECRETS.release
# Edit SECRETS.release
./release-all
make APP=initial
cp firmware.bin ../release/initial.bin
cd ../release/
# ISP Mode - Power on whilst holding left on Joypad
# NB. This isn't always CRP DISABLED, could be CRP2 ENABLED
mount | grep "CRP DISABLD"
# /dev/disk3      32Ki   32Ki    0Bi   100%    /Volumes/CRP DISABLD
cp initial.bin /Volumes/CRP\ DISABLD/firmware.bin
diskutil unmount "CRP DISABLD"
# power off
# power on
mount | grep "NO NAME"
# /dev/disk3 on /Volumes/NO NAME (msdos, local, nodev, nosuid, noowners)
# If you want to start completely empty:
# rm -Rf /Volumes/NO\ NAME/*
cp files/* /Volumes/NO\ NAME/
diskutil unmount "NO NAME"
# press button (joypad middle)
mount | grep "CRP2 ENABLD"
# /dev/disk3 on /Volumes/CRP2 ENABLD (msdos, local, nodev, nosuid, noowners)
cp final.bin /Volumes/CRP2\ ENABLD/firmware.bin
diskutil eject "CRP2 ENABLD"
# power off
# power on
# Enjoy!
build_mac.txt · Last modified: 2012/01/03 03:29 by darthrake