7.CODE DEVELOPMENT
7.1. HMON
7.1.1.MODE SUPPORT
The HMON library is built to support Normal Mode only.
7.1.2.BREAKPOINT SUPPORT
The monitor utilises the Address Break Controller for code located in ROM, allowing a single breakpoint to be set in the code. Code located in RAM may have multiple breakpoints limited only by the size of the
Due to a limitation of the internal address break controller, a breakpoint set in ROM will execute the instruction at the breakpoint and stop on the subsequent
7.1.2.1.CODE LOCATED IN FLASH / ROM
Double clicking in the breakpoint column in the code sets the breakpoint. Adding a further breakpoint in the code removes the previous one. A warning message will be displayed in the message window when this occurs.
7.1.2.2.CODE LOCATED IN RAM
Double clicking in the breakpoint column in the code sets the breakpoint. Breakpoints will remain unless they are double clicked to remove them.
7.1.3.HMON CODE SIZE
HMON is built along with the debug code. Certain elements of the HMON code must remain at a fixed location in memory. The following table details the HMON components and their size and location in memory. For more information, refer to the map file when building code.
Section | Description | Start Location | Size |
|
|
| (H’bytes) |
|
|
|
|
RESET_VECTOR | HMON Reset Vector (Vector 0) | H’ 0000 | 2 |
| Required for Startup of HMON |
|
|
TRAP_VECTORS | Trap Vectors (Vector 8, 9, 10, 11) | H’ 0010 | 8 |
| Required by HMON to create Trap Breakpoints in RAM |
|
|
HW_BREAK_VECTORS | HMON Break Controller (Vector 12) | H’ 0018 | 2 |
| Required by HMON to create Breakpoints in ROM |
|
|
SCI_VECTOR | HMON Serial Port Vectors (Vector 23) | H’ 002E | 2 |
| Used by HMON when EDK is configured to connect to the |
|
|
| default serial port. |
|
|
PHMON | HMON Code | H’ 1000 | 2C3D |
CHMON | HMON Constant Data | H’ 2C3E | 2D10 |
BHMON | HMON Uninitialised data | H’ FC80 | 1FD |
FDTInit | FDT User Mode Kernel. | H’ 0400 | F7 |
| This is at a fixed location and must not be moved. Should the |
|
|
| kernel need to be moved it must be |
|
|
FDTUserModeMicroKernel | FDT User Mode Kernel. | H’ 0500 | 6CC |
| This is at a fixed location and must not be moved. Should the |
|
|
| kernel need to be moved it must be |
|
|
CUser_Vectors | Pointer used by HMON to point to the start of user code. | H’ 0C00 | 4* |
* CUserVectors is a long word location with the upper 16 bits set to zero.
14