EmbeddedRelated.com
Forums

Building low-cost MSP-430 based units in bulk

Started by David Collier October 2, 2005
I currently use an MSP430 on a design which sells for $1000, so I
don't 
mind manually sticking in a JTAG cable and using Crossworks to program 
each one.

---------------

But I'm now looking at building a design which would use a very small 
chip ( actually I'd prefer the ATtiny25, but I'm keeping an open mind 
on TI too ) and a couple of transistors on a tiny PCB.

The chips are really cheap, but I don't want to spend double that on 
getting it programmed and tested.

Naturally these would be built in a panel, maybe even 256-off on a 
single PCB.

If I want to I can score just one side of the PCB, and allow connections 
across and between the units while the panel is still whole.

It may be a real help if I can test all 256 units on the big panel 
before breaking them up for installation.

---------------------

What are my options for programming up these 256 chips?

Can I buy them preprogrammed with either my own code, or a bootstrap 
loader?

Can I program many in parallel using a common sequence?

Is it possible for an MSP430 to load it's own code and program itself 
over UART/SPI/something? 
( I might happily go up to a moe expensive chip if by doing so I could 
automate the programming )

I had a mad idea of trying to organise them all into a bucket-brigade, 
so I program the first, then each one programs the one on it's left :-)

David




Beginning Microcontrollers with the MSP430

Hi,

> I currently use an MSP430 on a design which sells
for $1000, 
> so I don't mind manually sticking in a JTAG cable and using 
> Crossworks to program each one.
> 
> ---------------
> 
> But I'm now looking at building a design which would use a 
> very small chip ( actually I'd prefer the ATtiny25, but I'm 
> keeping an open mind on TI too ) and a couple of transistors 
> on a tiny PCB.
> 
> The chips are really cheap, but I don't want to spend double 
> that on getting it programmed and tested.
> 
> Naturally these would be built in a panel, maybe even 256-off 
> on a single PCB.
> 
> If I want to I can score just one side of the PCB, and allow 
> connections across and between the units while the panel is 
> still whole.
> 
> It may be a real help if I can test all 256 units on the big 
> panel before breaking them up for installation.
> 
> ---------------------
> 
> What are my options for programming up these 256 chips?
> 
> Can I buy them preprogrammed with either my own code, or a 
> bootstrap loader?

I believe TI have a service to pre-program devices, but I'm not 100%
sure.  And I doubt they'd offer it in small quantities.

There is, of course, the BSL in ROM.

> Can I program many in parallel using a common
sequence?

You can drive the outputs in common form the JTAG adapter, but TDO needs
to come from each device, hence you would need 256 separate TDO lines.

> Is it possible for an MSP430 to load it's own
code and 
> program itself over UART/SPI/something? 

Of course--once you have some code in there to do it, so chicken and
egg.

> ( I might happily go up to a moe expensive chip if
by doing 
> so I could automate the programming )
> 
> I had a mad idea of trying to organise them all into a 
> bucket-brigade, so I program the first, then each one 
> programs the one on it's left :-)

You still need to get each device indivually programmed in the first
place, so you're no better off are you?  And if one programming
operation fails...?

--
Paul Curtis, Rowley Associates Ltd  http://www.rowley.co.uk
CrossWorks for MSP430, ARM, AVR and now MAXQ processors

Hello David,

> What are my options for programming up these 256
chips?

Here is one idea: Place enough cheap muxes of the 4051 or 4052 type on
the board perimeter. Comes in tiny TSSOP. These would switch to all
the MSP chips, one at a time. After cutting up the board they are
sacrificed. If you have to switch just two lines each it would come to
under 5 cents per MSP in sacrificial parts cost.

You'd have to figure out how to live with their RDSon when using the
serial BSL method. If too high there is always the 74HC version of
them. Mind the pile of capacitances when selecting the programming speed.

> Can I buy them preprogrammed with either my own
code, or a bootstrap 
> loader?

If TI doesn't do it ask your distributor. In the 90's a lot of them
offered that service.

> Can I program many in parallel using a common
sequence?

Maybe, but what if one of them had a dead short on a serial pin?

> I had a mad idea of trying to organise them all
into a bucket-brigade, 
> so I program the first, then each one programs the one on it's left
:-)

Then if number 46 fails you'd have lost the other 210 that were
supposed to follow it ;-)

