RTOS Debugger for ChibiOS/RT

Similar documents
RTOS Debugger for RTX-ARM

RTOS Debugger for MicroC/OS-III

RTOS Debugger for ThreadX

RTOS Debugger for CMX

OS Awareness Manual Sciopta

RTOS Debugger for FreeRTOS

RTOS Debugger for MQX

RTOS Debugger for MicroC/OS-II

RTOS Debugger for RTXC Quadros

Hypervisor Awareness for Wind River Hypervisor

RTOS Debugger for RTXC Quadros

OS Awareness Manual OSEK/ORTI

OS Awareness Manual OSE Epsilon

OS Awareness Manual OSE Delta

RTOS Debugger for Windows Standard

RTOS Debugger for LynxOS

OS Awareness Manual uclinux

RTOS Debugger for Windows CE6/EC7/EC2013

RTOS Debugger for RTX51 tiny

RTOS Debugger for psos+

RTOS Debugger for OS-9

Integration for CodeWright

RTOS Debugger for QNX - Run Mode

TRACE32 Glossary Terms, Abbreviations, and Definitions... 2

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... TriCore... TriCore Monitor... 1

Run Mode Debugging Manual Symbian

Application Note for the SNOOPer Trace

TRACE32 Getting Started... ICD In-Circuit Debugger Getting Started... ICD Introduction... 1

RTOS Debugger for Linux - Run Mode

Introduction to the ThreadX Debugger Plugin for the IAR Embedded Workbench C-SPYDebugger

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... NS NS32000 Monitor... 1

The ThreadX C-SPY plugin

ARM Application Note for MXC Chips

embos Real-Time Operating System embos plug-in for IAR C-Spy Debugger Document: UM01025 Software Version: 3.0 Revision: 0 Date: September 18, 2017

Integration for CodeBlocks

Lab 3-2: Exploring the Heap

embos Real-Time Operating System embos plug-in for IAR C-Spy Debugger Document: UM01025 Software Version: 3.1 Revision: 0 Date: May 3, 2018

_ V Renesas R8C In-Circuit Emulation. Contents. Technical Notes

Native Process Debugger

TRACE32 Debugger Getting Started... ICD Tutorial About the Tutorial... 2

_ V Intel 8085 Family In-Circuit Emulation. Contents. Technical Notes

Trace Getting Started V8.02

XDS560 Trace. Technology Showcase. Daniel Rinkes Texas Instruments

Converter from GEL to PRACTICE

Rudi Dienstbeck June 07, ARM TrustZone and Hypervisor Debugging

General Commands Reference Guide O

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... MCS08... MCS08 Debugger... 1

Efficient and Large Scale Program Flow Tracing in Linux. Alexander Shishkin, Intel

Renesas 78K/78K0R/RL78 Family In-Circuit Emulation

Operating Systems Design Fall 2010 Exam 1 Review. Paul Krzyzanowski

Tracking the Virtual World

TRACE32 Documents... TRACE32 Instruction Set Simulators... Simulator for ARC... 1

Application Note for the Trace.Find Command

Process Context & Interrupts. New process can mess up information in old process. (i.e. what if they both use the same register?)

_ V ST STM8 Family On-Chip Emulation. Contents. Technical Notes

Advanced Debugging using the Ashling MPC5500 tools

NEW CEIBO DEBUGGER. Menus and Commands

Simulator for H8/300, H8/300H and H8S

XDS560 Trace. Advanced Use Cases for Profiling. Daniel Rinkes Texas Instruments

Eclipse-Based CodeWarrior Debugger

RTX64 Features by Release IZ-DOC-X R3

Chapter 12 Visual Program Debugger

Simulator for TriCore

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... MMDSP... MMDSP Debugger General Note... 3

NEC 78K0- Family On-Chip Emulation

Integration for exdi2 on Windows CE Platform Builder

A brief intro to MQX Lite. Real work: hands-on labs. Overview, Main features and Code Size

Integration for Rhapsody in C/C++

MPLAB SIM. MPLAB IDE Software Simulation Engine Microchip Technology Incorporated MPLAB SIM Software Simulation Engine

QorIQ Debugger and NEXUS Trace

RTOS Debugger for Windows CE4/CE5

Training Android Debugging

Debugging in Small Basic is the process of analysing a program to detect and fix errors or improve functionality in some way.

Putting it All Together

NIOS II Instantiating the Off-chip Trace Logic

Integration for Visual Basic Interface

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... Andes... Andes Debugger... 1

The CMXBug Manual. The CMXBug Manual

What is this? How do UVMs work?

