Even though OS X default IDE is XCode (for C, Objective C, Java) and the fact that we can use XCode for programming an ARM7 MCU, using Eclipse is great because you can share your project with Linux (and Windows) users, use Mercurial, CVS or SVN as version control, among others interesting things that you can do with Eclipse.
Before going into the IDE, we must install a GCC toolchain that let us compile and generate ARM7 compatible binary files. And of course, there is a port of GCC for ARM7 architecture for Mac. Between all the toolchains available I like Yagarto (www.yagarto.de), it’s available for Windows and Mac, and in SourceForge you can find a DMG for OS X (http://sourceforge.net/projects/yagarto/files/). The lastest release of Yagarto for Mac includes GCC 4.4.2 and Binutils 2.20, while the Windows release includes GCC 4.5.0 and the same version of Binutils. Despite of this “small” difference, it works pretty well. So, download this release, and following the Readme file. Basically you need to unpack “yagarto-4.4.2” and include two paths into the System Path (everything is very well explained in the Readme file).
Once you have installed Yagarto, open a Terminal and type “arm-elg-gcc -v”. You should see something like:
If this is what you see, then everything goes right. If not, check Yagarto documentation, it’s very clear.
As I have mentioned before, Eclipse will be the base IDE, not only because of compatibility, but also because there is a great plugin called GNUARM that help us dealing with configurations and Makefile. Download Eclipse for C/C++ Developers (http://www.eclipse.org/downloads/) and copy into your home folder. Launch it and select a workspace. Once there, go to “Help” -> “Install New Software” and configure a plugin site with the following configuration:
Disable “Group items by category” as the plugin doesn’t have a category and appears hidden. Install the plugin and restart Eclipse.
Now if you create a C or C++ project, you will see a similar window that let you create an empty project for ARM. Simply type a name for the project, select “ARM Cross Target Application” -> “Empty project” and click “Finish”.
In the project’s property you will see all the parameters related with compiling, linking, and generating the binary file.
Category: ARM7
ARM7 Programming under Mac OS X: Part 1 – ISP
Programming on a Mac is quite similar as you do on a Linux PC, and developing for ARM7 is not the exception. In this first post I’ll show you how to setup the In System Programming feature of the LPC2138/01 in your Mac, and check that the MCU is communicating successfully with your Mac.
The first thing you have to download is lpc21isp, this minimalistic piece of software is a programming tool that communicates with the ARM7 bootloader. You can find it at Yahoo Groups (http://tech.groups.yahoo.com/group/lpc21isp/). The lastest version (lpc21isp_180) is OS-X compatible.
Once you have it in your disk, unpack (yes, this is done automatically once downloaded) and open a Terminal. Locate the unpacked folder and type ‘make -f Makefile clean all’. This should produce an output as you see in this screenshot
The result of the build process produces a file called “lpc21isp” which is executable. You have to invoce this file specifying the operations to perform, the serial port, the speed of the serial port, and the xtal frecuency in KHz.
For locating the serial port on a Mac, just look into /dev. In my enviroment I was using a custom USB-RS232 I have created a long time ago, which OS X identifies as /dev/tty.usbserial-A800cwuH
The following image shows how to invoke a detection and its result.
While lpc21isp says “Synchronizing” you should enter bootloader mode by holding P0.14 in low and performing a reset.
Last, but not least, here there are some pictures of the LPC2138/01 board and the Mac. The LPC2138/01 is mounted on an adapter I made, and near that adapter you can see the RS232 to USB adapter. Everything is powered with a 3.3V power supply.