EVBplus.com

 

Home

Buy

Products

Textbooks

Resources

Support

Download

Contact

 

 

 

 
  
 

TinyBDM

 
  The TinyBDM has been discontinued. The replacement is the USBDM-1-JS16.  It's much cheaper and better. 
See the programming procedures at the end of the USBDM page.

This page is kept for reference only for anyone who wants to use a Dragon12 board as a flash memory programmer.

The TinyBDM is a MC9S12DG256 based BDM POD for debugging the HCS12 family, especially the 9S12C32 and 9S12C128, using D-Bug12 command set. It also can be used for programming HCS12 internal flash memory on a target board.  Its compact size is ideal for field service technicians and engineers. If you are going to work on the HCS12 family for a long time, you may need a BDM POD sooner or later. Either to debug your code or program the flash memory on a target board, the TinyBDM is a good choice for its affordability and compact size.  

Features:

  • Low-cost and compact BDM for the HCS12 family MCUs
  • Includes a 6-pin BDM cable
  • Includes a 6-foot USB cable 
  • USB interface to host PC based on the industry standard FT232RL chip.
  • Powered by host PC's USB port and supplies target board up to 500mA
  • Programs or debugs target board without an AC adapter
  • Bi-color LED communication indicator, green for transmitting, red for receiving

  • Debugs target board with Freescale D-bug12 command set
  • Supports hardware and software breakpoints in target
  • Works with any terminal emulation program, like AsmIDE, HuterTerm and MiniIDE
  • Compact size at 2.5" x 1.0"

The Tiny BDM is installed with the D-bug12 V4.00b32 and running in POD mode. It works with any ASCII text based terminal programs, like AsmIDE, MiniIDE and HyperTerm, but it does not work with Code Warrior. The D-Bug12 firmware acts as a host to access all target MCU resources on your target board, such as a C32 module, via the BDM port in a non-intrusive manner. It will have all the features that a D-Bug12 monitor has in debugging the target MCU. Also, it gains all the features a programmer has for programming the flash memory of the MCU on a target board.  

Notes on hardware:

  1. The two-pin header J2 is used to supply 5V to the target board being programmed. Usually the jumper is installed so the TinyBDM can supply 5V to the target board.  If you install a jumper on the J2, make sure that the target board is not powered by another power supply.

  2. When PC receives data the LED turns Red. When PC transmits data the LED turns Green.

  3. If you press the reset button (S1, located just below the USB jack) on the TinyBDM, it will send a message to PC, so the LED should flash once in Red.

  4. If you press the reset button when the target board is disconnected, the LED may flash many times as the TinyBDM tries to connect to the target.
 

Install and verify USB driver:

  1. Before connecting the TinyBDM to your PC's USB port for the first time, make sure that you do not attach your target board to the TinyBDM.

     

  2. Go to the FT232RL driver installation and verification page for operating procedures: http://www.evbplus.com/TinyUSB_9s12/ft232rl.html.
     

  3. Once you have verified that the USB driver is properly installed, you may now connect the TinyBDM to your target board. Invoke the AsmIDE.
     

  4. Generally speaking, you should have worked with a HCS12 / 9S12 based development board before buying a BDM POD, so probably a terminal emulation program has already been installed on your PC. If not, you have to install one of the following programs before using the TinyBDM:

    AsmIDE, MiniIDE, HyperTerm, TeraTerm or any other terminal programs you prefer.


     

  5. If the AsmIDE does not communicate with your target board then you need to check if the COM port number that is assigned by the AsmIDE matches the USB-to-Serial COM port number that is assigned by Windows' Device Manager. The Device Manager assigns the USB-to-Serial COM port number randomly and it does not know which COM port number that AsmIDE is going to use.

    In order to find the USB-to-Serial COM port number that is assigned by Device Manager, you can click through "Control Panel -> Systems -> Hardware -> Device Manager -> Ports".  The USB-to-Serial COM port number will appear (In Windows Vista, you left click on Start, right click on Computer, left click on propriety, then Device Manager and then Continue).

    For setting the COM port of the AsmIDE to match that USB-to-Serial COM port number, you can click through "View-> Option->Terminal Window Options" menu, then select the correct COM port from COM1 to COM8.

    Note:

    In order to establish a reliable USB communication, always connect the TinyBDM to your PC's USB port first before invoking the AsmIDE, otherwise the AsmIDE will not be able to find a COM port.  When the programming is done, always close the AsmIDE first before unplugging the USB cable from the TinyBDM, otherwise the AsmIDE may hang up and you need to re-establish USB communication again. 

    As long as you keep the TinyBDM connected to your PC's USB port, disconnecting the TinyBDM from your target board will not lose USB communication.

    In case the AsmIDE hangs up, you need to close the AsmIDE first, then unplug the USB cable from  your TinyBDM, wait a few seconds before re-plugging the USB cable, then wait a few more seconds and allow the USB connection to be re-established.  After cycling the USB connection you can invoke the AsmIDE again and it may restore the USB communication.  If this does not work, you need to restart your PC, but in order to avoid this, always close the AsmIDE before unplugging the USB cable.

    If restarting the PC does not solve the problem, you may need to re-install the USB driver.

     