Regards, Joerg

http://www.analogconsultants.com/



On Sun, 2 Oct 2005 14:51 +0100 (BST), you wrote:

>I currently use an MSP430 on a design which sells
for $1000, so I don't 
>mind manually sticking in a JTAG cable and using Crossworks to program 
>each one.
>
>---------------
>
>But I'm now looking at building a design which would use a very small 
>chip ( actually I'd prefer the ATtiny25, but I'm keeping an open
mind 
>on TI too ) and a couple of transistors on a tiny PCB.
>
>The chips are really cheap, but I don't want to spend double that on 
>getting it programmed and tested.
>
>Naturally these would be built in a panel, maybe even 256-off on a 
>single PCB.
>
>If I want to I can score just one side of the PCB, and allow connections 
>across and between the units while the panel is still whole.
>
>It may be a real help if I can test all 256 units on the big panel 
>before breaking them up for installation.
>
>---------------------
>
>What are my options for programming up these 256 chips?
>
>Can I buy them preprogrammed with either my own code, or a bootstrap 
>loader?
>
>Can I program many in parallel using a common sequence?
>
>Is it possible for an MSP430 to load it's own code and program itself 
>over UART/SPI/something? 
>( I might happily go up to a moe expensive chip if by doing so I could 
>automate the programming )
>
>I had a mad idea of trying to organise them all into a bucket-brigade, 
>so I program the first, then each one programs the one on it's left :-)
>
>David
>

We have several panels that each have multiples (25 and 30) different
products. The boards all get programmed at once, together with testing
and initialising with default parameters, and a report generated with any
faults found. Connections are made to the panel via > 1000 spring 
loaded test pins. The ones we purchased were from PCCP, their website's
an absolute shocker, but don't let that put you off.
http://www.pccp.com.tw

If you've got 256 pcbs to program, that would make the price for the
programming jig very high, principally because of the cost of the pins. Then
there's
the cost of the pcb to provide the interconnections for the pins to the
central controller, and the multiplexing circuitry. If you could reduce the
quantity of pcbs to be programmed at once to 16, that would dramatically
reduce your initial costs, but increase the time to program the full 256 units.

Another method, which I haven't tried, may be to bring the programming
connections to the edge of the pcb, and use an edge connector (perhaps
sacrificial for when it gets worn out) to provide the connections for the 
programming signals. The pcbs get separated from the panel in a stick 
format, and you plug the stick into the programming jig. This has the advantage
that there are no unnecessary loaded components on the pcb to be programmed.
The disadvantage is that wear on the edge connector may reduce connection
reliability, and result in failed programming.

These methods allow you to change the firmware if needed and program
the pcbs as a final stage before assembly into a product. If you get the
chips pre-programmed, this may not be an option. When I was working for
a whitegoods manufacturer years ago, we were using 6805 chips, 
and had to get them mask programmed in quantities of around 15,000 
for production. Naturally the program had to run correctly in all conditions.
Even then, the production line had test jigs to ensure the electronics
operated correctly. We did have to get the masks changed once or twice
with the resulting hair pulling and roaring from management. 

Regards
David


Depending on your mechanical skills (or access to 
to someone with mechanical skills) you could place
your board on an x-y table and step and repeat.
Then you only need one test setup with spring
probes.

Unless you could amortize the work over a few 
more projects or more boards this method would
not be cost effective.

(* jcl *)

--- dmm <dmmilne@dmmi...> wrote:

