Hi all,
I am very new to SystemView (but I did use similar tools in the past). I just started to use it on a complex project I am working on (about 15 user tasks) and there are some things I cannot understand.
The setup is as follows:
Connection issues
Using the system with a gdb-based debugger (Eclipse with CDT) I am having trouble to start recording events, I frequently get Control Block not found errors
(especially if I alter data layout with a rebuild). I seem to have found a working startup sequece:
First task never active
Our system startup is as follows:
step 2: 4 rows are shown: Unified, Scheduler, Idle and SystemInit - good.
step 3: I see 2 additional tasks: Task 0x0 (is this the second init task I read about?) and Tmr Svc. Time bars in pale colour appear next to
SystemInit and "Tmr Svc" tasks. From the docs this indicates the tasks exist.
step 4: SystemInit task initializes all parts of the system. I see various events corresponding to system calls and Systick ISR. However,
the SystemInit task's bar colour is always a pale green. Furthermore, Systick's ISR exit events report "Returns to Idle". From the graphical
representation it looks like SystemInit never executes, while I know it is the one who is performing all activity. When other tasks are created,
they also get their own bars in pale colours (and this looks correct since they are not running yet - SystemInit is the higher prio task).
Am I missing something here?
If I let the system run some second further, I see various task activation bars, sometimes preceded by gray bars indicating the tasks
are ready but cannot run yet.
However, I can see a situation like this:
Duplicated events?
In the events list I see multiple System Info and Description lines. The information appears duplicated. Is this expected or suggests a problem?
I am very new to SystemView (but I did use similar tools in the past). I just started to use it on a complex project I am working on (about 15 user tasks) and there are some things I cannot understand.
The setup is as follows:
- CPU:Cypress (former Spansion) S6E2CC8J0A, with 32MB external SDRAM
- RTOS: FreeRTOS 9.0.0
- FreeRTOS heap: in SRAM section@0x20038000 - I set SEGGER_SYSVIEW_ID_BASE to this address
- RTT Control Block in data section
- J-Link SWD connection 8MHz
Connection issues
Using the system with a gdb-based debugger (Eclipse with CDT) I am having trouble to start recording events, I frequently get Control Block not found errors
(especially if I alter data layout with a rebuild). I seem to have found a working startup sequece:
- set same interface speed in both debugger and systemview
- make sure to clean all jlink connections (e.g. close debugger and SystemView)
- load code with debugger
- run code up to the instruction following SEGGER_SYSVIEW_Conf();
- open SystemView and start recording
First task never active
Our system startup is as follows:
- hw init up to SEGGER_SYSVIEW_Conf() call
- creation of SystemInit task (max prio)
- start scheduler
- SystemInit task starts executing and starts all the rest of tasks in the system
step 2: 4 rows are shown: Unified, Scheduler, Idle and SystemInit - good.
step 3: I see 2 additional tasks: Task 0x0 (is this the second init task I read about?) and Tmr Svc. Time bars in pale colour appear next to
SystemInit and "Tmr Svc" tasks. From the docs this indicates the tasks exist.
step 4: SystemInit task initializes all parts of the system. I see various events corresponding to system calls and Systick ISR. However,
the SystemInit task's bar colour is always a pale green. Furthermore, Systick's ISR exit events report "Returns to Idle". From the graphical
representation it looks like SystemInit never executes, while I know it is the one who is performing all activity. When other tasks are created,
they also get their own bars in pale colours (and this looks correct since they are not running yet - SystemInit is the higher prio task).
Am I missing something here?
If I let the system run some second further, I see various task activation bars, sometimes preceded by gray bars indicating the tasks
are ready but cannot run yet.
However, I can see a situation like this:
- system basically IDLE
- SysTick ISR move 2 tasks into the ready list and returns to IDLE (!)
- ms elapse, other Systick ISRs occur, some are higher prio tasks are scheduled for a short time
- after some 60ms the one of 2 tasks above gets executed, the other one gets a gray bar
Duplicated events?
In the events list I see multiple System Info and Description lines. The information appears duplicated. Is this expected or suggests a problem?