Finally something new to show.
Yesterday the LPCXpresso boards from Embedded Artists arrived and after opening the box it was clear
that Embedded Artists raised the standard of Embedded Development.
I was used to the command line Quickstart Development environment, but the LPCXpresso is delivered with a complete Eclipse environment with a real JTAG debugger solution from
Code Red Technologies. Create, build and debug your code from within one graphical environment.
This is not just another Eclipse plugin, this is a complete solution form developing your applications. It includes full debugging possibilities with integrated
flash programming and access to all registers of the peripherals.
The LPCXpresso is a joint development of NPX, Code Red and Embedded Artists in which all parties contributed there specialties. LPCXpresso gets you up&running in a few
minutes and developing your own code within a day.
After some parts hunting we finally got all parts needed to build the CNC milling machine. Not completely electronics, but next to a PC with EMC2 there will be some electronics involved to get the thing fully operational.
Here are a few videos of the first milling actions from youtube
These movies were shot during building, as can be seen from the rubber-band mounting solutions. A piece of 80x80mm aluminium profile is attached to the Z-axis using two small bolts, if things go really wrong these will (hopefully) snap before real damage appears.
The hole in the balsa wood in the right movie was a first attempt of the machine to kill the Dremel spindle by pushing it through the table. The dremel twitched, crunched and moved but both dremel and the tool bit are still alive.
These first tests look promising, even though the supporting 5mm alu sheets on the portal have not been mounted the machine is very stable and repetition accuracy is 0.01 mm when travelling from extend to extend at full speed.
16 March 2007: New Yahoo group
I decided to start a new Yahoo group in order to allow lpc2468 users to discuss any issues regarding uClinux or u-boot.
EmbeddedArtists is doing a great job in delivering new boards and getting us on the move very fast bu we should start
to develop new drivers and mature existing ones.
The group is still new and empty but I expect there will be enough users out there joining.
My evenlasting quest for a JTAG pod has almost ended. I received some ft2232 chips and started to look at this myself.
Everything should just run using openOCD but as you can read here, things are not always as easy as they seem ...
I should start explaining that all Linux development is performed from a Linux distribution. The VMware player I mentioned yesterday is needed for this. This creates a virtual PC within your PC and on that virtual PC Linux is run. Don't get scared if you have never seen Linux before, it is all pre-arranged by the Artists themselves and there are some nice introductions on how to setup and run the whole thing (since I am a Linux user from the old days I may be incorrect, there may be some steps missing which are really needed).
The good this with the VMware player is that everything is kept within the VMware player application. It uses a single image file (a virtual harddisk) and has no access to any other files stored on your PC so whatever will happen, your Windows environment will stay clean. But there are some drawbacks, I had to shutdown the VMware player and reboot my PC before I was able to use my mouse and network.
We all know this one, it appears in almost every book on C. This first tutorial will edit, compile and run your first program on the OEM board. To execute the code it needs to be loaded in uClinux and that is done by mounting the directory in which you created the program via nfs.
The only problem I had was an error message during compilation: as I discovered the C library (uClibc) is only delivered as source code, but after typing "make" in the uClinux source directory the code becomes available during compilation - and before having the hello.c program compiled you already created your own Linux kernel!
uboot and another example
The other programs I tried are the tcp_client and tcp_server. The tutorial shows how to create programs that are stored on the ROM file system. At the same time you are getting to use uboot (the boot loader) to download the images from the PC, using a TFPT server that is built in the PC-Linux system. This means that you can develop and test your programs (including the Linux kernel and drivers) without having to touch the flash on the board.
The uClinux also supports the MMC/SD card so you can also store your programs on the MMC card. Booting from MMC is also possible but there are some problems in this field. On the board I used this will only succeed about 50% of the time and that is not good enough for me, booting must be a stable process on which one can rely.
Hello Embedded Artists!
I thought it would be nice to let them know my first steps with the board and I wrote them an email explaining things. I mentioned that some information is missing from the support pages, also mentioned that most of it is OK, and the problems I have with SD card in uboot.
I got a very fast reaction stating that this is a known problem and also a general statement on device drivers: "Our basic idea is to provide a basic set of drivers. They may not be the very best drivers but they at least provide a starting point and will work in most situations."
The drivers will get you up and running quickly but it never harms to improve them. So if you own a board don't hesitate and update any driver you like. My experience is that Embedded Artists are very willing to incorporate changes in their release - and in that way we all benefit from each other!
10 March 2007: The lpc2468 OEM board from EmbeddedArtists has arrived
When I got the email that the board was in the mail, I knew I could have something to play with this weekend and my dreams became true...
The mail man delivered a big box with my complete order and the lpc2468 OEM board plus an LCD module were part of this.
And there it is: the OEM base board is delivered with the lpc2468 module mounted. The QVGA LCD I had to mount myself but that was no problem at all. Now I want to get started so it is time to register my board at the support pages of EmbeddedArtists and collect as much information as I can. It is absolutely no problem to get the board up and running and within a few minutes I had the ethernet cable connected to my home network and the USB cable to my PC.
After installation of the drivers for the FTDI USB-RS232 chip it is just a matter of starting my favorite terminal program to see what is going on and within a few moments I have the prompt from busybox on uClinux. Also the telnet, ftp and http clients work but still no image on the LCD ...
All drivers are already included with the standard software in the flash and the website gives some information on how to create graphics files for the LCD and show these. The standard samples from EmbeddedArtists are copied of powerpoint slides - these were made to view on a higher resolution PC screen and they do not look that good. It is impossible to see the quality of the LCD screen.
Just as an exercise to see the quality of the LCD I made a screendump of some text and grabbed a 320x240 section to show on the LCD. This looks good!
I did this in literally 10 minutes after starting the board for the first time. The uClinux kernel contain support for the MMC card (I am told you can even have uboot loading an image from there) os it is just a matter of converting the images on the PC and writing them to an SD card.
The only problem I had is that the mmc driver in uClinux does not like me unplugging the SD card and after unmounting the card, removing it to write some new files on it and placing it back again Linux refuses to mount the card. I have to remove the MMC driver (rmmod lpc2468mmc.ko) and insert it again (insmod /drivers/lpc2468mmc.ko) before being able to mount the SD card with the updated files.
This is just the start of course. It will take some time to develop some 'real' programs to work on this board and that will defenitely not be this weekend (the weather is too nice to stay indoors all day). The VMware player gives a fast route to creating your own application, there is no need to install a linux machine or to grab all the different software packages from a variety of internet sites. Just download the VMware player and install the preconfigured virtual machine with all the tools you need.
1 March 2007: JTAG debugger pods
A long time ago I ordered the FT2232 chips to build a USB-JTAG interface as used by OpenOCD. Since this is an SMD chip I need to design a PCB for this and as you might guess that is not done yet.
I got a link to Amontec: They deliver the JTAGkey-tiny, also based upon the FT232, for just € 29,- and it will connect to targets running from 2.8V up to 5V. In the future I may need 1.8V target support and for this there is the JTAGkey for € 99,- still farily cheap.
Another solution may be the ARM-USB-OCD from Olimex. For € 69,95 you get a multi-function pod that will provides the JTAG, RS232 and power to your target. But somehow I am not a real Olimex fan ...
15 August 2006: More than Chess
The chess game is now on the support pages of Embedded Artists. I continued with a development system with an lpc2106 QSB connected to the LCD. The LogicPort Logic Analyzer is used to monitor the I²S signals.
The complete 'development system', including logic analyzer, fits in my laptop bag ...
The photo shows the connetions from the LCD towards the lpc2106. The jumper that connects to the RESET line (I placed those at the bottom of the board) is connected to ground. With the LPC2104 in reset all I/O pins are set to high impedance such that the lpc2106 board is in control.
Close-up. From top to bottom: P0.25, P0.6, P0.4 and P0.24. The 180 E resistors convert the 3.3V into 3.1V (the operating voltage of the lpc2104). Gives me the ability to check my large fonts before programming this into flash.
Note: LCD Game boards are still available from Embedded Artists.
3 August 2006: Let's Play Chess
About two weeks ago my LPC2104 Color LCD Game with Bluetooth board from Embedded Artists arrived. This is real summer fun but it was just too hot to do much on this little target.
My favorite demo program to show that these type of targets are serious stuff is a chess game, to be more precise Tom Kerrigan's Simple Chess Program (TSCP), but it uses just too much memory to fit on this board.
On my quest for a smaller chess engine I came across my copy of "usurpator" - a chess game for the 6502 which uses almost 6 kB of memory (for both program and data!!!) and together with the M6502 simulator from Michal Kowalski this fist nicely on the board.
I'm still working on a graphical user interface but when it's complete (somewhere this week) it will be available from the Embedded Artists support pages.
16 December 2005: Quest for JTAG debugger pod
If you are looking for a JTAG debugger, have a look at openocd.berlios.de. This is an open On-Chip Debugger created by Dominic Rath, part of it is an ARM7/ARM9 debugger for his diploma thesis - a very fine description of what is needed to create an ARM7/9 debugger.
He told me it works with a Wiggler type of interface but there is also support for the FTDI FT2232c USB chip. Work on this is still ongoing.
15 December 2005: Prototyping board
The QuickStart Modules from Embedded Artists are now acompanied by a prototyping board. The modules sit on top of this board so you can prototype and program your application and plug it into the final product when finished. A nice board with keys, LEDs, SD/MMC slot and more.
The modules with serial connectors on the side have to be fitted with extra spacers, the DB9 connector overlaps some components on the board. Since I did not like this, I fitted the second DB9 on the board and with a little modification on the solder side you can now fit the module without extra spacers - you will need to remove the DB9 connector from the quickstart module but that's what I have to do for my application anyhow.
There is only one problem, if I need both RS232 ports my standard RS232 cables do not fit. Either use other cables (e.g. flatcables with matching connectors) or cut a piece from the plastic ...
7 October 2005: Quest for JTAG debugger pod
There are lots of debugger pods for the ARM series. There are the Wiggler, the ARM USB CrossConnect or even the Trace32 (often just called the Lauterbach). I don't like the Wiggler, it's depending on the PCs hardware too much and a Trace32 is way to expensive. A CrossConnect would be a fairly cheap solution but alas: It only works with their own debugger ... (and I'm defenitely using both Gnu and RealView).
There is still another solution. Just wiggle the JTAG lines on the lpc21xx using another lpc21xx so I asked around on the lpc2000 yahoo group. Responses - up to now - point to either an parallel port PCMCIA module or products that still bare a TBD stamp.
So I decided to develop my own lpc21xx based wiggler with network interface using my spare 2138/Ethernet board. Photos of my 'development system' are now in my photo album - just one board controlling the JTAG interface of the next.
After a few hours of digging through jtag information and a bit of programming I am now able to wiggle the jtag lines and get some information out of it.
4 October 2005: Prototyping board from Embedded Artists
I just got a mail from Embedded Artists yesterday. They introduced the Quickstart Prototype board.
On this board you can put yout favorite 2106, 2129, 2138 or 2148 board and start prototyping your
application even faster! It has got a bunch of LEDs, some switches and a 7 segment LCD attached to the SPI interface
an SD/MMC slot, a JTAG connector, different options for power supplies and a connector for UART1. Not mounted on th board
are the connectors for CAN and the RS232 circuit for the LPC2106. The board measures approx. 20×12 cm and almost
half of this is the prototype area.
Price of the board is €20,-. Together with an LPC2106 RS232 board €49,- and with the LPC2148 euro;59,- €51,- introduction offer
This just means that I can stop with the efforts for my own development board, this board will do most of the job that I need today.
Today EmbeddedArtists announced the new LPC2148 QuickStart board on their website. At an introduction price of € 41,- this board with USB is a real must-have. Better order more when you visit their web shop.
Delivery time is stated to be around 4 weeks so I still have to wait a bit before I can get my hands dirty when programming the USB of this thing.
Meanwhile I have some time to continue with the development board where these module will be placed on.
Timing is always a point of attention in embedded programs. If you are running a 8051 on 1 Mips or if it's the LPC2106 running alomst 60 Mips, at a moment in time you will meet its limitations. Measuring time critical parts of your code is one way to make sure that the application will not run into timing problems and knowing where timing problems arise may help solve them.
In this series of articles a number of examples will show how you can measure timing without the need for expensive ETM equipment or other external equipment. Part 1 shows how the basic timing measurement using an internal timer is set up, the next part will introduce timing measurements in interrupts.
I'm more and more convinced that the QuickStart Boards are the way to go for rapid development so I requested LPC2138 and LPC2148 QuickStart Boards. I need a better development board that the current breadboard with the LPC2106 QSB so it's time to collect some requirements for the board. Meanwhile I discovered USB Snoop a USB sniffer that logs all communications to the USB hardware under Windows
25 September 2005: In embedded systems it's all about code size
In most embedded devices memory space is limited, the LPC2106 has only 128 kB Flash where the LPC2138 has got 512 (but only 32 kB RAM). Whatever memory size, you will eventually run into its limitations. Therefor you should optimize your code. The LCD test program has a code-size of 7747 bytes and with some easy help you can get this down to 7195 or even 6563 bytes of code.
20 September 2005: Test progam for LPC2106 QSB connected to LCD key
I have to provide some photo's, I needed to test some keys that come with an LCD in the key and needed a test progam for this. Since the 10/100 MBit Ethernet QSB does not provide I2C signals on the connector I used the LPC2106 QSB. The program uses the I2C to communicate with the LCD and PWM2 is used to generate the (negative) LCD contrast voltage.
And - best of all - I started with a DevLib, the PWM module is already in there and the I2C module provided by Embedded Artists is a good candidate.
I've also adapted the startup environment from Embedded Artists to allow downloading of a program to RAM using the bootloader. This is not supported by the standard lpc21isp program, you will need the new version I created (.exe only)
For long I have been wanting to build a bicycle computer that measures and stores data. My Quest, a faired recumbent, also needs indicators. A nice opportunity to combine different functions.
The unit should measure speed, cadance, heartrate, power, contain an LCD and some buttons. All data should be logged into memory, handling of logged data is PC based. Logged data can be stored either in internal SRAM/Flash or on an SD/MMC card. Besides this, all lights should be controlled by the unit as well.
A LPC2106 QSB is the first target for the system, although I am already short on I/O options but taking an LPC2138will not solve the problem: I need multiple PWMs but two PWMs share pins with UART0 and a third is shared with the SPI port for the SD card interface. It's most likely I have to multiplex the IO functions, the UART will never be used at the same time as the front/rear light, either the cadance sensor or the SRM power meter are used so these can use the same GPIO pin and it will be likely that there are more functions that may combine pins. With the option for a parallel LCD all 32 IO pins are used.
16 September 2005: Execute programs from RAM on the LPC2106 QSB
I've been working on some changes in the Flash download program and the startup code provided by Embedded Artists to allow program execution from RAM. This gives a cheap and easy way to quickly test some design ideas when no JTAG debugger is available without wearing out the flash.
Check out the Embedded Artists support pages in the next few weeks for the updates.
15 September 2005: new LPC21xx boards from Embedded Artists
QSB stands for QuickStart Board and it made the promisses come true!
Unpacking the boards from the box they came in, I found a welcome letter with a registration code for support and for each of the boards a CD with valuable information and software: Schematic drawings, datasheets for all components, application notes and software.
After installing the software (and downloading some of the code examples from the website) it's just a matter of typing make and downloading the code to your board to test your first program (you will need to provide a serial cable and 5V supply yourself).
The LPC2106 board does not come with an RS232 port but there are detailed instructions in the QuickStart manual on how to create one. If you do not want to do this, you may opt for the LPC2106 RS232 QSB (39 EUR) that does provide an RS232 driver and connector on board. Maybe I should have bought this one ...
Both boards come with a test program in Flash, just hook the board up to your terminal program, some LEDs to the IO ports on the LPC2106 and a network cable to the ethernet board and you can see the board working.