> On Sun, 2 Oct 2005 14:51 +0100 (BST), you
wrote:
> 
> >I currently use an MSP430 on a design which sells
> for $1000, so I don't 
> >mind manually sticking in a JTAG cable and using
> Crossworks to program 
> >each one.
> >
> >---------------
> >
> >But I'm now looking at building a design which
> would use a very small 
> >chip ( actually I'd prefer the ATtiny25, but I'm
> keeping an open mind 
> >on TI too ) and a couple of transistors on a tiny
> PCB.
> >
> >The chips are really cheap, but I don't want to
> spend double that on 
> >getting it programmed and tested.
> >
> >Naturally these would be built in a panel, maybe
> even 256-off on a 
> >single PCB.
> >
> >If I want to I can score just one side of the PCB,
> and allow connections 
> >across and between the units while the panel is
> still whole.
> >
> >It may be a real help if I can test all 256 units
> on the big panel 
> >before breaking them up for installation.
> >
> >---------------------
> >
> >What are my options for programming up these 256
> chips?
> >
> >Can I buy them preprogrammed with either my own
> code, or a bootstrap 
> >loader?
> >
> >Can I program many in parallel using a common
> sequence?
> >
> >Is it possible for an MSP430 to load it's own code
> and program itself 
> >over UART/SPI/something? 
> >( I might happily go up to a moe expensive chip if
> by doing so I could 
> >automate the programming )
> >
> >I had a mad idea of trying to organise them all
> into a bucket-brigade, 
> >so I program the first, then each one programs the
> one on it's left :-)
> >
> >David
> >
> 
> We have several panels that each have multiples (25
> and 30) different
> products. The boards all get programmed at once,
> together with testing
> and initialising with default parameters, and a
> report generated with any
> faults found. Connections are made to the panel via
> > 1000 spring 
> loaded test pins. The ones we purchased were from
> PCCP, their website's
> an absolute shocker, but don't let that put you off.
> http://www.pccp.com.tw
> 
> If you've got 256 pcbs to program, that would make
> the price for the
> programming jig very high, principally because of
> the cost of the pins. Then there's
> the cost of the pcb to provide the interconnections
> for the pins to the
> central controller, and the multiplexing circuitry.
> If you could reduce the
> quantity of pcbs to be programmed at once to 16,
> that would dramatically
> reduce your initial costs, but increase the time to
> program the full 256 units.
> 
> Another method, which I haven't tried, may be to
> bring the programming
> connections to the edge of the pcb, and use an edge
> connector (perhaps
> sacrificial for when it gets worn out) to provide
> the connections for the 
> programming signals. The pcbs get separated from the
> panel in a stick 
> format, and you plug the stick into the programming
> jig. This has the advantage
> that there are no unnecessary loaded components on
> the pcb to be programmed.
> The disadvantage is that wear on the edge connector
> may reduce connection
> reliability, and result in failed programming.
> 
> These methods allow you to change the firmware if
> needed and program
> the pcbs as a final stage before assembly into a
> product. If you get the
> chips pre-programmed, this may not be an option.
> When I was working for
> a whitegoods manufacturer years ago, we were using
> 6805 chips, 
> and had to get them mask programmed in quantities of
> around 15,000 
> for production. Naturally the program had to run
> correctly in all conditions.
> Even then, the production line had test jigs to
> ensure the electronics
> operated correctly. We did have to get the masks
> changed once or twice
> with the resulting hair pulling and roaring from
> management. 
> 
> Regards
> David
> 
> 




> > Can I buy them preprogrammed with either my own code, or a 
> > bootstrap loader?
> 
> I believe TI have a service to pre-program devices, but I'm not 100%
> sure.  And I doubt they'd offer it in small quantities.


well I'm looking at 35Kpa, which is probably still small by their 
counting ...

> There is, of course, the BSL in ROM.

I guess I need to look that up and decide if it's relevant.
Is it a fixed feature of the chip from manufacture?

> > Can I program many in parallel using a common
sequence?
> 
> You can drive the outputs in common form the JTAG adapter, but TDO 
needs
> to come from each device, hence you would need 256
separate TDO lines.

well a custom jig to pick up order of 256 lines isn't impossible - the 
tracking might be iffy though. As debated elsewhere the key is to use a 
zero-cost connector on the PCB. We've done similar with edge-connectors 
before.

> > Is it possible for an MSP430 to load
it's own code and 
> > program itself over UART/SPI/something? 
> 
> Of course--once you have some code in there to do it, so chicken and
> egg.

which is why I was wondering if buying them pre-programmed was normal, 
it used to be a standard service with PALs, but I don't know if it 
makes sense to try to handle these small objects.

> > I had a mad idea of trying to organise them
all into a 
> > bucket-brigade, so I program the first, then each one 
> > programs the one on it's left :-)
> 
> You still need to get each device indivually programmed in the first
> place, so you're no better off are you?  And if one programming
> operation fails...?

well provided I can see how far it got I can stick it under a 
magnifying glass... 99% of problems will be soldering!

David


that's a really helpful answer. Thank you.

I'm aware that programming strips of 16 in a 16-times-step-and-repeat 
might be the economic option. That would just involve some index holes 
in the PCB at the end of each strip.
or as you say we could break off a strip like a chocolate bar... good 
thought.