The steps to operate the TinyBDM are as follows:

  1. Connect the 6-pin BDM cable to the "BDM-in" header on your target board. The target board can be any HCS12 board. The target board does not have to be powered by other power supply since the TinyBDM can provide a 5V to the target through the BDM cable. 

    Be careful about cable orientation.
    The cable is wired pin for pin and the pin 1of the BDM headers on both boards are clearly labeled. If the cable is plugged onto a target board reversed (180 degree off) it won't hurt anything, but it won't work either.
      

  2. Connect the TinyBDM to any USB port on your PC. The power LED indicator on your target board should be on.

  3. Invoke the terminal program.

  4. Press the reset button on the TinyBDM, the bi-color LED should blink once in red color. The TinyBDM hardware should be functioning and the PC screen should display the D-bug12 monitor sign-on message and the menu. 

The newer D-Bug12 monitor automatically detects the crystal frequency on a target board and establish the communication with the target board.  You should see the following prompt on the screen:  

D-Bug12 4.0.0b32
Copyright 1996 - 2005 Freescale Semiconductor
For Commands type "Help"

S>

You will notice that the debug prompt is “S>” in POD mode, not just a “>” in EVB mode. The S> tells that this is the POD mode of the D-Bug12 monitor and the MC9S12DG256 on target board is Stopped. Sometimes the prompt could be a “R>” that means the target MCU is Running.  If you see the “R>”, just type RESET on your keyboard and then <Enter> to reset the target and it will come back with the “S>” prompt.  

R>RESET <Enter>  
S>  

At this point in the POD mode indicated by the prompt "S>", you can debug the target board using all D-Bug12 monitor commands, like DM, MM, LOAD and GO commands as if you were using them in EVB mode. The difference is that all commands are run on the target board, not on the BDM POD. The BDM POD functions as a command interpreter which receives a clear text (ASCII) command from a PC via a USB port and converts it to an one-byte command with optional parameters (Binary protocol) and then sends it down to the target board via the " BDM-in" port, or vice versa.

 

How to use the TinyBDM to program flash memory on a target board?
(Change D-Bug12 monitor to serial monitor, or vice versa)

In 2004, Dr, Frank Wornle, a professor at the University of Adelaide in Australia wrote a great tutorial article for using Freescale serial monitor on our original Dragon12 board. On the first part of the article he clearly explained the procedures of using one Dragon12 board as a BDM POD to program the flash memory on another Dragon12 board.  It's very helpful for any one who would like to change the monitor from one type to another on a HCS12 / 9S12 development or trainer board.

You can download his article from the web site of the University of Adelaide:
http://www.mecheng.adelaide.edu.au/robotics_novell/WWW_Devs/Dragon12/Examples/HCS12SerialMonitor_Dragon12.pdf

