The examples in the Keil MDK won’t work without some changes (perhaps minor, perhaps major, but at this time, I don’t know). I chose to try the MDK first because it is much newer and far more comprehensive in terms of examples than what are available on the Olimex web site. Time to try Olimex’s examples.
Looking at the examples downloaded from the Olimex site that are specifically for the LPC-P1343, I see that they prefer to use the IAR Embedded Workbench 6.10 development kit. EW comes in three variants:
- 30-day evaluation edition. Fully functional, but only for one month
- Kickstart edition. Fully functional, but with code size limitations, and no time limit
- Full version. Of course, they don’t list the price on their web site, but I’ll bet it is beaucoup bucks! To be fair, it appears to be a rich development environment with good debugging support, but I don’t have the JTAG debugger so it won’t be useful to me.
The 30-day and Kickstart editions may be downloaded from http://www.iar.com/downloads
I looked up the size limitations on the Kickstart edition, and what do you know, the size limitation is 32KB, which isn’t a limitation at all for the LPC1343. So, I filled out the registration form (thereby guaranteeing that I can look forward to even more spam in the near future), received a confirmation email which contained a link to the download page containing my license key, and downloaded yet another 500MB development kit.
Wow, this thing is huge! It has 66,784 files consuming 1.67GB, with 2400 examples. The Keil MDK was 17,896 files consuming 1.2GB. The Keil IDE is a LOT more powerful than the IAR IDE.
I downloaded the LPC-P1343 examples, went into the \LPC-P1343_Examples\LPC-P1343_LEDs_Running_Light&Buttons directory and double-clicked on the .EWW file, which brought up the Embedded Workbench and loaded the project. On the Project menu, I clicked on Rebuild All, and the build failed. Someone at Olimex had used absolute paths to identify where some of the files are located. If you see an error in the output of the IDE referring to D:\PENKO_D\Penko_Projects_Olimex\ARM\LPC\LPC-P1343\Software\LPC-P1343_Examples\LPC-P1343_LEDs_Running_Light\LPC1343_Flash.icf
then edit the .EWP file, and remove the path, leaving just the filename LPC1343_Flash.icf and it will then build. Obviously, no one tested this before release. Very, very sloppy Olimex!
The build defaults to the Debug build, so I changed that to the Release build (because I don’t have a JTAG debugger), by clicking on the Projects menu and then on Edit Configurations, and selecting Release. This creates a sub-directory named Release, and puts the output file in the Exe subdirectory. The default output file has an .OUT file extension, and is 31KB. Copying the .OUT file to the board didn’t work. Having been through this with the MDK, I suspect that the CRC needs to be set. Well, that didn’t work. Looking at the project options, I found an Output Converter tab, and configured it to create a binary output file Firmware.bin. I tried copying the Firmware.bin to the board, but that didn’t work, so I tried setting the CRC (with the LPCRC program I wrote about in my previous blog), and copied that to the board. No dice.
I was incredulous that someone would ship an example program that wouldn’t build! After thinking about it a bit, I reverted to the Debug build, set the Output Converter, set the CRC, and copied it to the board. Woo-hoo! It worked. Obviously, the Debug project settings differ in some important way from the Release settings. Again, Olimex was extremely sloppy. Embarrassingly sloppy.
OK, so after an entire day, I was able to get the LPC-P1343 to blink its lights. I hope that this isn’t indicative of how the rest of the project will go!