When you programmed them in multiples, did you use a custom set-up, or 
a standard adaptor?

I know I'd need some pogo-stick-pads so we could reprogram individual 
ones in an emergency. But the idea is to pot these things into a 
connector housing, so there won't be much scope for doing it again 
after that.

David


> We have several panels that each have multiples
(25 and 30) different
> products. The boards all get programmed at once, together with testing
> and initialising with default parameters, and a report generated with 
> any faults found. Connections are made to the panel via > 1000 spring 
> loaded test pins. The ones we purchased were from PCCP, their
website's
> an absolute shocker, but don't let that put you off.
> http://www.pccp.com.tw
> 
> If you've got 256 pcbs to program, that would make the price for the
> programming jig very high, principally because of the cost of the 
pins. 
> Then there's
> the cost of the pcb to provide the interconnections for the pins to the
> central controller, and the multiplexing circuitry. If you could 
reduce 
> the
> quantity of pcbs to be programmed at once to 16, that would 
dramatically
> reduce your initial costs, but increase the time
to program the full 
> 256 units.
> 
> Another method, which I haven't tried, may be to bring the programming
> connections to the edge of the pcb, and use an edge connector (perhaps
> sacrificial for when it gets worn out) to provide the connections for 
> the programming signals. The pcbs get separated from the panel in a 
> stick format, and you plug the stick into the programming jig. This 
has 
> the advantage
> that there are no unnecessary loaded components on the pcb to be 
> programmed.
> The disadvantage is that wear on the edge connector may reduce 
> connection
> reliability, and result in failed programming.
> 
> These methods allow you to change the firmware if needed and program
> the pcbs as a final stage before assembly into a product. If you get 
the
> chips pre-programmed, this may not be an option.
When I was working for
> a whitegoods manufacturer years ago, we were using 6805 chips, 
> and had to get them mask programmed in quantities of around 15,000 
> for production. Naturally the program had to run correctly in all 
> conditions.
> Even then, the production line had test jigs to ensure the electronics
> operated correctly. We did have to get the masks changed once or twice
> with the resulting hair pulling and roaring from management. 
> 
> Regards
> David


> Hello David,
> 
> > What are my options for programming up these 256 chips?
> 
> Here is one idea: Place enough cheap muxes of the 4051 or 4052 type on
> the board perimeter. Comes in tiny TSSOP. These would switch to all
> the MSP chips, one at a time. After cutting up the board they are
> sacrificed. If you have to switch just two lines each it would come to
> under 5 cents per MSP in sacrificial parts cost.
> 
> You'd have to figure out how to live with their RDSon when using the
> serial BSL method. If too high there is always the 74HC version of
> them. Mind the pile of capacitances when selecting the programming 
> speed.

good idea - though I'd probably stick some edge-connector fingers on 
the board and move the muxes to a fixture
 
> > Can I buy them preprogrammed with either my
own code, or a bootstrap 
> > loader?
> 
> If TI doesn't do it ask your distributor. In the 90's a lot of
them
> offered that service.

it used to cost 20c or so for PALs... now the whole darned CPU isn't 
much more than that :-)

> > Can I program many in parallel using a common
sequence?
> 
> Maybe, but what if one of them had a dead short on a serial pin?

100R in series to help find it?
 
> > I had a mad idea of trying to organise them
all into a 
> > bucket-brigade, so I program the first, then each one programs the 
> > one on it's left :-)
> 
> Then if number 46 fails you'd have lost the other 210 that were
> supposed to follow it ;-)

well I'd have to fix #46, and restart from there, but maybe that would 
be a small price to pay for the gains to be had.

=====================================================
In the end I'm just fascinated that with an ATtiny costing 80c, there 
doesn't appear to be a standard answer to this question.... 

David


If you buy from a distributor then they can supply the devices
prograammed with your code.  I think EBV Electrnik do this and,
competition being what it is, I am sure that the others do as well.

Ian

I have a similar problem and I am thinking if it would not be possible to
program only one of the 250 in the panel and
let IT to program  the next one and this will program the next one and so
on. A serial chain of programming. This implies
to have enough pins on each device to connect to it's neighbor and to have
the necessary algorithm built in.
If you have enough pins on your device like I have (167) you can connect 4-8
in parallel and program them as such

Success,
Alex