Difference between revisions of "LXR OSX build instructions"

From Sonic Potions Wiki
Jump to: navigation, search
m (Compile the firmware)
 
(6 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
*the Cortex M4 ARM code (main LXR code for DSP, sequencer, USB etc.)
 
*the Cortex M4 ARM code (main LXR code for DSP, sequencer, USB etc.)
  
We need different toolkits to manage to compilation of each set of code.
+
We need different toolkits to handle compilation of each set of code.
  
== AVR COMPILER & LIBS ==  
+
There is also a firmware utility (see <code>tools/FirmwareImageBuilder</code>); this generates the final firmware image for the LXR and requires regular <code>g++</code> to compile. It combines the AVR and the ARM code into a single image that can be uploaded from the SD-Card.
 +
 
 +
== AVR toolchain ==  
 
* Download the Atmel AVR 8-bit toolchain for Mac from http://www.obdev.at/products/crosspack/download.html
 
* Download the Atmel AVR 8-bit toolchain for Mac from http://www.obdev.at/products/crosspack/download.html
* You will get a .dmg file that you should extract and install (CrossPack-AVR-20131216.dmg is the most recent as of 2014/05/02)
+
* You will get a <code>.dmg</code> file that you should extract and install (<code>CrossPack-AVR-20131216.dmg</code> is the most recent as of 2014/05/02)
* The compiler and libs are installed under /usr/local/CrossPack-AVR
+
* The compiler and libs are installed under <code>/usr/local/CrossPack-AVR</code>
** This will be a symlink to a folder like /usr/local/CrossPack-AVR-20131216
+
** Note: this will be a symlink to a folder like <code>/usr/local/CrossPack-AVR-20131216</code>
  
== GNU ARM COMPILER AND LIBS ==  
+
== GNU ARM toolchain ==  
 
* Download the GNU bare metal ARM toolchain from https://launchpad.net/gcc-arm-embedded
 
* Download the GNU bare metal ARM toolchain from https://launchpad.net/gcc-arm-embedded
** Get the Mac version (something like '''gcc-arm-none-eabi-4_8-2014q1-20140314-mac.tar.bz2''')
+
** Note: get the Mac version (something like <code>gcc-arm-none-eabi-4_8-2014q1-20140314-mac.tar.bz2</code>)
 
* Extract the compressed tar file to /usr/local
 
* Extract the compressed tar file to /usr/local
  
 
     cd /usr/local && tar -jxf /path/to/gcc-arm-none-eabi-4_8-2014q1-20140314-mac.tar.bz2
 
     cd /usr/local && tar -jxf /path/to/gcc-arm-none-eabi-4_8-2014q1-20140314-mac.tar.bz2
  
== Change your PATH ==  
+
== Set environment variables ==
* We need to add a specific PATH for both compilers (and libs) for the MAC. Here is mine...
+
* We need to set a couple of environment variables for both compiler sets.
  
 
     export ARM_TOOLKIT_ROOT=/usr/local/gcc-arm-none-eabi-4_8-2014q1
 
     export ARM_TOOLKIT_ROOT=/usr/local/gcc-arm-none-eabi-4_8-2014q1
     export AVR_TOOLKIT_ROOT=/usr/local/CrossPack-AVR-20131216
+
     export AVR_TOOLKIT_ROOT=/usr/local/CrossPack-AVR
 
 
* in a terminal window, execute "source ./.bash_profile" to update the PATH to your system.
 
* for the moment, don't try to understand what are ARM_TOOLKIT / AVR_TOOLKIT variables, we will explain why we need this later.
 
 
 
== Grab the LXR Code ==
 
We advice you to grab the code either from :
 
 
 
    Julian repository on GITHUB (https://github.com/SonicPotions/LXR)
 
    PLD repository (https://github.com/patrickdowling/LXR)
 
    rudeog repository (https://github.com/rudeog/LXR) -> extra features compared to Julian code.
 
    rstephane repository (https://github.com/rstephane/LXR) -> equivalent to Julian CODE.
 
 
 
- of course once downloaded, you should extract the code and copy it to any folder you like.
 
On our side we copied it under: /Users/music/Documents/workspace/LXR/
 
 
 
== LXR source code ==
 
We advice you to grab the makefiles either from :
 
 
 
    PLD repository (https://github.com/patrickdowling/LXR)
 
    rstephane (@egnouf) repository (https://github.com/rstephane/LXR)
 
    RUDEOG repository https://github.com/patrickdowling/LXR
 
  
- You will find on the root path of both repository a file called MAKEFILE. You will also need the other makefiles:
+
* You could add these to your <code>$HOME/.bashrc</code> to avoid setting them every time you start a terminal
 +
** Note: run <code>source $HOME/.bashrc</code> to avoid restarting your terminal the first time you do this
  
    https://github.com/patrickdowling/LXR/blob/makefiles/Makefile
+
== LXR source code ==
    https://github.com/patrickdowling/LXR/blob/makefiles/front/AVR/Makefile
+
A number of different repositories are available:
    https://github.com/patrickdowling/LXR/blob/makefiles/mainboard/firmware/DrumSynth_FPU/Makefile
 
    https://github.com/patrickdowling/LXR/blob/makefiles/tools/FirmwareImageBuilder/Makefile
 
  
* Once downloaded, copy them at the root PATH of the code (1) and in subfolders (2,3,4) you dowloaded in STEP 4.
+
    Julian's repository (original SonicPotions): https://github.com/SonicPotions/LXR
* '''If you have taken the whole LXR code from @PLD or rstephane or @RUDEOG you don't need to download once more the Makefiles, they are provided within !'''
+
    rudeog's repository: https://github.com/rudeog/LXR -> extra features compared to Julian's repo.
 +
    pld's repository: https://github.com/patrickdowling/LXR
 +
    rstephane repository (https://github.com/rstephane/LXR -> equivalent to Julian's repo.
  
Now, let's go back to the .bash_profile file:
+
For example, from Terminal
  
     export PATH=$PATH:/usr/local/CrossPack-AVR-20131216/bin:/usr/local/CrossPack-AVR-20131216/:/usr/include:/usr/local/CrossPack-AVR-20131216/avr/include:/usr/local/gcc-arm-none-eabi-4_8-2014q1/bin
+
     # This will create a new directory called "LXR"
     export ARM_TOOLKIT_ROOT=/usr/local/gcc-arm-none-eabi-4_8-2014q1
+
     git clone https://github.com/rudeog/LXR
    export AVR_TOOLKIT_ROOT=/usr/local/CrossPack-AVR-20131216
 
  
* You can notice the two variables '''ARM_TOOLKIT_ROOT''' and '''AVR_TOOLKIT_ROOT'''.
+
See https://help.github.com/ and http://git-scm.com/book for further tutorials about how to use Git.
* They are used by the MAKEFILE that has created @PLD (and also used by rstephane).
 
* Change their values appropriately, according to your system path, where you installed the libs... etc.
 
  
== Compile ==  
+
== Compile the firmware ==  
  
* Open a terminal window, go under your LXR code root path i.e cd /Users/music/Documents/workspace/LXR/
+
* Open a terminal window, and change directory to where you cloned the repository
* Launch the command "make firmware" from a MAC terminal window. To clean the "code" you can execute "make clean".
+
    cd /Users/music/Documents/workspace/LXR/
* You will get a FIRMWARE.BIN image (in fact, we compiled two programs and the makefile combine both to one single file !), copy this file on your SD CARD and follow instruction to upload your new firmware.
+
* To build the firmware
 +
    make firmware
 +
* To remove local build files
 +
    make clean
 +
* The generated firmware will be in <code>'firmware image/FIRMWARE.BIN'</code>
 +
* Copy to your SD card, and [[LXR_Owners_Manual#Firmware_update|update the firmware]]
  
If you have downloaded rstephane code, similar to @Julian and @PLD, you will noticed that when you power on the machine, it displays "LXR-Drums-V" instead of "LXR Drums V". If so, you have successfully loaded (and compiled) LXR CODE!!!!
+
If you have downloaded rstephane code, similar to @Julian and @PLD, you will notice that when you power on the machine, it displays "LXR-Drums-V" instead of "LXR Drums V". If so, you have successfully loaded (and compiled) the LXR firmware!!!!
  
 
Well done and happy hacking!
 
Well done and happy hacking!

Latest revision as of 09:33, 10 May 2014

Tested on 10.8.x and 10.9.2; likely needs Xcode installed also (https://developer.apple.com/xcode/downloads/)

General steps

The LXR code is divided into two main parts

  • the AVR Atmel code (display and front-panel control)
  • the Cortex M4 ARM code (main LXR code for DSP, sequencer, USB etc.)

We need different toolkits to handle compilation of each set of code.

There is also a firmware utility (see tools/FirmwareImageBuilder); this generates the final firmware image for the LXR and requires regular g++ to compile. It combines the AVR and the ARM code into a single image that can be uploaded from the SD-Card.

AVR toolchain

  • Download the Atmel AVR 8-bit toolchain for Mac from http://www.obdev.at/products/crosspack/download.html
  • You will get a .dmg file that you should extract and install (CrossPack-AVR-20131216.dmg is the most recent as of 2014/05/02)
  • The compiler and libs are installed under /usr/local/CrossPack-AVR
    • Note: this will be a symlink to a folder like /usr/local/CrossPack-AVR-20131216

GNU ARM toolchain

  • Download the GNU bare metal ARM toolchain from https://launchpad.net/gcc-arm-embedded
    • Note: get the Mac version (something like gcc-arm-none-eabi-4_8-2014q1-20140314-mac.tar.bz2)
  • Extract the compressed tar file to /usr/local
   cd /usr/local && tar -jxf /path/to/gcc-arm-none-eabi-4_8-2014q1-20140314-mac.tar.bz2

Set environment variables

  • We need to set a couple of environment variables for both compiler sets.
   export ARM_TOOLKIT_ROOT=/usr/local/gcc-arm-none-eabi-4_8-2014q1
   export AVR_TOOLKIT_ROOT=/usr/local/CrossPack-AVR
  • You could add these to your $HOME/.bashrc to avoid setting them every time you start a terminal
    • Note: run source $HOME/.bashrc to avoid restarting your terminal the first time you do this

LXR source code

A number of different repositories are available:

   Julian's repository (original SonicPotions): https://github.com/SonicPotions/LXR
   rudeog's repository: https://github.com/rudeog/LXR -> extra features compared to Julian's repo.
   pld's repository: https://github.com/patrickdowling/LXR
   rstephane repository (https://github.com/rstephane/LXR -> equivalent to Julian's repo.

For example, from Terminal

   # This will create a new directory called "LXR"
   git clone https://github.com/rudeog/LXR

See https://help.github.com/ and http://git-scm.com/book for further tutorials about how to use Git.

Compile the firmware

  • Open a terminal window, and change directory to where you cloned the repository
   cd /Users/music/Documents/workspace/LXR/
  • To build the firmware
   make firmware
  • To remove local build files
   make clean
  • The generated firmware will be in 'firmware image/FIRMWARE.BIN'
  • Copy to your SD card, and update the firmware

If you have downloaded rstephane code, similar to @Julian and @PLD, you will notice that when you power on the machine, it displays "LXR-Drums-V" instead of "LXR Drums V". If so, you have successfully loaded (and compiled) the LXR firmware!!!!

Well done and happy hacking!