Ever since I upgraded from Intel MCS-51 to Atmel’s AVR ATmega micro-controllers, these devices seem to have unlimited potentials. You find new posts, almost daily, on the internet showing what people are doing with these processors and how they keep finding ways to push these devices to its limit. The Arduino phenomena has certainly made these devices more popular. The AVR chip became my first choice in many embedded applications.
Like many other hobbyists, I stick around with 8-bit processors like the AVR and the PIC is because it’s not easy to experiment with processors in SMT packages. Chips based on the ARM technology often fall into this category. The trend is that majority of the semiconductor manufacturers seem to be produce their devices in SMT packages. I guess my days will be over when they finally moved all their products in BGA packages!
Migration from 8-bit to 32-bit architecture isn’t a straight forward process for me either. The amount of configurations available in an ARM processor is overwhelmingly huge for someone who has only ever worked with 8-bit devices. Although there are many good, free tools, based on gcc, available on the internet, unlike Arduino, experimenters need to write their own startup code to get the processor initialized before reaching the main() function. Trying to do bear-metal programming on these devices is not as easy as AVR since the ARM has many more registers, although the core set of registers suppose to be the same within the family across different vendors, but each vendor adds extra functions to the chip, which add to the complexity, some vendors even make these extra functions slightly different on some models of the chips they make.
However, I learnt a lot from this site, they have tons of information about the NXP LPC1100 series and they even have the complete framework available, free for you to download, they include the startup code for the device too.
ARM obviously had noticed this issue too, so they created their Arduino equivalent for platforms using their processors, the mbed platform.
Similar to Arduino, if you purchase their mbed platform and sign up for a free account, you can use their web based integrated environment (IDE) to write your programs and compile it using their on-line compiler.
Once compiled, you can download the binary code onto your device. The programming environment is similar to the Arduino and all the startup codes are auto-magically done for you during compilation. If you have the Keil compiler, you can export the project which includes the libraries and startup code for you to do offline compiling within the Keil’s IDE environment.
The Keil compiler is super efficient compare to the free gcc based compiler, it can produce really tight, small and efficient code for the ARM chips, but it also cost a lot. You can download a trial version which has a code limit of 32K, since the LPC1114FN28 only has 32K of flash, you are using the full potential of the device. This is just perfect for cash-strapped hobbyist like me.
In next part of this series, I’ll show you how I get started with the LPC1114FN28.