Search This Blog

Saturday, 29 September 2007

Getting there...

So the i.MX21 is working fine. Next up is the Multimedia COG...

First thing I tried was the 'touch' example. I used uMon, via Hyperterm, to download the elf and set it up to be executable from the flash memory. Ran it and hay-presto the touchscreen sprang into life :)

Next up I thought I'd try the 'lcd' example. Trouble is I can't get the entire elf transfered via xmodem. The Hyperterm file transfer dialog looks like it sends all of the elf, but the 'tfs ls' only showed ~4kB transfered. Of course trying to run the truncated elf throws up a simple error :(

After removing the lcd file from the flash ('tfs rm lcd') the same thing is happening with the xmodem transfer. I even tried deleting the elf and cleaning the flash 'tfs clean'. Still no joy. Even 'tfs check' says that the files in the flash are OK. Which is strange in that the 4k lcd elf should have at least check sum failed??

So next... I downloaded the HAB Toolkit from the Freescale web site (the i.MX21 variant linked from the wiki, albeit a page hidden in the wiki history). Annoyingly this only allows for setting COM 1-4. The laptop has the Silabs USB to UART mapped to COM5!!! :S And the Device Manager says that COM1-4 are in use.

Gonna take a break and see if the sub-conscious kicks in and throws up something else to try.

As this blog entry comments show, Tarun from VC made a valuable suggestion. I need to have a look further, and see if this could become a common problem or not, but the lcd elf contents was terminating the xmodem transfer :( Adding some additional code to alter the final elf sorted out the transfer problems, and I am able to upload images to the LCD :) Thank you Tarun.

I can't get VC's Booter to work. It's possible that that is suffering from the flow control problem I faced when first getting started?? I'll get in touch with the author and see if problems I face with it can be sorted, and help advance the tool. Although probably after the trip to Egypt next week.

It's Alive!!!

Took a while to get Hyperterm setup, but really pleased that the i.MX21 is working :)

VC have a mistake in their VCMX212.1.pdf document. They say that the baud rate (bps) to use in Hyperterm is 460800:8N1 but this is wrong. The Wiki is correct with the 230400:8N1 They also don't mention turning off flow control. When the baud rate is set right you can see the device starting up, feeding back the uMon start up text, but then with 'Hardware' flow control set (default setting in Hyperterm) you cannot seem to send ASCII characters back to the device.

uMon is working fine, Linux starts up, ready to rock'n'roll :)

Virtual COGs package arrived

What a glorious day. Lewis Hamilton has taken pole position for the Japanese GP. There's rugby on the TV all afternoon. The sun has managed to break up the rain clouds. My belly is full of a big breakfast from the local cafe. And best of all; The Virtual COGs order has turned up this morning :)

Just going to start a magnified examination. They were very well packaged. Initial look seems to show no surface mount components that have fallen off in transit from Canada. If they all look good, I'll spark up the laptop and start playing with them (via USB and JTAG).

In this first picture;
Top row - VC21RB1 Robot COG, VC21BR1 Breakout COG, VCMX212 i.MX21 COG
Bottom row - VCLCD43 LCD with touch screen overlay, VC21MM1 Multimedia COG

Friday, 28 September 2007

CMUcam turret assembly

I've had the CMUcam turret assembly sitting in a box for the last week (ordered from waiting for certain missing tools to turn up. They turned up on Wednesday, but a party last night delayed the initial assembly. I'm also waiting on the CMUcam3 module turning up from Seattle. In the mean time I thought I'd get it built and see what size it built to. The size certainly shows that the Pololu chassis is going to be too small.

Wednesday, 26 September 2007

Random babble

While waiting for the other orders to turn up (been a few more, CMUcam3 module to go with the turret assembly, big order of components/parts/tools, Pololu motor controller) I thought I'd jot down some plans and ideas.

The laptop is now charged with all sorts of dev software. Off the top of my head;
I did download Fedora 7, but had silly problems trying to get it installed on a new partition. So for the time being it's going to be WinXP and Cygwin on the laptop. Which is fine, it's what I'm used to with the Wii and other console/handheld development work over the last few years.

The Olimex JTAG and Pololu chassis are sitting lonely, hopefully the other parts will trickle in over the next week or two. Mind you with the Egypt holiday next week, it's going to be maybe a welcome break to step back and hone the direction a bit.

As for direction :p