If you have read his article, you can easily understand the programming procedures so we do not need to repeat here, The Dragon12 board has been upgraded to the Dragon12 Plus board since 2007. The new Dragon12 Plus added many I/O peripherals, but has not affected the programming procedures. However, there are a few things should be brought to your attention:

  1. The crystal frequency on the new Dragon12 plus is 8 MHz and it was changed from 4 MHz on the old Dragon12 board.

  2. The left switch of the 2-position DIP switch SW7 on the new Dragon12 Plus is used for selecting RUN or LOAD mode.

  3. The MCU is the MC9S12DG256 on the new Dragon12 Plus board, but it was the MC9S12DP256 on the old Dragon12 board.

  4. Our serial monitor files are S2 type files and can be directly programmed into flash memory. So you have to use the FLOAD command, not the FLOAD ;b command. ( Always use FBULK command to erase flash memory before the FLOAD commad)

  5. The filename of our serial monitor is different than the filename in his article. For example, the file name of our serial monitor including a factory test program for the Dragon12-Plus board is SM_and_Test_DR12P_8MHz.s29. Anyone who would like to change the D-Bug12 monitor on his or her Dragon12-Plus board to the serial monitor in order to use Code Warrior should download this file.

    If you double click on the SM_and_Test_DR12P_8MHz.s29. it will display the file contents on the PC screen as follows:
     
    S2240FE00006E2A9B32AA91D9FA096A98E3486397EB1779570DE6A89648E5EE9000000000004 S2240FE0200000005996548E4FCF4B55471A431D3F583BCA386F354432472F750000000000A3 S2240FE0400000002CCB2A4727E825AA238D218E1FAC1DE51C391AA2192317BA00000000001C S2240FE0600000001665152413F512D511C710C70FD60EF30E1C0D510C920BDD000000000046

    Click on "File" then "Save as" to save it as a text file in your PC, but remember in which folder it is saved because you need to download it into flash memory using the FLOAD command later.
     

  6. In order to program the flash memory, you have to erase it by using the FBULK command.
    S>fbulk <Enter>

    When the prompt “S>” returns, the FBULK command has already erased all of the flash memory contents of the target MC9S12DG256.  If it returns with a message “Flash or EEPROM Failed To Erase” the MC9S12DG256 is defective.

  7. Now you type “FLOAD” <Enter> at the prompt "S>", at this moment do not enter any key on keyboard, just click the Build button, select the Download option, and select the file named SM_and_Test_DR12P_8MHz.s29 that was just saved. The procedure is like when you download your code into RAM during a debugging session. You should see the following on the terminal window when programming is done (when the prompt “S>” appears): 

    S>fload <Enter>

    *****************************************************************************
    *******************************
    S>

     

  8. Now if you press the reset button the PortB LED indicators will light up from right to left. That indicates that the serial monitor is successfully programmed in the flash memory on the target board.

  9. If you ever want to change the serial monitor back to the D-Bug12 monitor, the programming procedures are the same, but only the file to be downloaded is different.  Although the time takes to program the serial monitor at 9600 baud is relatively short, but the time of programming the D-Bug12 will take more than 3 minutes and the display will look more like the following with many lines of stars, and you must be patient:  

    S>FLOAD <Enter>  

    ***************************************************************************
    ***************************************************************************  
    ***************************************************************************  
    ***************************************************************************  
    ***************************************************************************
    ***************************************************************************
    ***************************************************************************
    ***************************************************************************
    ***************************************************************************  
    *************************************************************  

     

  10. All of our serial monitor files can be downloadable from our web site at: 
    http://www.evbplus.com/download_hcs12/download_hcs12.html

 

 
You can use a TinyBDM to program a target board.

This picture shows how to connect a TinyBDM to the BDM-in header (J20) on a Dragon12-Plus board as the target board being programmed.

The target board gets power from the TinyBDM through the BDM cable.

You can use a Dragon12-Plus board as a BDM POD to program a target board.

This picture shows how to connect a host Dragon12-Plus board (on the top) as a BDM POD, to another Dragon12-Plus board as a target board (on the bottom).

The target board gets power from the host board through the 6-pin BDM cable.

The RS232 DB9 cable must connect to the host board.

Besides the Dragon12-Plus board, other Wytec trainer boards can be used as a BDM POD. See the product comparison chart for more info.

This is the close-up view on the BDM cable connection for the HOST board. 

The LCD display indicates that the Dragon12-Plus board is operating in POD mode.

The 6-pin BDM cable is connected to the "BDM-out" header (J21) on the host board.

This board acts as a host board to program another target board.

If you use any one of our MiniDragon+, MiniDragon-P2, Spider12 and ThunderBird12 boards as a BDM POD, make sure that the BDM cable is connected to the "BDM-out" header on that board.  

This is the close-up view on the BDM cable connection for the TARGET board. 

The LCD display indicates that the Dragon12-Plus board is operating in EVB mode, but it does not matter which mode the Target board is set at.

The 6-pin BDM cable is connected to the "BDM-in" header (J20) on the target board.

This board acts as a target board being programmed.

 

To find out which of our boards can function as a BDM POD see the product comparison chart at:
Product comparison chart

The second part of his tutorial is about source level debugging with Code Warrior and serial monitor.  That belongs to a different subject. For more info, visit:
http://www.evbplus.com/Code_Warrior_hcs12.html

BTW, the University of Adelaide's web site is the most resourceful web site for the Dragon12 plus board. 

For those who need to use the Code Warrior IDE with a free C source level debugger for your Dragon12 board or MiniDRAGON boards you can get a lot of help from their web site at: 
http://www.mecheng.adelaide.edu.au/robotics/wpage.php?wpage_id=56

For those who is interested in MATLAB toolbox for the HCS12 / 9S12 MCU you can visit their web site at:
http://www.mecheng.adelaide.edu.au/robotics/wpage.php?wpage_id=62
Dr. Wornle has recently released the new MatLAB toolbox for Code Warrior SE 4.7 and 5.1