This is a monthly series featuring embedded developers of the ARM Connected Community.
Before GPIO, I've been working for a number of different companies where I've soldered PCBs using reflow, wave and hand-soldering (both SMT and leaded boards) - plus I've assembled high-end audio equipment. I've been a software developer since 1983, and have programmed several different kinds of microprocessors and microcontrollers. With GPIO, I mainly design and lay out PCBs, prototype them, test and revise them - on occasion I find myself writing some software and firmware too.
I believe it was the Sinclair ZX Spectrum that caught my attention. I still have it on my desk, right next to me, and it's still in use.
Well, I guess the first design I did for GPIO is the mini game-console, which is capable of running Boulder Dash on a VGA screen. This project was meant as a tutorial for those who want to learn how to make a microcontroller show information on a standard monitor.
I'm afraid it's a product which is not released yet, and unfortunately I can't say much about it. However, it's ARM-based, and it's for developers - but until then, the best product will probably be the breadboard JTAG-module. It's a very simple space-saving adapter that allows the developer to connect a JTAG programming/debug-adapter to a device on the breadboard. The adapter takes care of pull-up and pull-down resistors, so the developer can focus on the fun stuff, and it can also be used with SWD.
A couple of products will be using ARM-based microcontrollers from NXP. Those two products are the major products GPIO will release in the near future. Other products include tools for developers (engineers and hobbyists alike), such as simple space-saving adapters that makes it easier for the developer to quickly wire up a solderless breadboard.
It's all about making the right connections, whether circuits, business or people.
OpenOCD 0.8.0 and JTAG-lock-pick Tiny 2, definitely and both highly recommended tools. Apart from that, I've just ordered a Logic Analyzer, which I expect I will spend some quality-time with.
You'd probably expect me to say "my cell phone". Well no, I don't have a cell phone, nor do I have a tablet. Is a solderless breadboard a gadget? Well, it is probably a small OLED display I bought from buy-display.com; they're quite impressive and works well with a LPC microcontroller.
ARM's Infocenter for getting information on the Cortex-M instruction set and clock-cycles. The ARM Connected Community, LPCware.com and then Texas Instruments for anything top-notch finesse. Then of course, Datasheets and User's Manuals as PDF files downloaded locally, so if the net is down, they're still reachable.
Buy low-cost stuff! If it doesn't work, you didn't lose more than a few pennies. If it works, you'll be grateful for what it can do even though it didn't cost much. For programming, don't rush things, be thorough in writing your code. Make it your object (goal) to find bugs and errors in your code, not to implement new features. Read your code more than once, hunt for bugs, even where it seems there are none. Use precision when you code.
For PCB-layout, know one thing, you will always have at least one error on your first version of a PCB after submission, no matter how many times you've re-checked - but check your PCBs, first on-screen by following each trace, one-by-one and don't cheat. It takes a long time, but it's worth it. Check your hole sizes - are they big enough for the leaded components? Print out your PCB 1:1 and place components on the paper, and check each component type. Yes, these are basics, but they're more important than any other advice I can give. Also assume you will need to modify your PCB. Make extra pin holes and exposed vias, so in an emergency, you can solder some straps or green-wire the board. Make breakable connections in areas you're not completely sure and also make some room for zero-ohm resistors. If possible, make a few options for each PCB and make your boards universal.
JACO. I recommend them, especially for low volumes - they offer good service, at low prices and high quality.
I will be looking into Cortex-A after the Cortex-M products have been launched. Most likely, this will be Cortex-A9 and perhaps a couple of faster models as well.
I've caused a few major changes just by telling large companies what I think they should do. A couple of examples: I caused a large company to manufacture computers in more than one colour. They also adopted a glass-like user-interface, which I suggested them. Years later, I became the reason their logo is no longer upside down - but, all the thanks go to Mr. Gilbert and Steven Glass who took the time to listen.
A while back, I pushed Opera Software into making a Mac version as their previous Mac-team gave up. So I told them, "well, I want that browser, no matter if I have to make it myself." After having pushed Opera Software into this, I had to pull a fellow with me to Norway and we worked there for three and a half years - this was in 1997/1998. When MacOpera started to become a usable browser, I had to leave the company. Easter eggs in Opera were strictly prohibited and I managed to sneak a Space-Invaders game into the browser. The code used less than 1KB memory and was written in C - even my fellow programmer didn't see what I did, until more than a year had passed.
Previously Featured Embedded Developers
Embedded Developer Feature: Paul Beckmann, Founder of DSP Concepts
Embedded Developer Feature: James Langbridge, Author of Professional Embedded ARM Development
Embedded Developer Feature: Colin Walls, Embedded Software Technologist at Mentor Graphics
Embedded Developer Feature: Jacob Beningo, Certified Software Development Professional
Brad, great feature, and Jens, you sound like a very interesting designer. Thanks for sharing your experiences! I particularly like your saying about connections: It's spot on!