This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Programming Stellaris parts before assembly

I want to program Stellaris microcontrollers before assembling them on circuit boards.  I have not been successful, so far, in finding a commercial programmer, or in finding zero insertion force sockets for LQFP parts (to build my own programmer).  Are such programmers or sockets available?

The parts that I am currently interested in pre-rogramming are LM3S101, LM4F231 & LM3S9D90.

Thanks,

Dennis

  • We've done this - Emulation Technology makes such sockets.  Don't recommend however:

    a) extra handling - exposure to ESD events

    b) even if your code & programming is perfect - client may seek changes/additions etc.  Then what - you're forced to employ standard/preferable "in situ" method.

    c) we/others often employ several programs - in sequence - to better & more completely test the assembled pcb.  You lose this sequencing ability with pre-program method

    Does your justification for your proposed method answer any of these points?  You are flying far from mainstream - recommendation is that you reconsider...

  • Thank you for the response.

    A little explanation -

    a) We're cognizant of that risk.  Appreciate the heads up.

    b) What we intend to program in the higher end parts is a USB boot program.  The actual functional program is designed for future "in situ" updates.  With the LM3S101, we designed the board to use the on chip oscillator - then discovered the JTAG port won't operate with the internal oscillator until it is reprogrammed - a Catch-22.

    c) We fully intend to sequence things.  We need some place to start.  We don't use any serial ports, so the built in boot loader is not available.  An SPI port is available on some boards.  I think I've seen reference to a ROM boot loader over I2C or SPI, but have not explored.

    Thanks,

    Dennis

  • There are some third parties that will do programming for you.  Here is one (search under both Luminary Micro and Texas Instruments):

    http://www.bpmicro.com/

    The '9D90 part that you are using does have a ROM boot loader that allows programming through SPI.

    The '101 part comes with a "serial flash loader" in flash that can be used for one-time programming in production via serial port (the '101 does not have ROM).

    Here is an idea, is there any way to set up your boards so that the serial lines go to some connector or test point, and then you can use an off-board jig that connects to it in production that will allow for one-time use of the serial port for the first load?  And then in normal use those signals are not used for serial.

  • Ai Carumba - while this reporter admires and is indebted to Stellaris Joe (and Dave W) this advice is fraught w/peril... 

    Stellaris Joe said:
    will allow for one-time use of the serial port

    Deal breaker here is "one-time" use - such choice is similar to, "le premier classe" upon SS Titanic.  Don't do it!  Client will demand change - you will "discover" better methods - and your early-on decision will endlessly torment you.  (ask how I know!) 

    Better alternative - provide a mini, 10 pin, 0.050" pitch JTAG header and utilize JTAG or SWD.  (2 pin saving)  Decade ago we designed small, inexpensive MCU board (pre-ARM) to employ JTAG to program our FPGAs "in situ" - your code format can be proprietary (helping to secure) and this small board can update your "proper/JTAG equipped" MCU board without limit...

    Would you believe there's more?  What's your business case for 3S101?   Historically we started with ARM7 (pre LMI) and then tried 3S102 as 1st Stellaris.  However - those past 28 pin soic MCUs have migrated into 48 pin packaging - with "world class" (not!) pin/package efficiencies - and not especially attractive pricing.  Strongly suggest that you choose instead a 3S3xx or 3S6xx - much better pin/package efficiencies and extended functionality - and surprisingly may be lower cost.  Surely more available.  Hard to justify the "long in the tooth" - relatively uninspired 3S101 - cause you such hardship...

     

  • Thank you Joe & CB1,

    For the higher order processors, we've rethought.  We do have a JTAG connector designed into every board.  We just didn't want to have the expense of populating it in production (plus some mechanical issues with the package on one product).  We're going to try to implement using a simple header board with a JTAG  connection to the production boards using a spring loaded connector commonly used in PCB test applications.  We'll see how that works.  It may take a few weeks to try, since its not the highest priority task right now.

    The 3S101 issue is one of extreme frustration.  We originally designed to use the 28 pin package, documented and advertised by TI.  When we got ready to use it, we were told that that package was going away.  Next we designed with the 48 pin package with the multitude of wasted pins you've mentioned.  Since this is for simple IO boards that are price sensitive, but not speed sensitive, we designed to use the on board oscillator, documented by TI to be available.  When we built the boards & attached the JTAG emulator, we discovered that the chip does not work without a crystal until reprogrammed - and it can't be reprogrammed without a crystal.  Two board spins, thousands of wasted dollars, lots of wasted time & we have to redesign again.  We won't be using the 3S101.  Despite all of this, we still really like the Stellaris line.  I'm just wary of LM3 parts and will look more to the LM4 offering.

    Thanks,

    Dennis

  • I'm sorry for your bad experience with the '101.  The datasheet does show that the default oscillator is the main (external oscillator), but I admit if you look at data sheets of our newer parts, which do boot on the internal oscillator, that you might assume that the older parts works the same way.

  • @cb1, all I meant by one-time programmable is that there is a loader in flash from the factory that is meant to allow the customer to load the flash with their own program via the serial interface (don't need to hook up JTAG).  The customer may very well make that program their own, more capable boot loader to allow field updates.  I didn't mean that you could never load anything else into the part again.

  • @Stellaris Joe-  This then is a much improved description than first provided.  "One-Time" (for those of us who've long used OTP MCUs) has a very chilling impact - beware!

    Thanks for this clarification.