Friday, March 18, 2011

2011 OpenWorld Design Contest

OpenWorld is an interesting design contest launched this week by STMicroelectronics and a bunch of industrial and research partners. The OpenWorld application design contest is a “technology promotion engaged by the Autonomie project” with as goal the development of “advanced navigation and augmented reality applications to assist the handicapped”.

The contest is based on the EvoPrimer tools that target especially portable applications. On the Embedded World show I saw a nifty extension card for the EvoPrimer that should allow for some pretty impressive personal in-house dead reckoning. The board was not only capable of tracking horizontal movements, but it also measures vertical displacements so it can help track a person going up and down the stairs. With such hardware some cool augmented reality (I should say this more often: augmented reality, augmented reality) applications should be possible.



To enter the contest and win some of the $ 20.000 cash awards you have to submit a proposition on the theme of Technology for Human Assistance. The best application concepts win EvoPrimer tools and enter the second phase to actually transform the concept into a working prototype.

Friday, March 11, 2011

Meet the people behind LPCXpresso

OK, I admit it, I have been talking quite a lot about LPCXpresso lately. Why? Because I like NXP's concept of handing out free tools (did you know that they did it again? Get a board for free just by answering some questions on their website), but I also have become a fan of the little LPC Cortex-M0 and M3 devices. At the Embedded World 2011 show I visited of course the NXP booth and there I was introduced to the brains behind the LPCXpresson concept. My boss, who came with me, always carries a photo camera and immediately took some pictures, so now you too can meet the LPCXpresso team.



On the left we have Jan Jaap Bezemer who tries to sell (or should I say "give away") the NXP microcontrollers. Second from the left, Rob Cosaro, and the man on the right, Joe Yu, are the people that came up with LPCXpresso. A chuckling Rob told me that he was very much amused by the fact that people are indeed cutting of the LPC-Link part of the board, something that was never really intended. Apparently some people cloning the board add a V-groove to make separating the parts easier.

Tuesday, March 8, 2011

Embedded World 2011 - Cortex-M3 everywhere

This year I renewed my visit to the Embedded World show in Nuremburg, Germany. Walking around the four halls that make up this big show it was simply impossible not to notice the ARM Cortex-M3 based controllers all around. Most chip manufacturers showed off boards with Cortex M3 devices, including ARM itself with their mbed board and other dev boards. There were also some Cortex-M4 demo's around from f.i. NXP (LPC4300) and Freescale (Kinetis).

This show was also rich in free kits; especially ST was very generously handing out STM32 and STM8 kits. I did not accept all of them, because I have no idea what to do with ‘em. Yet I did leave with (amongst others) a BeagleBoard-xM (thank you TI!), an FTDI Vinculo that I will review later on this blog and a ZigBee kit from ST. Fujitsu promised me to send me a Cortex-M3 kit by mail, I wonder if it will ever arrive.

Update 18/3: I received today a Fujitsu SK-FM3-100PMC kit, nicely boxed. More about it, hopefully soon, on this blog.

Due to a rather large amount of business meetings I did not see a whole lot of new or exciting things this year. However, I did get a demo of the very impressive new PIC32 compiler from MikroElektronika. These guys are definitely setting the new comfort standards for embedded software development. Wow! I always liked Microsoft’s Visual Studio, but this is way, way better. And the good news is that they are planning an ARM compiler too! At just under $300 (or $200 if you buy a board too) this is a bargain.

While I’m on compilers, Atmel too presented a new one: AVR Studio 5. This is a great tool too, and toujours completely free. V5 brings together AVR Studio 4 and AVR32 Studio into one IDE. It also integrates the AVR Software Framework (ASF) and over 400 example projects that used to be all over their website. Now you just pick your board and then the example that comes closest to what you want to do and off you go.

From the chip front I would like to mention the new ultra low-power 32-bit micro-controller family from Renesas, the RL78. Besides being low-power, this family is also ultra low-dollar. With an operating current of only 70 µA/MHz this is a direct competitor for the MSP430 from TI. But TI told me that they will announce an ultra-ultra-low-power MSP family later this year that will blow away the competition.
Microchip proudly announced their new PIC18F K80 micro. This is an 8-bit device that costs over one dollar, even at high quantities. This nicely illustrates the 8/32 bit paradox, but both Atmel and Microchip expect that the 8-bit market will continue to grow.

That is was not only Cortex-M3 all around proved Digi who had on display their pretty impressive ConnectCore Wi-i.MX51. As Digi's website says: "This module is a highly integrated and future-proof System-on-Module (SoM) solution based on the Freescale i.MX51 application processor with a high performance 600/800 MHz ARM Cortex-A8 core, powerful multimedia capabilities and a complete set of peripherals.".



The kit on the left is running Android, the kit at the right runs Ubuntu.
Digi's latest board, the ConnectCore Wi-i.MX53, was on display at the Freescale stand.
Rabbit 6000 modules are now available too.

Analog Devices showed me their new MEMS gyroscopes that have extremely low drift. So, I guess this is good news for the dead reckoning people.

