Tools

Tools are an important part of a project.   For this project, I will be using either very inexpensive or free tools.  Most chip manufacturers have limited capability software tools.  Usually the limitations are either software size restrictions and or optimization options.  This project is definitely simple enough to work within the code space of most microcontrollers without size optimization.  If I need speed optimization, it will be good to show it done manually here on the blog.

Often Manufacturers sell development kits at or near cost to support developing their products.  These are often great tools to start basic design and especially Hello World projects.


Free integrated development environment(IDE)

Free C compiler

Free Assembler

Integrated programming software

integrated debugging software

Free schematic and layout software

Low cost chip programmer

Solderless breadboard

5v, 3v variable power supply

Low cost development kit (dev kit)

Refinement

The process of design requires refinement.  As development proceeds, the requirements may change depending multiple factors which may include design choices or part availability.


I plan on using JAVA as my programming language on android devices.  If it becomes necessary for performance reasons, I will move to programming in C.  These are the only real choices for development on android devices.  You can run emulators or virtual machines but they usually take a significant performance hit on low power devices.

For the programmer side of the design, I plan on programming in C for most of the design, and assembly language for performance critical pieces.  I will avoid assembly language altogether if possible.

Refinement may require these choices to change, for instance any code written for IOS products must be in objective C.  There may not be a C compiler for the microcontroller I decide on.

Brainstorming

Brainstorming is a good way to get ideas. It’s usefull at the specification stage as well as when the design gets stuck and you can’t figure something out. It’s best to just throw out ideas without judging their usefullness. Although some Ideas may be impossible/impractical, they may lead to other ideas that are a perfect fit for the design.


Design Features:(Brainstorming)

Support all TI, Microchip, Atmel, AMD, Intel, and Cypress programming algorithms. Other manufacturers are possibilities.

Support logic levels from 1.8 v to 12 v Plus +12 v for RS232.

Support programming voltage range from 1.8 v to 24 v

Control logic timing accurate to 0.1 µs

Self contained with rechargable LiPo cell

Micro USB recharging

USB bootloader firmware update

Bluetooth serial as main interface, USB as alternate interface

Standalone mode

Two status LEDs and one tactile pushbutton switch

Open Hardware/Hackable

On board proto area, extra pins for expanding design

 

Research

The process of design requires research. This can be as simple as internet searches or as complex as taking a college class. Research can be as general as looking for or at similar designs or as specific as what wiring pinouts are needed for the design. The completeness of the research needs to be weighed against the time and effort necessary to reach that level of completeness.
Running simulations and building prototypes are often a good level of completeness as long as the design has built in margins around specified results.


A programmer that supports most of devices should have JTAG capability.  From research, I found that JTAG was designed for testing, most systems that have JTAG implement a programming interface as part of the JTAG connections.  I am not expecting to support JTAG testing or debugging, but it might be a possibility.

The Specifcation

The project needs it’s requirements specified.  This is the process of deciding on which features are required, which are important and which are nice to have.  It is usually best to start at the general form and features, then move progressively to the specific details.  Generally cost or market price are considered at this step.

For the design of this universal programmer, I feel that a market target price should be around $50 US.  This is not a hard requirement.  If the price reaches $100 US, I feel too many hobbyists will not be able to justify the cost of purchase.  A common industry standard for cost pricing is market price should be 2.5 times bill of materials (BOM) cost for direct to customer sales and 3.5 times BOM cost if through a reseller.  This means my target BOM cost will be around $20 US.

BOM cost is the cost for all the components that make up a product.  Some businesses include labor cost and some don’t.  For this project I will not include labor cost.

Intellectual Property (IP) licensing also has to be considered.  For most businesses this is decided in policy.  Open source licensing makes sense for this programmer design.  To be universal, it’s going to need to be tested on thousands of different chips.  I am directly familiar with three families of chips.  It is helpful for the programming algorithm developer to already be familiar with the chip. I will be researching and picking a specific hardware and software open source licenses for all IP of this design.  I want this design to be build-able by most of my readers at least in the breadboard stages.


BOM Cost $20 US

Open Source IP for hardware and Software

Research licenses

 

The Project

The first step in any design project is the Idea.  This can be in the form of seeing a need and asking how it can be solved.  It may come in the form of seeing something that you would like to try to do.  It may come in the form of a fusion of emerging technologies.
As an embedded engineer I have percieved a need for a low cost universal programmer for all kinds of embedded processors and memories.  Since just about everyone carries a pretty powerfull computer in their pocket, the physical interface can be very simple.