For several hours now I've been trying to instrument one of our middleware modules.
Following the (meager) instructions in the user guide to the letter, I don't manage to have the module properly detected in Systemview
Some observations :
- if no description file is present in the 'descriptions' folder, the module is flat out not detected (although it is mentioned in the manual that this description file is optional)
- we're calling SEGGER_SYSVIEW_RegisterModule(xx) with the proper arguments in the _cbSendSystemDesc method which gets called after connecting SystemView. The SEGGER_SYSVIEW_MODULE struct contains all parameter and event info, identical to the description file. We tried all variants with or without spaces in the string between the various events to no avail. We tried with no event descriptions in the SEGGER_SYSVIEW_MODULE struct and with all info. Same result
- the module is shown in SystemViewer, but with a wrong number of events (or sometimles only one event while there are 4 of them defined)
- although separated by spaces (or tabs-we tried that oo), the event name was interpreted as a concatenation of the real event name and the first parameter
Can someone post/reply with a proper description of the descriptor string in target FW or of the description file as it seems to be extremely sensitive to correct formatting. just adding or removing spaces or tabs already changes the behaviour.
This is the description file and struct we are using
FILE "SYSVIEW_vdcMemAlloc.txt"
#
# SystemView description for vdcMemAlloc
#
#
# Types
#
NamedType MemAllocErr
NamedType MemAllocErr 0=BLOCKMEMALLOC_ERR_NONE
NamedType MemAllocErr 1=BLOCKMEMALLOC_ERR_NOSPACE
NamedType MemAllocErr 2=BLOCKMEMALLOC_ERR_WRONGLIGNMENT
NamedType MemAllocErr 3=BLOCKMEMALLOC_ERR_NOMOREENTRIES
#
# API calls
#
0 AllocBlock Pool=%p Addr=%p Slot=%u Size=%u
1 FreeBlock Pool=%p Addr=%p Slot=%u Size=%u
2 CreateBlock Pool=%p Slot=%u Size=%u
3 Error Pool=%p Reason=%MemAllocErr Size=%u
in target firmware: (here the description string is on one line, but we tried all possible multipline variants as well)
Display All
We're using SystemView 3.20 and FreeRtos 10.4.3
Following the (meager) instructions in the user guide to the letter, I don't manage to have the module properly detected in Systemview
Some observations :
- if no description file is present in the 'descriptions' folder, the module is flat out not detected (although it is mentioned in the manual that this description file is optional)
- we're calling SEGGER_SYSVIEW_RegisterModule(xx) with the proper arguments in the _cbSendSystemDesc method which gets called after connecting SystemView. The SEGGER_SYSVIEW_MODULE struct contains all parameter and event info, identical to the description file. We tried all variants with or without spaces in the string between the various events to no avail. We tried with no event descriptions in the SEGGER_SYSVIEW_MODULE struct and with all info. Same result
- the module is shown in SystemViewer, but with a wrong number of events (or sometimles only one event while there are 4 of them defined)
- although separated by spaces (or tabs-we tried that oo), the event name was interpreted as a concatenation of the real event name and the first parameter
Can someone post/reply with a proper description of the descriptor string in target FW or of the description file as it seems to be extremely sensitive to correct formatting. just adding or removing spaces or tabs already changes the behaviour.
This is the description file and struct we are using
FILE "SYSVIEW_vdcMemAlloc.txt"
#
# SystemView description for vdcMemAlloc
#
#
# Types
#
NamedType MemAllocErr
NamedType MemAllocErr 0=BLOCKMEMALLOC_ERR_NONE
NamedType MemAllocErr 1=BLOCKMEMALLOC_ERR_NOSPACE
NamedType MemAllocErr 2=BLOCKMEMALLOC_ERR_WRONGLIGNMENT
NamedType MemAllocErr 3=BLOCKMEMALLOC_ERR_NOMOREENTRIES
#
# API calls
#
0 AllocBlock Pool=%p Addr=%p Slot=%u Size=%u
1 FreeBlock Pool=%p Addr=%p Slot=%u Size=%u
2 CreateBlock Pool=%p Slot=%u Size=%u
3 Error Pool=%p Reason=%MemAllocErr Size=%u
in target firmware: (here the description string is on one line, but we tried all possible multipline variants as well)
C Source Code
- SEGGER_SYSVIEW_MODULE vdcBlockAlloc = {
- "M=vdcMemAlloc, 0 AllocBlock Pool=%p Addr=%p Slot=%u Size=%u, 1 FreeBlock Pool=%p Addr=%p Slot=%u Size=%u, 2 CreateBlock Pool=%p Slot=%u Size=%u, 3 Error Pool=%p Reason=%u Size=%u",
- 4, // NumEvents
- 0, // EventOffset, Set by RegisterModule()
- NULL, // pfSendModuleDesc
- NULL, // pNext, Set by RegisterModule()
- };