CFS command line utility
CFSUtil is an executable which provides a lot of the functionality within CodeFusion Studio and can be invoked directly from the command line.
Accessing CFSUtil
From the CFS Terminal, access CFSUtil with the cfsutil
command.
From Windows command prompt, access CFSUtil with <CFS-Install>/Utils/cfsutil/bin/cfsutil.cmd
.
From Linux, access CFSUtil with <CFS-Install>/Utils/cfsutil/bin/cfsutil
.
Note
This page refers to cfsutil
, but the commands used are the same regardless of method used.
Structure
CFSUtil contains a hierarchy of commands and sub-commands, each with their own parameters and help menus.
Help
Passing --help
at any level of the hierarchy shows the help information about that component.
Example
cfsutil --help
provides top level help context.
cfsutil elf --help
provides help context for the elf component.
cfsutil elf info --help
provides help context for the info generation of the elf component.
ELF
Provides a series of commands to get information about an ELF file.
Analyze
cfsutil elf analyze [file] [-j]
Provides high-level information about the ELF file, including the platform, stack/heap sizes and flash/sram sizes.
Use the -j
switch to produce output in JSON format.
Info
cfsutil elf info [FILEPATH] [-j] [-h] [-a] [-c] [-s] [-n] [--debug_segments] [--debug_sections] [--debug_cu] [--debug_lt] [--debug_abbrevs] [--debug_syms] [--debug_dies] [--debug_heuristics] [-v]
Provides more in depth information about the ELF file.
The following switches can be used individually or in combination to select the required information.
Switch | Information |
---|---|
-a |
Attributes |
-c |
Core information about the ELF file |
-h |
Header |
-s |
Size |
If debug information is available, the following switches are also available.
Switch | Information |
---|---|
--debug_abbrevs |
Contents of .debug_abbrev section |
--debug_cu |
.debug_info for each compilation unit |
--debug_dies |
Debugging Information Entry (DIE) tree |
--debug_heuristics |
Heuristic information |
--debug_lt |
contents of .debug_line section |
--debug_sections |
List of ELF sections |
--debug_segments |
List of ELF segments |
--debug_syms |
List of symbols |
Additional options are available to control the output.
Switch | Effect |
---|---|
-j |
Output in JSON format |
-n |
Do not populate database |
-v |
Verbose output |
Memory
cfsutil elf memory [FILEPATH] [-s] [-t] [-y] [-i <value>] [-n <value>] [-j] [-d]
Provides information on symbols, sections or segments within the ELF file.
Available switches:
Switch | Effect |
---|---|
-d |
Print detailed information |
-i |
Display from sectment/segment with id |
-s |
List of segments |
-j |
Output in JSON format |
-n |
Display from sectment/segment with name |
-t |
List of sections in each segment |
-y |
List the symbols contain in each section |
Note
For -t
and -y
, the sections/symbols to display can be restricted to a segment/section using an id (-i
) or a name (-n
).
For -y
, the segment/symbols can be restricted to a segment/section using a name (-n
).
Symbols
cfsutil elf symbols [FILEPATH] [SQLQUERY] [-j] [-f]
This command allows you to run SQL queries on the symbol table.
This involes queries on a table called symbols
with the following fields.
Name | Meaning |
---|---|
num |
Entry number |
name |
Symbol name |
type |
The type associated with the symbol: None, Object, Function or Filename |
address |
The start address of the symbol |
section |
The section containing the symbol |
size |
The size of the symbol |
bind |
The binding type of the symbol: Weak, Local or Global |
visibility |
The visibility of the symbol: Default or Hidden |
Any valid SQL construct is supported here, including WHERE
, ORDER
, LIMIT
, LIKE
and REGEXP
.
Some examples of queries are as follows.
Filter | Query examples |
---|---|
Specific colums | SELECT name,address FROM symbols |
Symbols larger than 100 bytes | SELECT * FROM symbols WHERE size > 100 |
Largest symbols | SELECT * FROM symbols ORDER BY size DESC LIMIT 10 |
Symbols between addresses | SELECT * from symbols WHERE address BETWEEN 0x10000000 AND 0x20000000 |
The output can be modified with the following switches.
Switch | Effect |
---|---|
-f |
Print full path (if debug info is available) |
-j |
Output in JSON format |
Engines
Code is generated from config choices by means of a code generation 'engine'. There are a certain number of engines included out of the box, and users can author and register additional engines on the command-line.
The engines
command enables you to interact with the list of available and registered code conversion engines known to cfsutil.
List
cfsutil engines list [-v] [-f text|json]
Lists the available export engines.
Use the -v
switch for additional information on the engines.
Use the -f
switch to specify the output format: either text
(default) or json
.
Info
cfsutil engines info NAME [-f text|json]
Provides information about the named engine.
Use the -f
switch to specify the output format: either text
(default) or json
.
SoCs
Each SoC supported by CodeFusion Studio is associated with an SoC Data Model.
This data model is a JSON file that contains information on the package, available memory, config settings and register details, and other essential information required to enable the graphical config tools and code generation functionality.
The socs
command allows you to interact with the SoC data models known to cfsutil.
List
cfsutil socs list
Provide a list of available SoC data models.
Export
cfsutil socs export -n <value> [-f json] [--gzip] [-i <value>] [-m] [-o stdio]
Outputs the SoC data model in JSON format for the specified SoC. The -n=<name>
switch is required, whilst the rest are optional.
Switch | Effect |
---|---|
-n=<name> |
The name of the SoC.[^1] |
-i=<val> |
The number of spaces for JSON indentation (use `$\'t' for tabs). Default is 2 spaces. |
-m |
Minify the JSON output. |
--gzip |
Compress the output with gzip |
Note
It is recommended to pipe the output to a file, especially if compressing the output:
cfsutil socs export -n=max32690-tqfn --gzip > file.gz
Generate
cfsutil generate -i <value> [-e <value>] [-o <value>] [-v] [-p] [-f text|json] [--force] [--list] [--file <value>]
Generates source code from a .cfsconfig
file. The -i <filename>
switch is required, whilst the others are optional. The following switches are available.
Switch | Effect |
---|---|
-i=<file> |
The .cfsconfig file to generate from |
-o=<directory> |
The output directory for generated code |
-p |
Preview. Generate output to the console instead of a file |
-f=<format> |
The format of the preview output (either text or json ) |
-v |
Generate verbose output |
--force |
Overwrite existing files |
--file=<file> |
Only generate the specified file |
--list |
List the file(s) that will be generated |
Note
A list of SoCs can be generated with cfsutil socs list
.