Ozone target control
Ozone provides full control over the target microcontroller- or microprocessor-based system.
Target control and communication
Ozone provides full control over a target via the debug interface. Control options include code stepping, breakpoint-setting, and bi-directional terminal communication with the target firmware. This enables users to examine a target system at every step in the process.
Terminal communication
Ozone can communicate with the target firmware using a terminal interface. This way, the target firmware can push log and error message into Ozone's terminal window. A firmware created for running specific tests can be controlled via the terminal interface and return the test results using the same.
User interface peripherals not present during the debug process can be simulated using the terminal interface. Messages send via Ozone can be used to simulate input devices. Messages sent by the target that would go to a display in the final product could go be sent to the debugger during development.
For communication Ozone can utilize the Cortex-M SWO capability, Semihosting and SEGGER's Real Time Transfer (RTT) technology. RTT provides extremely fast IO coupled with low MCU intrusion.
Control program execution with breakpoints
Breakpoints are a core debug tool. Ozone supports code breakpoints at source and instruction level. Ozone users benefit from conditional breakpoints, that assist to halt the application, when the user requires, without having to modify the code.
If users require to examine a loop at a later iteration, they will set a skip count and tell Ozone to skip the breakpoint automatically the specified number of times relieving them from counting and stepping manually. Similarly an iterative skip count can be used to halt every other occurrence.
In situations where a function is called from a multitude of places in the application, it can be helpful to stop the firmware only if it is called from a specific task. Ozone can offer the required condition, if an RTOS awareness plugin is active.
In addition, Ozone is even capable of evaluating complex conditions each time a breakpoint is hit to determine whether control is passed to the user or execution is continued to the next breakpoint. The evaluation can also make use of RTOS awareness.
Furthermore, Ozone benefits from J-Link's unlimited flash breakpoints.
Data breakpoints
To monitor memory locations important to the program flow, users can set data breakpoints. These trigger a program halt every time the memory location is accessed. Conditions to determine whether the data breakpoint shall trigger include memory address/area, access type (read/write), access size, and value. This supports detecting unwanted memory access or memory access, that does not yield the expected result. In addition, stack overflows can be identified as well as heap use-after-free.
Examine program flow with stepping
Ozone provides the standard step modes: single step to the next line, into a function, over a function and also enables stepping on instruction level. If users want to temporarily exclude functions from execution, they can simply move the program counter to the next code line and continue execution.
For one time inspection of a state at a specific location, users can place the cursor there and chose the run to cursor mode, which let's the application run to the specified location.