FTDI presented a rather mysterious device, the FT1248. Although they did make it clear that this device communicates over a 1, 2, 4 or 8 bit wide bus of which the width can be adjusted on the fly, I did not grasp the reason of being of this chip. It is probably very useful or they wouldn’t have spent any time on it, but useful for what exactly? I guess that it is a bus extender of some sort, but I can’t find the data-sheet. Oh well, I am sure someone will figure this out for me.

I really like this show; I can hardly wait for next year.

Thursday, February 24, 2011

Free cup of LPCXpresso!

A bit over two weeks ago I told you how to get a free LPCXpresso board by making a short video or a photograph of how you got rid of your 8/16 bits micro-controller. I suspect/suppose that NXP will honor every participant.

Here is a picture I received from Antoine Broussal. Note how he did the can and the peanuts.



Just to show you that it is not bogus, here is a picture of the board with its accompanying letter that I received this morning by UPS. It is, as I expected, an LPC1114 board.



Denis Xavier wrote me to tell me that his contribution was accepted too, so Denis, you want to share a cup of LPCXpresso code?

The campaign is still running and the submission stream seems to have slowed down a bit, so go give it a shot yourself!

Embedded World 2011 update: NXP ran out of stock. Please be patient.

BTW, while I was writing this, I received a press release from NXP announcing the LPC1200 series. Compared to the other LPC Cortex-M0 devices these new Cortex-M0 controllers offer up to 128 KB of flash memory, DMA, a real-time clock (RTC) and a CRC engine.

Wednesday, February 9, 2011

CodeLite & GDB for ARM

Just after finishing the Elektor article about how to debug the Sceptre (or any other microcontroller that can be debugged over JTAG) using OpenOCD and GDB, I discovered another free IDE that seemed to be good for embedded development: CodeLite. It seemed to have everything needed for this kind of work, so I planned to add a supplement to the article on this blog. I thought that it would be easy to port the setup described in the article to this new IDE, but unfortunately it turned out to be not so. To come straight to the point: I have not succeeded debugging my target using CodeLite with GDB and OpenOCD.

Why? Because CodeLite does not treat GDB well or I am to dumb to figure it out. It seems easy & intuitive enough though. You create a project and then you define a debug setup for the project. You can tell CodeLite where your debugger lives and which commands to execute and CodeLite offers a GDB terminal, so everything is there to make it work. Except that it won't.

There are several issues. One is that it doesn't work always the same way. Sometimes I had to pass through the Quick Debug option to get it more or less going, sometimes this was not necessary. The reset command that I specified to be executed after attaching to the target gets executed several times instead of just once as if CodeLite uses a very short timeout to wait for response and then simply tries again. If it manages to get a connection to OpenOCD it is very difficult to use the GDB terminal that most of the times returns a message "interrupting debugee process: xxxx" where xxxx is a number that corresponds to the PC's process ID of GDB. Very frustrating and in the end I gave up, not succeeding once to execute successfully a step command.

It is a shame, because the IDE is nice. Not as heavy as Eclipse-CDT and easy to set up for embedded software development. It has interesting plugins, like the code formatting option that you can setup the way you like it, or a copyright block inserter. A snippet wizard lets you write quickly and you can hide functions that you don't want to see, it has everything you expect from a modern IDE. Therefore I suggest that you give it a try, maybe you don't care for GDB debugging of embedded platforms, it is definitely worth it.

If by any chance you figure out how to get GDB and OpenOCD working properly in CodeLite, please let me know.

Monday, February 7, 2011

Break the 8/16-bit habit

Most people, including me, like to get stuff for free. Electronic component manufacturers know this and often they offer free samples in the hope that their parts get designed in. Microcontroller manufacturers have started doing design contests and other campaigns to get new users for their products. One of the latests campaigns was launched by NXP for their ARM Cortex-M0 parts.

NXP already did do a design contest (or challenge as they called it) for their LPC1100 parts and now they are giving away LPCXpresso boards that contain a Cortex device. To get one, all you have to do is to show how you plan to stop using 8 and 16-bit devices. You can do this by sending in a picture or a video and if accepted it will be posted here.

Here is the video I sent in.



NXP's website does not mention which LPCXpresso board you will get, but I suppose it will be the board with the LPC1114.

Here are some photos & videos I received in response to this article. Feel free to share your way of breaking the 8/16 bit habit by sending me your photo and/or video and I will put them up here too.



L. Francey prefers to use his obsolete microcontrollers to create arty objects.


Marc will eat anything that has legs.


Jonathan likes Aciiid!


Denis combines his passions for nature and electronics.

Monday, January 17, 2011

Test driving DesignSpark PCB

In the summer of 2010 RS Components launched DesignSpark, an online community for electronics engineers. It is a similar community as Element14 from Farnell that was launched a year before. Like Element14, DesignSpark also offers a free circuit drawing and PCB design tool. Unlike the tool from Farnell that has some limitations - notably board size - the tool from RS is totally unlimited (meaning that there are no artificial limitations). Eagle Freemium, the tool from Farnell, in its free but limited version is allready used by many hobbyists, so would it be interesting for those users to switch to DesignSpark PCB?

