Jump to content
Sign in to follow this  
Optronik

Semi production in-circuit programming

Recommended Posts

I used to work with AVR a lot and are now converting some projects to MSP430.

 

On the AVR I used a software called AVRdude together with a simple parallel port interface. A hex file was loaded into the tool which is programmed to the controller soldered into the target application. Also fuse bit's could be set, flash memory erased and checksums verified. This worked very efficient. 50 controllers could be programmed in less than an hour, AVRdude was running from the command line and working in batch-mode.

 

Now on the MSP430 (in particular G2553) I am wondering if a similar tool/toolchain exists? I currently use CCS to program but that is far too slow in a semi production environment. I could imagine to use the launchpad to create the programming interface that connects to the PCB with the target controller. However, what programming tool similar to AVRdude is supporting this?

Share this post


Link to post
Share on other sites

TI's MSP-FET is the tool, and mspdebug is an open source tool for programming. It needs the MSP430.dll to work with the FET.

 

Additionally TI has an msp430 flasher CLI program under Windows. Lastly, the MSP-GANG tool lets you do production programming to multiple devices at once.

Share this post


Link to post
Share on other sites

Thanks for pointing me to the MSPdebug. It looks like that works also with the Launchpad as programming hardware. Need to investigate this further. MSP-FET is to expensive since in some cases I want to give a programmer to a customer.

Share this post


Link to post
Share on other sites
On the AVR I used a software called AVRdude together with a simple parallel port interface. A hex file was loaded into the tool which is programmed to the controller soldered into the target application. Also fuse bit's could be set, flash memory erased and checksums verified. This worked very efficient. 50 controllers could be programmed in less than an hour, AVRdude was running from the command line and working in batch-mode.

 

Flashing 50 controllers in less then hour is not very efficient, at least flashing MSP430 because of highest flashing rates in micro world (MSP430x2xx up to 50 KByte/s and MSP430x5xx/6xx up to 100 / 200 KByte/s). It is possible to go with 8 controllers under minute (including connection / disconnection, and drinking coffee), if time is critical.

 

If you are looking for low cost solution, new MSP430 launchpads (for example MSP430F5529 LP) are faster than older, with open software / hardware, and support for almost all target MSP430 devices. There are also SBW / JTAG open source software tools with batch-mode possibility.

 

Another option is open source BSL, based on UART, using just 3V voltage level translator for connection to PC, MAX323 like chip. If request is low cost and high speed, chip with multiple CDC - 3V UART bridges can be used for programing more target devices in parallel.

Share this post


Link to post
Share on other sites

If you are looking for low cost solution, new MSP430 launchpads (for example MSP430F5529 LP) are faster than older, with open software / hardware, and support for almost all target MSP430 devices. There are also SBW / JTAG open source software tools with batch-mode possibility.

 

I would recommend the MSP430F5529 launch pad for programming, you could design a simple cable to connect to the dual row of pin headers. The programmer/debugger (TI call a Flash Emulation Tool) on these baord is open source, it's known as the ezFET lite. TI have source code and schematics avaliable online. The BOM is quite low also. If you're engineering costs and unit costs permit, you could add a programmer/debugger directly on the board.

 

 

Also worth noting that if you would like your device to be end-user upgradable you could investigate the MSP430's self programming ablilities. Particularly if your device already includes some sort of computer connection or removable media (thinking SD card). You could write a bootloader to effectivly give your users the ablity of firmware upgrades without any additional unit costs.

Share this post


Link to post
Share on other sites

There's a free programmer / loader I found.    See below.

It seems very nice, I used it a few times to save raw binary files, inspect / erase flash, etcetera.

 

As I'm working primarily with LPs and single quantity projects, I don't use that tool.  

 

 

Maybe this is something for you :

 

FET-PRO430 lite (free)

 

http://www.elprotronic.com/download.html

 

 

O

Share this post


Link to post
Share on other sites

+1 for the FET-PRO430 lite software.

 

I've used it in a production environment along with a G2 LaunchPad and it performed reliably.

Share this post


Link to post
Share on other sites

I am also entering a "semi-production" phase and have few questions:

1. What is the least expensive gadget to blow the security fuse in G2 series ? Is there anything cheaper than TI MSP-FET ?

2. Do I need full JTAG access to blow the fuse ? (the PCB is small and fitting the standard 14pin connector is difficult)

