** 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: [[https://github.com/jsnyder/arm-eabi-toolchain|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 [[http://macports.org|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 [[http://mxcl.github.com/homebrew|Homebrew]]
* Import (as in copy to /usr/local/Library/Formula) the formulae for cloog-ppl and arm-none-eabi-gcc from [[https://github.com/jpc/homebrew/tree/master/Library/Formula|here]]
* Install the formula ''arm-none-eabi-gcc'': brew install arm-none-eabi-gcc
== Another option: Installing Ubuntu Linux in a VirtualBox: ==
* [[http://www.tuaw.com/2009/09/07/how-to-set-up-ubuntu-linux-on-a-mac-its-easy-and-free/|Article: How to set up Ubuntu Linux on a Mac -- it's easy and free]]
* Then refer to the [[build?compiler|main Build article]].
===== 2. Source =====
see [[build?source|main Build article]]
===== 3. Build =====
see [[build?build|main Build article]]
===== 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 [[build|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!