The Motorola/Freescale 68HC08 family includes a wide variety of
68HC08 and MC9S08 parts. Debugging features differ between the
subfamilies, with the MC9S08 having greater capabilities.
However, the HC08 and MON08 is a very usable environment.
MON08 Serial Monitor for 68HC08
For the non-S HC08 family, MON08 is your choice for low-cost debugging
on actual hardware. MON08 uses a very small monitor program that resides
in ROM on most HC08 parts.
MON08 uses a single port pin for bi-directional
serial communications. External circuitry is required to convert this
pin to RS-232 voltage levels. Most HC08 development boards contain this
circuitry. For custom designs, you can either build this circuitry in,
or design it as a separate interface board connected only during debugging.
NoICE uses the MON08 protocol to read and write memory, burn Flash,
and execute user programs.
The HC08 has one hardware breakpoint, which
NoICE uses to set breakpoints in Flash, and to perform single-step.
For code in RAM, NoICE uses the SWI instruction, giving unlimited
breakpoints (well, limited only by the amount of RAM on your chip).
More information on using NoICE with MON08 is available
here.
Background Debug Mode (BDM) for MC9S08
The MC9S08 family adds a Background Debug Mode (BDM) controller
similar to that long available on the HC12. For reasons known only
to the presumably warring factions at Freescale, some MC9S08
documentation calls this "BDC" rather than "BDM".
Probably the best way to use NoICE with the MC9S08 is with Background
Debug Mode (BDM). This requires the use of a BDM pod, but allows in-circuit
debugging of programs in Flash with little or no interference to the user
program being debugged.
When using BDM/BDC, three hardware breakpoints are available.
NoICE supports a variety of BDM pods
Setup and use of BDM is described in a separate document.
AN2140 Monitor
If you are using an MC9S08 part and can't use a BDM pod, similar
features are provided by a Flash-resident monitor program described in
Freescale application note AN2140. This is a popular option for schools
and other applications where low cost is the primary consideration. The
only hardware requirement is an RS-232 serial port.
The AN2140 monitor occupies the top 2K of Flash, including the reset and
interrupt vectors. Thus, it has some impact on the memory organization and
operation of user programs. Please download and read the Freesacale application
note for details.
A chicken an egg detail: once the AN2140 monitor is burned into Flash,
NoICE can use it to burn user programs into the remaining Flash. But how
do you burn the AN2140 monitor into Flash? Your easy choices are to
either borrow a BDM pod or to buy a development board that already contains
the monitor.
Setup and use of the AN2140 monitor is described in a
separate document.
68HC08 Simulator
Instruction set simulation is quite straightforward. However, simulating
the UARTs, timers, and other peripherals found on current microprocessors is a
very complex task - at least if you want a good (i.e., useful) simulation.
The cycle-by-cycle operation of these peripherals is seldom publicly documented,
and anything less than a cycle-by-cycle simulation will mask problems which
occur in real systems.
NoICE's 68HC08 simulator provides simulation
of instruction execution and a "simulated UART" so that you can use printf etc.
The simulator does not do cycle-accurate simulation of a UART
or simulate other peripherals such as timers or interrupts.
That said, the simulator can be very useful in debugging algorithms and
becoming familiar with a processor without investing in any hardware.
More information here.
|