3. User firmware upgrade via BSL seem to require toggling RST/TEST lines in a certain sequence. It seems that one needs more than a plain USB-UART thingy to trigger BSL ?

 

edit-

From reading slau320 it appears that it is possible to blow the poly fuse using only SBW pins (SBWTCK being a dual function pin in this case). I wonder if anyone has done a standalone code to bit-bang "IR_PREPARE_BLOW"/IR_EX_BLOW SBW commands and then set a pin to control the SBWTCK line routing. Any launchpad can be used for this, the only extra hardware required are a 6v power supply and a SPDT relay (electronic or mechanical) for the external target SBWTCK line.

Share this post


Link to post
Share on other sites

I am also entering a "semi-production" phase and have few questions:

1. What is the least expensive gadget to blow the security fuse in G2 series ? Is there anything cheaper than TI MSP-FET ?

2. Do I need full JTAG access to blow the fuse ? (the PCB is small and fitting the standard 14pin connector is difficult)

3. User firmware upgrade via BSL seem to require toggling RST/TEST lines in a certain sequence. It seems that one needs more than a plain USB-UART thingy to trigger BSL ?

 

edit-

From reading slau320 it appears that it is possible to blow the poly fuse using only SBW pins (SBWTCK being a dual function pin in this case). I wonder if anyone has done a standalone code to bit-bang "IR_PREPARE_BLOW"/IR_EX_BLOW SBW commands and then set a pin to control the SBWTCK line routing. Any launchpad can be used for this, the only extra hardware required are a 6v power supply and a SPDT relay (electronic or mechanical) for the external target SBWTCK line.

 

As an off the shelf product, not that I'm aware.

Any programmer capable would likely be at a similar price point to the MSP-FET.

 

But you are absolutely right. you could easily create a tool solely for the purpose of blowing the JTAG fuse. it would need to send a few SBW commands to get into fuse blow mode. then apply the 6-7v @ 100mA on the SBWTCK pin of your target device.

Share this post


Link to post
Share on other sites

An older FET430UIF might be had used for cheaper off ebay. Be sure you include the 330R resistor in the right place of the circuit to protect the FET (either FET430UIF or MSP-FET).

 

Sent from my Galaxy Note II with Tapatalk 4

Share this post


Link to post
Share on other sites

I am also entering a "semi-production" phase and have few questions:

1. What is the least expensive gadget to blow the security fuse in G2 series ? Is there anything cheaper than TI MSP-FET ?

2. Do I need full JTAG access to blow the fuse ? (the PCB is small and fitting the standard 14pin connector is difficult)

3. User firmware upgrade via BSL seem to require toggling RST/TEST lines in a certain sequence. It seems that one needs more than a plain USB-UART thingy to trigger BSL ?

 

edit-

From reading slau320 it appears that it is possible to blow the poly fuse using only SBW pins (SBWTCK being a dual function pin in this case). I wonder if anyone has done a standalone code to bit-bang "IR_PREPARE_BLOW"/IR_EX_BLOW SBW commands and then set a pin to control the SBWTCK line routing. Any launchpad can be used for this, the only extra hardware required are a 6v power supply and a SPDT relay (electronic or mechanical) for the external target SBWTCK line.

 

1. You can check Olimex MSP430 tools.

2. Fuse can be blown by SBW with VPP voltage applied to TEST pin, no need for full JTAG.

3. RX / TX are not enough for UART BSL. There are must be 2 more lines (DTR / RTS) for TEST / RESET control, and this can be done by USB / UART bridges.

 

AFAIK, there is no LP based standalone solution for fuse blow, but it can be done for sure. It is better (small size / cheaper) to use NPN / P-MOSFET combination like on slau320 schematic for applying VPP to TEST pin, than any relay.

Share this post


Link to post
Share on other sites

I think I should be able to build a "fuse blower" re-using some code from LowLevelFunc430.c (slau320q.zip). Then the emulator portion of a LP can be used as a programmer and the LP target as a dedicated fuse blower for external targets. I am not going to spend much time on this, if it works right away - I'll post the code, if not - I'll get the FET (old or new).

 

Regarding the user firmware upgrade options. I want it to work with any generic USB UART with no dedicated pins (like cheap ebay dongles). Plus I want to add simple firmware encryption. Hence I think I'll avoid the built-in BSL altogether (locking it with random interrupt vector table) and write an updater as part of the main firmware. Instead of using bulk erase the updater will simply erase/write individual flash pages and the updater itself will not be part of the firmware distribution.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×