** 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!