Since I have been using (the professional version of) Eagle for a while now, I decided to try out DesignSpark PCB. I installed the latest version, which is 1.0.3. I had no PCB to design so I followed the tutorial that is included with the software. The tutorial is clearly written and pretty straightforward. A circuit diagram is quickly drawn thanks to the many libraries included, but the tutorial only uses some standard parts. If you follow the tutorial closely you will end up with a routed PCB in 45 minutes or so.

I noticed three problems in the tutorial text. The first one is a wrong connector specification. The text mentions a 5WP model, but you need a D9F. The second problem is more serious as I could not find the solution without the help from RS. The tutorial wants you to place a label on a net using the Display Net Name option that is supposed to be available from the right-click context menu, but I did not have this option. Looking through all the menus I could not find it either. The trick is that you have to select the _pin_ of the output symbol, not the symbol itself. The pin is the little cross that disappears as soon as you connect a wire to it. To select it you have to click on the extremity of the symbol. Actually it is much easier to right-click the wire to display the net name.
The third problem was the missing Spoke 10 option for the copper pour. This is a technology file issue, I probably did not load the right one.

I also tried importing an existing Eagle project. DesignSpark PCB includes a few Eagle macros that seem to work rather well, but not 100 %. In the schematic some junction symbols (the dots) were lost. Maybe these were the manually placed junctions in the Eagle file? Texts did not keep their sizes and the outlines of the page frames (or borders as the tutorial calls them) were gone. I also ended up with some labeled wires that were red, but not all.

On the imported PCB the texts not only had the wrong size, but they were rotated incorrectly too. A real problem was the fact that the Eagle project used a copper pour for connecting all the ground connections and these were not recognized by DesignSpark PCB even though the signal pads & vias had the right net names and were in the pour. Autorouting the PCB with or without grid did not solve the problem, and I am stuck at this point.

My quick test drive of DesignSpark PCB showed me that it is a very usable tool of at least the same quality as Eagle, but without the limitations of the Freemium version. I have used quite a lot of different PCB CAD packages and I found DesignSpark PCB easy enough to learn, but this may be different for other people. Switching to DesignSpark PCB may be interesting if you are not afraid of gerber files, because the PCB pooling guys, except for PCB Pool, do not (yet?) support uploading of complete DesignSpark PCB projects as they do for Eagle.

DesignSpark PCB seems a bit more production oriented than Eagle and you have easier control over the BOM. I also found the generation of the fab files easier. The technology files will probably confuse Eagle users (line widths f.i. have to be specified in the technology file first) and data entry is more work as is checking the PCB with all the different reports.

The most important difference between the two tools is definitely the design flow. DesignSpark PCB uses the classic capture-netlist-pcb flow

repeat until finished
{
draw/modify schematic;
generate netlist;
draw/modify PCB;
}

whereas Eagle has this automated. If you delete a part in an Eagle schematic, it is also deleted from the PCB. In DesignSpark PCB you have to initiate the update manually. Both ways of doing have their pros and cons and as long as you are used to it you will stay out of trouble, but if you aren’t, you will be in for some (unpleasant) surprises.

Another difference is in the separation of components and circuits. In Eagle, once you’ve defined a part you can only modify it in the library editor. DesignSpark PCB lets you edit a part up to some extent during capture. You can move pin names and numbers and add fields to parts that would be text comments in Eagle.

Let me finish this article with some remarks about DesignSpark PCB particularities:

Schematic capture
- Setting the component value of parts that do not have the value field is tedious, but can be done without editing the part in the library editor.
- Setting the component value is a bit tedious too as it involves at least two double clicks and two OKs.
- When two nets are merged, you cannot choose the name of the merged net.
- Block dragging is a bit strange and will move wire segments that you probably did not want to move.
- I had grid problems. Wires and parts placed on the grid somehow were moved off the grid, probably after a block move even though I never changed the grid or switched it off.

PCB
- The autorouter is not very powerful. It works with the tutorial, but I could not get a simple circuit to route except for a few wires. It turns out that you have to set the intertrack and track-pad spacings properly in the Design Technology window depending on the component lead pitch to get it going. You may also want to reduce the via size. I finally managed to get a very simple design to complete, but I was not impressed with the result. Then again, I always route manually so I don’t really care about the autorouter.
- You can generate reports for lots of things. These are displayed in Notepad and before you know it you have lots of Notepad windows open. If you rerun a report it will get a new window instead of overwriting the old one.
- Don’t forget to activate the Show nearest node on net if you route manually, otherwise you have absolutely no idea where you are going.
- I liked the single doc PDF that you can produce and that will hold all the plots. You should include the board outline in at least one plot, otherwise the paper size will wrong.
- I also like the plot preview option and the simple checkbox to cover vias with solder resist.
- Nice also is the auto place function to put parts on the board, allthough the result may not be exactly like how you would do things.

Projects
- You cannot rename a sheet? The only way I managed to do this was to save the project in a new location.