Current plan is to get the VC21 modules working together, with precidence on the LCD touch screen working alongside the MX212. With a port of the Irrilicht engine to Linux on the MX212 So firstly looking at how that can be done. Possible need to look at a device driver for the LCD handling, and definetely a custom Irrilicht renderer.

Next up will be setting up the Pololu motor controller. Initially breadboard the device to the chassis, and feed it through to the laptop to get it tested. Naturally with the appropriate HW to make sure I dont fry it with the RS232 levels. Need more thought on this. Being a SW guy an all. Although that's the main reason to get this cheapo laptop, just incase I do muck up :) I won't!!

Then it's the CMUcam3 with turret assembly. Not checked this out further, but should be easier to test with RS232. The cam module has better handling for that than the Pololu part.

And while all that is going on, do further investigation of single and dual camera vision research.

Oh, and a trip to a hardware/DIY outlet to see what materials they have to make a bigger base. Possible to buy something like a tank-track based chassis, but want to check out whether something can be constructed around the two Pololu chassis first. But then that's getting a bit to ahead of myself. First need to determine how sensitive and accurate their movement is first, before constructing a larger platform (think 2x CMUcam3 plus turrets and VC21 stack) for this robot :)

I'll have a good think sitting by the pool next week. But currently in my mind is a vision for this little robot to move around unteathered with the CMUcam3 (eventually x2) having it's live feed pulled back into the MX212, and into the Irrlicht engine for display. Appropriate processing on the feed (with possible inclusion of ultrasonic scanning help) building up a 3D representation of the world, feeding navigation/AI. All output on the LCD :)

Then it's on to Neural Nets and Genetic Programming...

Monday, 24 September 2007

First arrival

The first parts have turned up :)

Pololu have delivered the two Round Robot Chassis. And now I see how tiny they are :S Only took an hour of fun to assemble one of them. I'll keep the other for a spare, or for other robot/sensor experiments.

Sunday, 23 September 2007

Shopping list (part 1)

I recently came across a, relatively, new Canadian company called Virtual Cogs ( Their VC21 series of stackable devices is superb. I'd used ARM processors before in handheld game programming, and always like their chips. So seeing them used on a VC21 stack modules got me thinking about making a robot again.

VC's Robot COG looked perfect as the main HW interface, with the i.MX212 handling the bulk of any SW processing. Throw in the Multimedia COG with touch screen, Linux running on the i.MX212, integrated JTAG, and lots of new avenues open.

So first on the shopping list is;
  • i.MX212 COG (VCMX212) (Actually went for the Starter Kit)
  • Breakout COG (VC21BR1)
  • Multimedia COG (VC21MM1)
  • Robot COG (VC21RB1)
  • JTAG interface (VC21JTAG)
  • Assorted connector cables and mounting hardware
The next step was Pololu's robot kits ( Particularly the Round Robot Chassis. Impetuously I went ahead and ordered the chassis kit, with Tamiya gearbox and assorted plates. Only later reading up on the H-Bridge used in the VC21RB1 :S More on that later.
Plus it was also later that I discovered that I could have bought them from Technobots Ltd here in the UK ( Oh well, another supplier found...

Next up was the JTAG interface. For which I went for the Olimex ( ARM-USB-TINY and ARM-JTAG (as backup, just in case OpenOCD had trouble with the USB varient). Ordered these via Sparkfun Electronics (

Another great find is the CMUCAM2 and, importantly, the pan/tilt turret head and servos. This time I got it from Active-Robot :) ( Only one of these to start with, but I'll grab another further down the line.

Finally, in this first line of purchases, is a cheap laptop from eBay. Took a couple of days to win a good bid, but managed to get an IBM Thinkpad T42 for under £200.

Yay, first purchasing round is complete. Now just need to wait for it all to turn up.

In the mean time I can start at getting together all the development software required...

Friday, 21 September 2007


As the colder autumn months draw closer, I thought it might be time to start a new hobby.

My first job after Uni was working on custom graphics cards (used in commercial and military simulators). This was back in the early '90s, but was a great introduction to low-level software development alongside some great hardware and software engineers. Since then I've been fascinated by hardware and software and built a career around it. Although for the last 10+ years I've been working in the computer/console games industry.

Every now and again I've looked around for off the shelf HW parts to piece together and make some form of robot that could also 'see'. The last few weeks have been fantastic, finding all sorts of evolved HW and SW.

It's finally time to start :)