makefile inside the ${SDK_INSTALL_PATH}/tools/sysfw/boardcfg/ folder.This section describes the various tools used in conjunction with System Controller Firmware (SYSFW)
| Folder/Files | Description |
|---|---|
| ${SDK_INSTALL_PATH}/tools/bin2c/ | |
| bin2c.py | Tool to convert a binary file to a C array of hexadecimals |
| ${SDK_INSTALL_PATH}/tools/sysfw/boardcfg/ | |
| sysfw_boardcfg_validator.py | Python script which validates the boardcfg. Used internally in the boardcfg makefile |
This tool is based on Texas Instrument's SysConfig tool. It allows you to configure various system level parameters and generate the data which can be fed into many software components. Typical usage for this tool is for System integrators, where one would be able to partition various resources across different software components. These resources includes DMA channels, rings, proxies, interrupts, etc. Apart from this, the tool supports configuration of QoS (Quality of Service) and Firewall parameters which helps in ensuring partitioning of peripheral devices across different CPUs or virtual machines.
Please refer to Modifying resource allocation guide if you want to modify the default resources using K3 Resource Partitioning Tool.
SYSFW Board Config is a SOC specific configuration data regarding the various system attributes controlled by the SYSFW. These include resources, power and clock, security etc. This configuration is sent to SYSFW during boot time. The default configuration is stored in source/drivers/sciclient/sciclient_defaultBoardCfg/{SOC}/
To enable SYSFW traces, change #undef SYSFW_TRACE_ENABLE to #define SYSFW_TRACE_ENABLE in source/drivers/sciclient/sciclient_default_boardcfg/{SOC}/sciclient_defaultBoardcfg.c. Then rebuild the boardcfg as explained in the above section. This enables all the following trace sources and destinations -
trace_dst_enables): Controls where logs are output.TISCI_BOARDCFG_TRACE_DST_UART0 - MAIN UART outputTISCI_BOARDCFG_TRACE_DST_MEM - Memory bufferTISCI_BOARDCFG_TRACE_DST_ITM - CCS Consoletrace_src_enables): Controls which components generate logsTISCI_BOARDCFG_TRACE_SRC_PM - Power Management tracesTISCI_BOARDCFG_TRACE_SRC_RM - Resource Management tracesTISCI_BOARDCFG_TRACE_SRC_SEC - Security tracesTISCI_BOARDCFG_TRACE_SRC_BASE - Baseport tracesTISCI_BOARDCFG_TRACE_SRC_USER - User-level tracesTISCI_BOARDCFG_TRACE_SRC_SUPR - Supervisor-level tracesTo selectively enable specific traces instead of all, follow these steps:
source/drivers/sciclient/sciclient_default_boardcfg/{SOC}/sciclient_defaultBoardcfg.c.debug_cfg section in the tisci_boardcfg structureConfigure trace settings based on your needs:
In the #else block (when SYSFW_TRACE_ENABLE is not defined), replace the default values with your desired configuration:
Example 1: Enable PM and RM logs to both UART and memory
Example 2: Enable security logs to UART
Depending on the destination flags enabled, logs can be viewed from different locations:
UART Destination (TISCI_BOARDCFG_TRACE_DST_UART0):
/dev/ttyUSB2/dev/ttyUSBx) may vary depending on your EVM configuration and USB connection order. Check dmesg | grep tty after connecting the EVM to identify the correct port.Memory Destination (TISCI_BOARDCFG_TRACE_DST_MEM):
ITM Destination (TISCI_BOARDCFG_TRACE_DST_ITM):
After collecting the SYSFW logs as described in the above section, parse them using the sysfw_trace_parser.py script. This will decode the hex trace values and produce a readable text file as output, which helps interpret the logs and debug system issues.
cmd.exe) or Linux bash shell:Example:
To view all available command-line options:
For more details on trace format and interpretation, refer to: System Firmware Trace Layer Documentation