Supplement: Visual C++ Debugging

What s An OS? Cyclic Executive. Interrupts. Advantages Simple implementation Low overhead Very predictable

General Commands Reference Guide G

What s New in Platform Builder 7

ARM Processors for Embedded Applications

embos Real-Time Operating System CPU & Compiler specifics for embos Visual Studio Simulation

BASICS OF THE RENESAS SYNERGY PLATFORM

CODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ARM Cortex-A9 CCS

embos Real Time Operating System CPU & Compiler specifics for ARM core with ARM RealView Developer Suite 3.0 Document Rev. 1

CS370 Operating Systems

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... XC XC800 Debugger... 1

Embedded Systems. 5. Operating Systems. Lothar Thiele. Computer Engineering and Networks Laboratory

RTX64 Features by Release

TRACE32 as GDB Back-End

Training Simulator and Demo Software

ITRON Project Overview

API for Auxiliary Processing Unit

MCUXpresso IDE FreeRTOS Debug Guide. Rev November, 2017

An unrivalled feature-set and unprecedented integration

TRACE32 Documents... ICD In-Circuit Debugger... Processor Architecture Manuals... Blackfin... Blackfin Debugger General Note...

x386 and x486 Monitor

Transcription:

RTOS Debugger for ChibiOS/RT TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... RTOS Debuggers... RTOS Debugger for ChibiOS/RT... 1 Overview... 3 Brief Overview of Documents for New Users... 4 Supported Versions... 4 Configuration... 5 Manual Configuration 5 Automatic Configuration 5 Quick Configuration Guide 6 Hooks & Internals in ChibiOS 6 Features... 7 Display of Kernel Resources 7 Task Stack Coverage 7 Task Related Breakpoints 8 Task Context Display 9 Dynamic Task Performance Measurement 10 Task Runtime Statistics 10 Function Runtime Statistics 11 ChibiOS specific Menu 14 ChibiOS Commands... 15 TASK.CONDvar Display condition variables 15 TASK.EVenT Display events 15 TASK.Heap Display heaps 16 TASK.MailBox Display mailboxes 16 TASK.MuTeX Display mutexes 17 TASK.Pool Display memory pools 17 TASK.Queue Display queues 18 TASK.SEMaphore Display semaphores 18 TASK.Thread Display threads 19 TASK.VTimer Display virtual timers 19 ChibiOS PRACTICE Functions... 20 RTOS Debugger for ChibiOS/RT 1

Frequently-Asked Questions... 20 RTOS Debugger for ChibiOS/RT 2

RTOS Debugger for ChibiOS/RT Version 22-Mar-2018 Overview The RTOS Debugger for ChibiOS contains special extensions to the TRACE32 Debugger. This manual describes the additional features, such as additional commands and statistic evaluations. Note the terminology: while ChibiOS talks about threads, the RTOS Debugger uses the term task. They are used interchangeable in this context. RTOS Debugger for ChibiOS/RT 3

Brief Overview of Documents for New Users Architecture-independent information: Debugger Basics - Training (training_debugger.pdf): Get familiar with the basic features of a TRACE32 debugger. T32Start (app_t32start.pdf): T32Start assists you in starting TRACE32 PowerView instances for different configurations of the debugger. T32Start is only available for Windows. General Commands (general_ref_<x>.pdf): Alphabetic list of debug commands. Architecture-specific information: Processor Architecture Manuals : These manuals describe commands that are specific for the processor architecture supported by your debug cable. To access the manual for your processor architecture, proceed as follows: - Choose Help menu > Processor Architecture Manual. RTOS Debuggers (rtos_<x>.pdf): TRACE32 PowerView can be extended for operating systemaware debugging. The appropriate RTOS manual informs you how to enable the OS-aware debugging. Supported Versions Currently ChibiOS/RT is supported for the following versions: Versions 2.4.x, 2.6.x, 3.0.x, 16.1.x on ARM/Cortex. RTOS Debugger for ChibiOS/RT 4

