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.

Best Emulation tool

Other Parts Discussed in Thread: MSP430F5435

There are products that claim to be faster then TI MSP-FET430UIF.  What would be the best choice, So far I know of the following two:

https://www.olimex.com/Products/MSP430/JTAG/MSP430-JTAG-ISO-MK2/

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

Has anyone had some trouble with any? 

Edit: 9/5/2013

If you are using CCS, then the MSP-FET430UIF is still the best choice.  Others need tweaking to make them work.

  • Silver Diamond said:
    What would be the best choice

    Dependson what you mean wiht 'best'? Is 'best' = 'fastest'? Or is 'most compatible' your criteria? Maybe "fastest updates for supporting new MSPs" (here the FETUIF excels). In the field, the wireless Olimex has proven to be the best, even if not the easiest to handle or the fastest.

    It completely depends on your requirements.

  • Silver Diamond said:

    There are products that claim to be faster then TI MSP-FET430UIF.  What would be the best choice, So far I know of the following two:

    https://www.olimex.com/Products/MSP430/JTAG/MSP430-JTAG-ISO-MK2/

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

    If you are looking for fastest MSP430 flashing tool on planet, than this is my SBW+ multi-programer, with writing rate 150 KB/s for MSP430F5xx and 45 KB/s for MSP430F2xx.

    http://forum.43oh.com/topic/2972-sbw-msp430f550x-based-programmer/?p=34353

    But, it is just for flashing with included 4 Mbps USB-UART bridge, not debugging tool.

  • zrno soli said:
    writing rate 150 KB/s for MSP430F5xx

    That's a miracle!
    I just calculated the plain best-case write time on a typical 5x device and it results in maximum 52.6k/s when using block mode. Without any overhead by CPU data transfer or erase. Worst case is only 39.7k.
    Since these timings are hardwired in the 5x family flash controller, you can't write faster even if you ignore the timing restrictions (as you can on the other families).
    Even if assuming the datasheets are all wrong and the write time isn't for a word but for a dword, no more than 105.2k/s are possible. Much less, considering the required erase, the CPU cycles required to detect the end of a write and fetching and writing the next data, and of course the transfer time from the tool to the MSP.

    Or did you mean the FR5xxx devices with FRAM? Here of course no flash write time is required and theoretical maximum write rate to FRAM is 16MB/s.

  • You probably didn't check the posted link, but anyway, I put here the flashing log, and by value on 1A04 (Get Device), you can see that are 2 MSP430F5435 are connected to programer, and MSP430F5435 is not FRAM device. Also you can see that complete time (transfer firmware from PC to programmer, connect to target, erase, flash, verify and disconnect from target) for flashing 192 KB to 4 target devices will be close to 2.6 seconds. Verify is real readout from 4 target devices (not PSA), and if there is something wrong with flashing there will be verify error on the end.

    D:\msp430>flash -f sbw_test_192.txt -e -w -v

    File "sbw_test_192.txt"
    196608 bytes

    Get Device
    Device: 1  JTID: 91  Fuse: OK  1A04: 54 35  1A06: 10 10
    Device: 2  JTID: 91  Fuse: OK  1A04: 54 35  1A06: 10 10

    Erase

    Write
    Address: 05C00  Words: 2942
    Address: 072FC  Words: 2942
    ...
    Address: 32484  Words: 2942
    Address: 33B80  Words: 2942
    Address: 3527C  Words: 1218
    Size: 196608 bytes  Time: 1266 ms  Speed: 151,66 KB/s

    Verify
    Address: 05C00  Words: 98304
    Size: 196608 bytes  Time: 1015 ms  Speed: 189,16 KB/s

    Release Device

    Total Time: 2562 ms

    D:\msp430>

    Everything regarding MSP430F2xx flash is fully explained in slau144 MSP430x2xx Family User's Guide and slaa334 MSP430 Flash Memory Characteristics, but there is no detailed description for MSP430F5xx, and how far it can go, so you must find out things by yourself. Here is my MSP430F5xx datasheet based min/max calculation.

    1 KB ~ 1024 / 128 = 8 blocks

    Min Rate  8 * 65 + (1024 / 4 - 16) * 49 + 8 * 73 = 12864 us ~ 1 KB / 12864 us = 77.74 KB/s
    Max Rate  8 * 49 + (1024 / 4 - 16) * 37 + 8 * 55 = 9712 us ~ 1 KB / 9712 us = 102.97 KB/s

    I will add FRAM support soon, and expecting much higer rate than 150 KB/s.

  • zrno soli said:
    you can see that are 2 MSP430F5435 are connected to programer

    Well, I doubt it is valid to claim the total combined throughput of parallel programming for proving to have the fastest FET.
    Didn't you post a result for 4 parallel MSPs? Why don't you claim the 300kB/s for your FET?
    But then, I can use 20 standard FETs in parallel and be much, much faster.
    Still, programming a single MSP (which is the typical application during development) won't be faster than 75k/s. Which is still an excellent result. Congratulations.

    Personally, I don't see much use in a GANG programmer, unless it allows supervising the attached devices during a burn-in too. The time needed to detach and attach the devices is usually in the same range as the programming time for the previously attached one, so you won't be faster than with a dual programmer that does alternating programming. After all, writing 256kB flash @ 75kB/s takes less than 4 seconds. How fast can you stuff the programmer with new devices?

  • Jens-Michael Gross said:

    Well, I doubt it is valid to claim the total combined throughput of parallel programming for proving to have the fastest FET.
    Didn't you post a result for 4 parallel MSPs? Why don't you claim the 300kB/s for your FET?
    But then, I can use 20 standard FETs in parallel and be much, much faster.
    Still, programming a single MSP (which is the typical application during development) won't be faster than 75k/s. Which is still an excellent result. Congratulations.

    I am engineer, not marketing guy. Displayed write/read rates are per chip, not combo.

  • zrno soli said:
    I am engineer, not marketing guy. Displayed write/read rates are per chip, not combo.

    Well, it was you who claimed 150kB/s while the maximum theoretical flash write speed is 102kB/s (as you also calculated yourself in the linked thread), no matter how fast the JTAG and code are.

    Apparently you are a marketing guy too, and didn't know until now :)

    Or your timing or calculation is inaccurate. You simply cannot write faster than the flash controller does. Which is nowhere near 150kB/s. Sorry, but I fear you've fallen victim to some fallacy.

    In a different thread someone wondered why he can write so much faster to an SD card when he's alternating teh SD card write withe some other action. He was jsut counting the time it takes to write thedata to the card, but dodn't take into account that the flash controller ont he card uses the tiem he does soemthing else for the actual write operation. So without the other action, the code had to busy-wait for the SD card before the next block could be written. And the write time appeared higher. But it wasn't.

    Similarly, what does your program report when you only have one MSP attached and do not interleave two write operations to separate MSPs?

  • Jens-Michael Gross said:

    Well, it was you who claimed 150kB/s while the maximum theoretical flash write speed is 102kB/s (as you also calculated yourself in the linked thread), no matter how fast the JTAG and code are.

    Apparently you are a marketing guy too, and didn't know until now :)

    Or your timing or calculation is inaccurate. You simply cannot write faster than the flash controller does. Which is nowhere near 150kB/s. Sorry, but I fear you've fallen victim to some fallacy.

    Similarly, what does your program report when you only have one MSP attached and do not interleave two write operations to separate MSPs?

    Maximum theoretical writing speed per datasheet for MSP430F2xx is around 50 KB/s, and it is not able to go over this value. Maximum theoretical writing speed per datasheet for MSP430F5xx is around 100 KB/s, but it is able to go over this value (ask TI how it is possible, not me). If you try to go faster than flash controller can do, flashing will failed (verify error). I done my first SBW programmer (for MSP430F2xx, UART connection to PC) few years ago, and on this one (for all MSP430 SBW devices, USB connection to PC) I am working (free time) 6 months. It is based on extremely fast USB stack, that is working (almost) completely in parallel with SBW code execution. Frequency on SBW bus is not going over 8 MHz, and one extra pin on target (P1.0) is used for hi-speed data transfer (programmer/targets). I made it as multi-programmer, just to show that gang-programing is not rocket science, but it can be used with only one target as any ICSP tool. During development, for testing I am using test files with pattern and included P1.0 LED blink example. Verify is reading memory from all 4 devices with 200 KB/s (800 KB/s total) and sending all data to PC. On PC is done comparison of original file and read contest. When flashing is faild, application on PC side will report this, with target device number, address, and values (expected and what was received). Displayed write/read rates are per device, and they will not change with changing number of devices. Writing to MSP430F2xx is around 45 KB/s and to MSP430F5xx is around 150 KB/s with continued flash file. I already posted link to forum thread, and if something is not clear to you (or somebody else), we can discuss it there.

    D:\msp430>flash -f sbw_test_56.hex -e -w -v

    File "sbw_test_56.hex"
    57088 bytes

    Get Device
    Device: 1  JTID: 89  Fuse: OK  0FF0: 29 55  0FFD: 01 00

    Erase

    Write
    Address: 02100  Words: 2014
    Address: 030BC  Words: 2014
    Address: 04078  Words: 2014
    Address: 05034  Words: 2014
    Address: 05FF0  Words: 2014
    Address: 06FAC  Words: 2014
    Address: 07F68  Words: 2014
    Address: 08F24  Words: 2014
    Address: 09EE0  Words: 2014
    Address: 0AE9C  Words: 2014
    Address: 0BE58  Words: 2014
    Address: 0CE14  Words: 2014
    Address: 0DDD0  Words: 2014
    Address: 0ED8C  Words: 2014
    Address: 0FD48  Words: 348
    Size: 57088 bytes  Time: 1219 ms  Speed: 45,73 KB/s

    Verify
    Address: 02100  Words: 28544
    Size: 57088 bytes  Time: 281 ms  Speed: 198,40 KB/s

    Release Device

    Total Time: 1703 ms

    D:\msp430>

  • Jens-Michael Gross said:

    What would be the best choice

    Dependson what you mean wiht 'best'? Is 'best' = 'fastest'? Or is 'most compatible' your criteria? Maybe "fastest updates for supporting new MSPs" (here the FETUIF excels). In the field, the wireless Olimex has proven to be the best, even if not the easiest to handle or the fastest.

    It completely depends on your requirements.

    [/quote]

    My criteria is robustness but speed is bonus.  Had some problems with the FETUIF.

  • zrno soli said:
    Writing to MSP430F2xx is around 45 KB/s and to MSP430F5xx is around 150 KB/s with continued flash file.

    Do you meet specified flash retention time too? In whole temperature range? - Perhaps immediately after such "out of spec" programming flash is (barely) OK but after one year  (let's say after shorter than expected time) - not anymore.

    Jens-Michael Gross said:
    Personally, I don't see much use in a GANG programmer

    I see indeed. In mass-manufacturing. For PCB manufacturer which wants to flash whole panel of boards to run diagnostics.

  • Ilmars said:

    Do you meet specified flash retention time too? In whole temperature range? - Perhaps immediately after such "out of spec" programming flash is (barely) OK but after one year  (let's say after shorter than expected time) - not anymore.

    Programmer is based on MSP430F550x, and after enumeration it will be visible as composite CDC+CDC device on PC side (another CDC port is used for 4 Mbps USB-UART bridge). Flash program on PC side is Free Pascal application, that will be able to compile and run on any OS. During development I am working on Win XP SP2. PC side is using just standard COM interface for exchanging PC/programmer information. PC side send command (max size 5.75 KB at once) to programmer, and after job is done programmer respond to PC side, and after this, PC side send another command, and so on. Just to be more clear about displayed write/read rates:

    First line in main function is GTime1 := GetTickCount;

    Last lines in main function are GTime2 := GetTickCount; WriteLn('Total Time: ' + IntToStr(GTime2 - GTime1) + ' ms');

    First line in write/read functions is  FTime1 := GetTickCount;

    Last lines in write/read function are

      FTime2 := GetTickCount;
      FStr := 'Size: ' + IntToStr(FMemLen) + ' bytes' + '  Time: ' + IntToStr(FTime2 - FTime1) + ' ms';
      if FTime2 > FTime1 then
        FStr := FStr + '  Speed: ' + FloatToStrF((FMemLen * 1000) / (1024 * (FTime2 - FTime1)), ffNumber, 18, 2) + ' KB/s';
      WriteLn(FStr);

    Rates calculation is based on flash file size, and elapsed time. It is not related to number of target devices, and it will be the same, if there is 1 connected target to programmer or 4 connected targets to programmer.

    My programmer is not "out of spec". Again, if you want to know more about MSP430F5xx flash possibilities, ask TI, not me, because there are not full description in datasheet. On other side, there is no such need to publish this (in datasheet) because TI/Elprotronic (reliable and the fastest programmer on the market) is not able to go over 35 KB/s (also with FRAM and target flash stored in programmer!).

    MSP430x2xx flash is limited with 476 kHz clock rate, and if you go faster (I tried) flashing will fail.  My programer following BUSY/WAIT bits during flashing MSP430x2xx targets. MSP430F5xx have internal clock, and it is not possible to change it. When I was working during development with only one MSP430F5xx target I was using BUSY/WAIT bits also, and was going over 100 KB/s. Unfortunately, MSP430F5xx flash have internal clock source with tolerance, and during flashing more than 1 targets, synchronization between targets with my SBW+ interface will be lost. So instead of BUSY/WAIT bits, I am using (constant) calculated time intervals, that are equal to highest BUSY/WAIT periods on different MSP430F5xx targets (that I have).

    I never had any programming tool for MSP430, except my own. Started with BSL (http://e2e.ti.com/support/microcontrollers/msp430/f/166/p/263479/922578.aspx#922578) and later switched to SBW. During SBW+ development, I am also using last stable version of SBW+ for flashing. Flashing is sensitive thing. If you go just little over the border, process will fail for sure. Don't know what will be with target flash after one year, because I didn't tried it yet.


  • zrno soli said:
    My programmer is not "out of spec".

    If it writes faster than the datasheet tells, it definitely is. The question is whether it is your fault or whether the datasheet is wrong. And whether it is harmfull or not.

    As already said, a working verify doesn't tell whether the written data will last the specified retention period.

    If you want to be sure, use the marginal read mode for verify, which is available for 5x family.

    Also,your verify speed isn't much faster than the write speed. But It should be. By more than a magnitude.

    zrno soli said:
    here is no such need to publish this (in datasheet) because TI/Elprotronic (reliable and the fastest programmer on the market) is not able to go over 35 KB/s

    The overall speed doesn't give any clue about the timing during a byte write. Even though they may have a slow data transfer to the MSP, the writing itself may still be out of specs.
    The TI FET doesn't receive USB-Speed data. It receives JTAG commands thorugh a serial connection. So communication between MSP and FET is limited to 100kB/s.(without the time for executing the JTAG access to the target). However, after receiving a write command, the block wirite iself can be performed much faster than the overall writing speed seems to indicate.

    zrno soli said:
    Unfortunately, MSP430F5xx flash have internal clock source with tolerance, and during flashing more than 1 targets, synchronization between targets with my SBW+ interface will be lost.

    Usually, the JTAG injects a small code snippet and the data to writ einto ram. Then executes the code in ram and waits until the code is done (hits a breakpoint at the end). This would obey the busy bit and still you could do the plain transfer (to ram) synchronized (just the test for done would have to be on individual basis).

    zrno soli said:
    Flashing is sensitive thing. If you go just little over the border, process will fail for sure. Don't know what will be with target flash after one year, because I didn't tried it yet.

    Between success and failure, as it can be seen immediately, lies a wide field of partially but yet invisible failure. If you want to offer your work (which is impressive, independent of the doubts I have about its long-time reliability) to others, then this is something you'll have to know. And to guarantee.

    You may do a loong-time test by putting the MSP into a climate chamber to speed up aging. If Data retention is specified for 100 years25°C, then storing the MSPs for one month at 100°C or so may give you a clue (after all, TI didn't wait for 100 years before writing this in the datasheet. Aging by increased temperature is a common practice and there are official tables what acceleration can beassumed for which temperature difference, and other environment modifications).

  • Jens-Michael Gross said:

    As already said, a working verify doesn't tell whether the written data will last the specified retention period.

    If you want to be sure, use the marginal read mode for verify, which is available for 5x family.

    There is option now, to check target flash with marginal read. First CRC value is calculated on file by PC side, and MR0/MR1 are CRC results from marginal read on target device.

    D:\msp430>flash -f sbw_test_192.txt -e -w -mr

    File "sbw_test_192.txt"
    196608 bytes

    Get Device
    Device: 1  JTID: 91  Fuse: OK  1A04: 54 35  1A06: 10 10
    Device: 2  JTID: 91  Fuse: OK  1A04: 54 35  1A06: 10 10

    Erase

    Write
    Address: 05C00  Words: 2942
    Address: 072FC  Words: 2942
    ...
    Address: 33B80  Words: 2942
    Address: 3527C  Words: 1218
    Size: 196608 bytes  Time: 1265 ms  Speed: 151,78 KB/s

    Marginal Read
    Address: 05C00  Words: 98304
    File: C5CD  Device: 1  MR0: C5CD  MR1: C5CD
    File: C5CD  Device: 2  MR0: C5CD  MR1: C5CD
    Size: 196608 bytes  Time: 2766 ms  Speed: 69,41 KB/s

    Release Device

    Total Time: 4281 ms

    D:\msp430>

    Jens-Michael Gross said:

    Also,your verify speed isn't much faster than the write speed. But It should be. By more than a magnitude.

    During write operation programmer sending same block of data to all target devices in parallel. There is limitation 150 KB/s due to maximum possible (BUSY/WAIT) flashing rate. Another limitation is due to my SBW+ interface itself (and this value I will know after adding MSP430FR5xx support).

    During reading (using for verify) programmer receiving different data from all target devices in parallel. There is limitation 800 KB/s (4 devices at 200 KB/s) due to CDC (MSP430/WinXP). Another limitation is due to my SBW+ interface itself and it is around 250 KB/s per device.

    For example, if in future I decide to support 8 devices, writing speed will not changed (maybe few KB down), but reading will go down to 100 KB/s.

    Jens-Michael Gross said:

    The overall speed doesn't give any clue about the timing during a byte write. Even though they may have a slow data transfer to the MSP, the writing itself may still be out of specs.
    The TI FET doesn't receive USB-Speed data. It receives JTAG commands thorugh a serial connection. So communication between MSP and FET is limited to 100kB/s.(without the time for executing the JTAG access to the target). However, after receiving a write command, the block wirite iself can be performed much faster than the overall writing speed seems to indicate.

    Elprotronic/TI MSP Gang benchmark results are documented in slau358 on pages 46/47. Part is displayed here.

    All benchmark results (displayed here) are for "from image" flashing, when target firmware is stored in programmer (programming without any data transfer with PC), and there is seperate programming (writing) speed that I used as reference during development of my programmer. Max writing rate for MSP430F2xx is 16.2 KB/s, for MSP430F5xx 31 KB/s and for MSP430FR5xx 35 KB/s. Verify is fast because it is based on PSA that will inform you about flashing error, but without bad memory location/value as result.

**Attention** This is a public forum