NoICE for the MSP430 is available for download from https://www.noicedebugger.com. However, development of this program was funded by Imagecraft, and the registered version may only be purchased from them.
NoICE for the MSP430 may be used with the MSP430's built-in JTAG debug support or with the MSP430 simulator. Because the classic NoICE serial monitor assumes code in RAM, and commonly available MSP430 processors do not allow external RAM, use of the NoICE serial monitor is not recommended.
NoICE supports the JTAG interface to the MSP430 family using
The JTAG interface permits programming the on-board Flash, and debugging using the hardware breakpoints built into the processor.
There are many flavors of MSP430, and Texas Instruments comes out with more all the time. NoICE relies on a TI-supplied DLL to support the flavors. As new variations come out, the DLL will need to be updated.
You can get a list of the flavors supported by your installation by opening the Target Communications Dialog, and pressing the "Supported Targets" button, even if you do not have a JTAG pod attached. If you have any problems, or questions about a specific target, please Contact us.
Each type of MSP430 contains registers that identify the type of processor. NoICE reads this information and determines the appropriate configuration. We have seen a few cases where early prototype chips have been released that do not contain proper identification information. If you have any problems with a specific target, please Contact us.
Before you can use NoICE with your JTAG pod, you must install the appropriate driver.
If your pod is from a vendor other than TI, you should install the driver that came with the pod, or visit the vendor's web site to get the most recent driver.
If you are using a TI pod, and you have previously installed the IAR QuickStart, or other software that uses the pod, the appropriate driver should be installed already. If not, check the CD that came with the pod for an appropriate driver. If you do not have the CD, or cannot find the driver, follow the instructions below.
NoICE includes the current drivers for these pods in your NoICE\drivers directory. To install the driver, plug the pod into a USB port. When the "Found New Hardware" dialog appears, click on "have disk" or "select driver location." Then browse to your NoICE\drivers directory and select "Install."
NoICE includes the current driver for these pods in your NoICE\drivers directory. This driver must be installed manually. Simply run (with administator rights) the program InstallFET430PIF.exe, found in the NoICE\drivers directory. The initial screen will show whether or not the driver is installed and running.
If the driver is not running, click on "Install" to install it. If the final two lines of the result are not
driverx is running Installation succeededplease send us the contents of the program output (right-click, select-all, right-click, copy) so that we can try to diagnose the problem.
Select Options, Target Communications from the menu. Then select "MSP430 JTAG (MSP-FETP430 / MSP-FET430UIF)", Elprotronic FlashPro430 JTAG, SoftBaugh USBP, or Olimex MSP430JTAG whichever is appropriate, from the Interface drop list.
In the Target Communications Dialog, select the port appropriate to your JTAG pod from the Port combo box.
If you are using the TI USB pod (MSP-FET430UIF), select "USB" from the list.
If you are using the SoftBaugh USB pod, the port setting is ignored. However, you must follow the instructions that came with the pod and replace the file MSP430.DLL in your NoICE\bin directory with the SoftBaugh version of this file.
If you are using a parallel pod (MSP-FET430PIF or equivalent), select "LPTn" from the list. The JTAG interface actually uses port addresses rather than LPTn numbers, so the addresses traditionally used by parallel ports are shown. When in doubt, go with the address, not the LPT number. If you are unsure of the address of your parallel port, run the Windows Control Panel. Double-click on "System", and select the "Device Manager" tab. Expand the item labeled "Ports (COM and LPT)". Select your port, and press the "Properties" button. Select the "Resources" tab. The "Input/Output Range" specifies your port's address.
If your parallel port's address doesn't match one of the selections in the Port list, you can enter the port's address in hex. NoICE will accept only addresses in the range 0x200 to 0xFFFF. Please be careful: addressing something other than a parallel port may cause your PC to do surprising (and generally undesirable) things!
If you are going to violate the rules above, at least try it as recommended first. Once it works reliably (i.e., for more than two minutes) that way, then you can play with other settings. But don't ask me for support when it doesn't work.
Some MSP430 parts use the standard 4-wire JTAG connection, while some use a 2-wire interface called Spy-bi-wire. The Connection to Target drop-list allows you to select the appropriate interface. Options are
If your pod doesn't support the type of connection that you select, you will get an error when NoICE attempts to access the pod. For example, the eZ430 pod supports only Spy-bi-wire, so you must select either "pod default" or "Spy-bi-wire". The parallel-port MSP-FET430F supports only JTAG, so you must select either "pod default" or "JTAG".
In most cases, "pod default" is the appropriate setting. If you have difficulty, or if you are designing a board with an MSP430 and need to configure the debug connector, you should read TI's slau138g, "MSP-FET430 Flash Emulation Tool (FET)".
The Erase Flash Before Programming drop-list allows you to specify the erase action used by the Flash burner. Choices are
Earlier versions of NoICE had an option to erase Flash sectors only as required by the burn process. This option is no longer supported, as the TI JTAG DLL makes it too slow to be useful.
The VCC combo box allows you to specify the voltage to be applied to the target chip by the JTAG pod. This feature is not supported by all pods. In particular, the TI parallel-port pod always supplies 2.7 volts, regardless of the VCC setting. The TI USB pod, and Pro version of the SoftBaugh do support variable VCC.
Please be careful: in some cases it may be possible to damage a target chip by specifying an incorrect value for VCC. Read your data sheet and adjust the value BEFORE you connect to the actual chip.
This button opens a dialog box that contains a list of MSP430 parts supported by the current version of the TI-supplied MSP430.DLL, along with various useful parameters and features of each device.
NoICE has not been tested with all of these targets, and we must rely on the TI DLL and documentation for low-level details. If you have any problems, or questions about a specific target, please Contact us.
Most members of the MSP430 family contain two or more hardware breakpoints. Some have up to eight. NoICE uses these breakpoints in conjunction with JTAG to allow single-step and breakpoint operations on programs executing from Flash.
You can find out how many breakpoints your target supports by opening the Target Communications Dialog, and pressing the "Supported Targets" button. In any case, NoICE will not let you set more hardware breakpoints that your target supports.
The breakpoint hardware seems to generate false hits in some cases. If there is an interrupt pending, the program may stop not at the breakpoint address, but at the first instruction of the interrupt routine, with the breakpoint address on the stack.
NoICE contains logic to recognize false hits on the breakpoint hardware. When one occurs, NoICE rearms the breakpoint and allows the program to continue. In most cases, you will not notice any effect on your program. However, you should be aware that your code may not run at full processor speed depending on where the breakpoint is set.
In extreme cases, as when the interrupts are very frequent, the automatic rearmimg may not help. After about 40 attempts, NoICE will give up and show the message "Cannot complete breakpoint or step". This is most likely to occur when using a timer or other device running off of a crystal clock. The following section describes some solutions to the problem.
The MSP430 processor core and peripherals can be clocked from a variety of sources, including a DCO (Digitally Controlled Oscillator) and either of two crytal oscillators.
When the processor is stopped and JTAG is in control, the processor is clocked by the JTAG interface. On some parts, this means that any peripherals set to be clocked by the DCO will be clocked by the JTAG instead. This, of course, will affect the operation of UARTs, timers etc. during single-step or when breakpoints are used.
On the other hand, if you run a timer from the crystal clock, you may find that there will always be a timer interrupt pending when you tell NoICE to continue from a breakpoint. This may lead to the problem described under breakpoints above.
The "Clock Control" section of the Target Communications Dialog allows you to stop certain clocks when the target is stopped, as at a breakpoint. While this can make breakpoints and single-step operate correctly, it can also result in functional problems if, for example, the UART clock is stopped while a byte is being received.
Options not supported by the current target will be shown grayed out. The stop-clock options are available only if the target has Standard or Extended Clock Control. You can determine the clock control capability of any supported target by pressing the "Supported Targets" button, and examining the "GCC" column.
We recommend that you begin with all available stop-clock options checked, and only uncheck those options for which your application has special requirements. In particular, it seems that the MSP4330F169 must have "Stop SMCLK" checked, or the processor will get a watchdog timeout soon after you start debugging your program.
Please ask your Texas Instruments representative for more information, because none of this is discussed in any detail in MSP430 documentation.
We ran simple time trials on a 2 GHz PC running Windows XP, saving and burning 32K of target memory in a hex file. Target was an F169, self-clocked as adjusted by the TI burner DLL. Your results may vary depending on PC, operating system, and changes made by the vendors to pod software.
Vendor | Interface | Save 32K (seconds) | Burn 32K (seconds) |
---|---|---|---|
SoftBaugh USBP | USB | 2.7 | 10.4 |
TI MSP-FET430UIF | USB | 6.2 | 10.4 |
TI MSP-FETP430IF | Parallel | 2.8 | 12.7 |