Configuration The TASK.CONFIG command loads an extension definition file called chibios.t32 (directory ~~/demo/<arch>/kernel/chibios ). It contains all necessary extensions. Automatic configuration tries to locate the ChibiOS internals automatically. For this purpose all symbol tables must be loaded and accessible at any time the RTOS debugger is used. If a system symbol is not available or if another address should be used for a specific system variable then the corresponding argument must be set manually with the appropriate address. This can be done by manual configuration which can require some additional arguments. If you want do use the display functions On The Fly, i.e. displaying the OS objects, while the target is running, you need to have access to memory while running. In case of a ICE or FIRE, you have to map emulation or shadow memory to the address space of all used system tables. In case of ICD, you have to enable SYStem.MemAccess or SYStem.CpuAccess (CPU dependent). Manual Configuration Manual configuration is not necessary for the ChiboOS RTOS debugger. Automatic Configuration For system resource display and analyzer functionality, you can do an automatic configuration of the RTOS debugger. For this purpose it is necessary, that all system internal symbols are loaded and accessible at any time, the RTOS debugger is used. Each of the task.config arguments can be substituted by '0', which means, that this argument will be searched and configured automatically. For a full automatic configuration, omit all arguments: TASK.CONFIG chibios.t32 If a system symbol is not available, or if another address should be used for a specific system variable, then the corresponding argument must be set manually with the appropriate address. See also the example ~~/demo/<arch>/kernel/chibios/chibios.cmm. RTOS Debugger for ChibiOS/RT 5

Quick Configuration Guide To get a quick access to the features of the ChibiOS debugger with your application, follow the following roadmap: 1. Start the TRACE32 Debugger. 2. Load your application as normal. 3. Execute the command TASK.CONFIG ~~/demo/<arch>/kernel/chibios/chibios.t32 (See Automatic Configuration ). 4. Execute the command MENU.ReProgram ~~/demo/<arch>/kernel/chibios/chibios.men (See ChibiOS Specific Menu ). 5. Start your application. Now you can access the ChibiOS extensions through the menu. In case of any problems, please read carefully the previous configuration chapters. Hooks & Internals in ChibiOS No hooks are used in the kernel. For retrieving the kernel data and structures, the RTOS debugger uses the global kernel symbols and structure definitions. Ensure, that access to those structures is possible, every time when features of the RTOS debugger are used. In order to display the threads list, set the Chibios configuration CH_CFG_USE_REGISTRY as TRUE. Be sure, that your application is compiled and linked with debugging symbols switched on. RTOS Debugger for ChibiOS/RT 6

Features The RTOS debugger for ChibiOS supports the following features. Display of Kernel Resources The extension defines new PRACTICE commands to display various kernel resources. Information on the following ChibiOS components can be displayed: TASK.Threads TASK.SEMaphore TASK.MuTeX TASK.CONDvar TASK.MailBox TASK.Heap TASK.Pool TASK.Queue TASK.VTimer Threads Semaphores Mutexes Condition Variables Mailboxes Heaps Memory pools Queues Virtual timers For a description of each command, refer to chapter ChibiOS Commands. If your hardware allows accessing the memory, while the target is running, these resources can be displayed On The Fly, i.e. while the application is running, without any intrusion to the application. Without this capability, the information will only be displayed, if the target application is stopped. Task Stack Coverage For stack usage coverage of the tasks, you can use the TASK.STacK command. Without any parameter, this command will set up a window with all active tasks. If you specify only a magic number as parameter, the stack area of this task will be automatically calculated. To use the calculation of the maximum stack usage, flag memory must be mapped to the task stack areas, when working with the emulation memory. When working with the target memory, a stack pattern must be defined with the command TASK.STacK.PATtern (default value is zero). To add/remove one task to/from the task stack coverage, you can either call the TASK.STacK.ADD or TASK.STacK.ReMove commands with the task magic number as parameter, or omit the parameter and select from the emerging TASK.STacK.* window. It is recommended, to display only the tasks, that you are interested in, because the evaluation of the used stack space is very time consuming and slows down the debugger display. RTOS Debugger for ChibiOS/RT 7

ChibiOS itself does not store information about the stack size of a task. To calculate the stack size and stack endings, the debugger tries to determine the symbol of the work area and uses the size of this symbol as stack size. If this fails, no stack coverage for this task is available. As a workaround, you can use a small script to set the stack characteristics of each task manually. Example to set the stack size of the test1 task to 1024 bytes: ; Adapt stack characteristics of a task ; Specify the task name, e.g. the test1 task: &task="test1" ; Specify the new task size in bytes for this task, e.g. 1024 bytes: &stacksize=0x400 ; Open standard stack view and ensure a display update TASK.STacK.view SCREEN ; Calculate task magic and stack start address &magic=task.magic("test1") &stackstart=0x20020fe8 ; Remove the standard stack calculation for this task TASK.STacK.ReMove &magic ; And add the custom one: TASK.STacK.ADD &magic &stackstart++(&stacksize-1) Task Related Breakpoints Any breakpoint set in the debugger can be restricted to fire only if a specific task hits that breakpoint. This is especially useful when debugging code which is shared between several tasks. To set a task related breakpoint, use the command: Break.Set <address> <range> [/<option>] /TASK <task> Set task related breakpoint. Use a magic number, task ID, or task name for <task>. For information about the parameters, see What to know about Magic Numbers, Task IDs and Task Names (general_ref_t.pdf). By default, the task related breakpoint will be implemented by a conditional breakpoint inside the debugger. I.e., the target will always halt at that breakpoint, but the debugger immediately resumes execution if the current running task is not equal to the specified task. NOTE: Task related breakpoints impact the real-time behavior of the application. RTOS Debugger for ChibiOS/RT 8

