Most tools used for compliance and SBOM generation use SPDX identifiers
This change brings us a step closer to an easy SBOM generation.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
If the controller frequency is high, system timer interrupts will
eventually interrupt the controller function, thereby increasing the
execution time. This may lead to skipping the control cycle, which
negatively affects the control algorithm.
With this option enabled, interrupts are disabled for the duration
of the controller function execution.
Here example results from CONFIG_EXAMPLES_FOC_PERF output
for b-g431b-esc1 board with CONFIG_EXAMPLES_FOC_NOTIFIER_FREQ=10000:
1. CONFIG_EXAMPLES_FOC_CONTROL_CRITSEC=n
exec ticks=5258
nsec=30929
per ticks=21268
nsec=125105
2. CONFIG_EXAMPLES_FOC_CONTROL_CRITSEC=y
exec ticks=3428
nsec=20164
per ticks=19203
nsec=112958
The difference is ~12us!
CONFIG_EXAMPLES_FOC_RUN_DISABLE option is used for tests and benchmarks, so we don't
care about wrong results for motor identification and sensor alignment routines
fix compilatgion error:
foc_motor_f32.c: In function 'foc_motor_init':
foc_motor_f32.c:1574:7: error: label 'errout' used but not defined
1574 | goto errout;
fix snprintf warning:
foc_thr.c:110:39: warning: '%d' directive output may be truncated writing between 1 and 11 bytes into a region of size 7 [-Wformat-truncation=]
110 | snprintf(mqname, sizeof(mqname), "%s%d", CONTROL_MQ_MQNAME, envp->id);
| ^~
foc_thr.c:110:36: note: directive argument in the range [-2147483648, 0]
110 | snprintf(mqname, sizeof(mqname), "%s%d", CONTROL_MQ_MQNAME, envp->id);
| ^~~~~~
foc_thr.c:110:3: note: 'snprintf' output between 5 and 15 bytes into a destination of size 10
110 | snprintf(mqname, sizeof(mqname), "%s%d", CONTROL_MQ_MQNAME, envp->id);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
After the start request to FOC device, we should return to the
beginning of the loop and wait for the first synchronization event.
This also fixes the problem with the extended first loop cycle,
so we can remove the workaround in foc_perf.
This app can work now as sensorless ESC.
Also introduce a cmd line option that force open-loop control
which is useful when tuning angle/velocity observers
This alows nxscope data to be sent with every cycle of the control loop,
which increases the execution time of the control loop, but allows data
to be sent at a highier frequency using the small nxscope buffer.
Useful when tuning and debuging using RTT transfer.