On some architectures it is possible to set a task related breakpoint with on-chip debug logic that is less intrusive. Specify additionally the option /Onchip to use this. The debugger then uses the on-chip resources to reduce the number of breaks to the minimum, by pre-filtering the tasks. E.g. on ARM architectures, if the RTOS serves the Context ID register at task switches, and if the debug logic provides the Context ID comparison, you may use this register for less intrusive task related breakpoints: TrOnchip.ContextID ON will enable the comparison to the whole Context ID register. TrOnchip.ASID ON will enable the comparison to the ASID part only. If TASK.List.tasks provides a trace ID (traceid column), the debugger will use this ID for comparison. Without the trace ID, it uses the magic number (magic column) for comparison. For a general description of the Break.Set command, please see its documentation. When single stepping, the debugger halts on the next instruction, regardless of which task hits this breakpoint. When debugging shared code, stepping over an OS function may lead to a task switch and coming back to the same place - but with a different task. If you want to stick the debugging within the current task you can set up the debugger with SETUP.StepWithinTask ON to use task related breakpoints for single stepping. In this case, single stepping will always stay within the current task. Other tasks using the same code will not be halted on these events. If you want to halt program execution as soon as a specific task is scheduled to run by the OS, you can use the Break.SetTask command. Task Context Display You can switch the whole viewing context to a task that is currently not being executed. This means that all register and stack related information (such as Register, Data.List, Frame etc.) will be shown according to this task. Be aware that this is only for displaying information. When continuing debugging the application (Step or Go), the debugger will switch back to the current context. For displaying a specific task context, use the command: Frame.TASK [<task>] Display task context. Use a magic number, task ID, or task name for <task>. For information about the parameters, see What to know about Magic Numbers, Task IDs and Task Names (general_ref_t.pdf). To switch back to the current context, omit all parameters. RTOS Debugger for ChibiOS/RT 9

For displaying the call stack of a specific task, you can use the following command: Frame /Task <task> Display call stack of a task. If you d like to see the application code where the task was preempted, execute the command Frame /Caller /Task <task> to open a window of the same name. Double click on the line showing the OS service call. Dynamic Task Performance Measurement The debugger may execute a dynamic performance measurement by evaluating the current running task in changing time intervals. Start the measurement with the commands PERF.Mode TASK and PERF.Arm, and view the contents with PERF.ListTASK. The evaluation is done by reading the magic location (= current running task) in memory. This memory read may be non-intrusive or intrusive, depending on the PERF.METHOD used. If PERF collects the PC for function profiling of processes in MMU based operating systems (SYStem.Option MMUSPACES ON), then you need to set PERF.MMUSPACES, too. For a general description of the PERF command, refer to General Commands Reference Guide P (general_ref_p.pdf). Task Runtime Statistics Out of the recordings done by the Trace (if available), the debugger is able to evaluate the time spent in a task and display it statistically and graphically. Using this feature requires that the on-chip trace generation logic can generated task information. For details refer to OS-aware Tracing (glossary.pdf). RTOS Debugger for ChibiOS/RT 10

To evaluate the contents of the trace buffer, use these commands: Trace.List List.TASK DEFault Trace.STATistic.TASK Trace.Chart.TASK Trace.PROfileSTATistic.TASK Trace.PROfileChart.TASK Trace.FindAll Address task.config(magic) Trace.FindAll CYcle owner OR CYcle context Display trace buffer and task switches Display task runtime statistic evaluation Display task runtime timechart Display task runtime within fixed time intervals statistically Display task runtime within fixed time intervals as colored graph Display all data access records to the magic location Display all context ID records The start of the recording time, when the calculation doesn t know, which task is running, is calculated as (unknown). Function Runtime Statistics NOTE: This feature is only available if your debugger equipment is able to trace memory data accesses (program flow trace is not sufficient). All function-related statistic and time chart evaluations can be used with task-specific information. The function timings will be calculated dependent on the task that called this function. To do this, in addition to the function entries and exits, the task switches must be recorded. RTOS Debugger for ChibiOS/RT 11

To do a selective recording on task-related function runtimes with flow traces (ICD, e.g. ETM and NEXUS trace), based on the data accesses, use the following PRACTICE command: ; Enable flow trace an accesses to the magic location Break.Set TASK.CONFIG(magic) /TraceData To do a selective recording on task-related function runtimes with flow traces, based on the context ID, use the following PRACTICE command: ; Enable flow trace with context ID (e.g. 32bit) ETM.ContextID 32 To do a selective recording on task-related function runtimes with state analyzers (ICE and FIRE), use the following PRACTICE commands: ; Mark the magic location with an Alpha breakpoint Break.Set TASK.CONFIG(magic)++(TASK.CONFIG(magicsize)-1) /Alpha ; Mark the function entries/exits with Alpha/Beta breakpoints Break.SetFunc ; Program the Analyzer to record function entries/exits and task switches Analyzer.ReProgram ( Sample.Enable if AlphaBreak BetaBreak Mark.A if AlphaBreak Mark.B if BetaBreak ) To evaluate the contents of the trace buffer, use these commands: Trace.ListNesting Trace.STATistic.Func Trace.STATistic.TREE Trace.STATistic.sYmbol /SplitTASK Trace.Chart.Func Trace.Chart.sYmbol /SplitTASK Display function nesting Display function runtime statistic Display functions as call tree Display flat runtime analysis Display function timechart Display flat runtime timechart The start of the recording time, when the calculation doesn t know which task is running, is calculated as (unknown). RTOS Debugger for ChibiOS/RT 12

RTOS Debugger for ChibiOS/RT 13

ChibiOS specific Menu The file chibios.men contains an alternate menu with ChibiOS specific topics. Load this menu with the MENU.ReProgram command. You will find a new pull down menu called ChibiOS/RT. The Display topics launch the appropriate kernel resource display windows. The Stack Coverage submenu starts and resets the ChibiOS specific stack coverage, and provide an easy way to add or remove threads from the stack coverage window. The Trace pull-down menu is extended. In the List submenu, you can choose for an trace list window showing only thread switches (if any) or thread switches together with default display. The Perf menu contains additional submenus for thread runtime statistics, thread related function runtime statistics or statistics on task states. RTOS Debugger for ChibiOS/RT 14

ChibiOS Commands TASK.CONDvar Display condition variables TASK.CONDvar <condvar> Displays detailed information about a condition variable. Specify a variable or address that contains the condition variable. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. TASK.EVenT Display events TASK.EVenT <event> Displays detailed information about an event. Specify a variable or address that contains the event. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. RTOS Debugger for ChibiOS/RT 15

TASK.Heap Display heaps TASK.Heap <heap> Displays detailed information about a heap. Specify a variable or address that contains the heap. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. TASK.MailBox Display mailboxes TASK.MailBox <mailbox> Displays detailed information about a mailbox. Specify a variable or address that contains the mailbox. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. RTOS Debugger for ChibiOS/RT 16

TASK.MuTeX Display mutexes TASK.MuTeX <mutex> Displays detailed information about a mutex. Specify a variable or address that contains the mutex. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. TASK.Pool Display memory pools TASK.Pool <pool> Displays detailed information about a memory pool. Specify a variable or address that contains the pool. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. RTOS Debugger for ChibiOS/RT 17

TASK.Queue Display queues TASK.Queue <queue> Displays detailed information about a queue. Specify a variable or address that contains the queue. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. TASK.SEMaphore Display semaphores TASK.SEMaphore <semaphore> Displays detailed information about a semaphore. Specify a variable or address that contains the semaphore. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. RTOS Debugger for ChibiOS/RT 18

TASK.Thread Display threads TASK.Thread [<thread>] Displays the thread table of ChibiOS or detailed information about one specific thread. Without any arguments, a table with all created threads will be shown. Specify a thread name or magic number to display detailed information on that thread. magic is a unique ID, used by the RTOS Debugger to identify a specific threads (address of the thread structure). The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. TASK.VTimer Display virtual timers TASK.VTimer Displays a list of all created virtual timers. The field magic and other fields are mouse sensitive, double clicking on them opens appropriate windows. Right clicking on them will show a local menu. RTOS Debugger for ChibiOS/RT 19

ChibiOS PRACTICE Functions There are special definitions for ChibiOS specific PRACTICE functions. TASK.CONFIG(magic) Returns the address for the magic number TASK.CONFIG(magicsize) Returns the size of the magic number (1,2 or 4) Frequently-Asked Questions No information available RTOS Debugger for ChibiOS/RT 20