Oh, I'm sorry. I completely removed from my mind that I already posted this question some days ago. I was thinking... I have to make this question in the free support forum... but forgot that I made it already.
I'm interesting in testing QP/Spy tool to add high-speed and high-efficiency trace and logging capabilities to embedded systems. I started to study the code and manual, but it seems QP/Spy is strongly linked to QP/C framework that I don't use. Do you have a fully-working example project or a recipe to configure, include and use QP/Spy in a project that doesn't use QP/C framework?
I'd like to test the Q_SPY module without the QP/C state-machine framework. I tried to import qs directory and qs_port.h in one of my project, but the build failed. It seems there are many dependencies of QP/C. Is it possible to have a recipe to include Q_SPY as a standalone module?
I tested the following source file: #include <stdio.h> #define __SAMC21N18A__ #define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __)) #define SAM SAM_PART_IS_DEFINED(SAMC21N18A) int main() { #if SAM printf("Hello World"); #endif return 0; } gcc compiles it and the application shows "Hello World" as expected. However, when I analyze this file with cppcheck I obtain the following: cppcheck -E main.c int main ( ) { return 0 ; } I'm using Cppcheck 2.8 under Windows. The macro SAM_PART_IS_DEFINED()...
I have a project with the "classical" superloop architecture: while(1) { task1(); task2(); ... } The tasks are already non blocking. Now I'd like to test QPC framework by small steps. I should rewrite all tasks as Active Objects, but it is a long and tedious job that isn't feasible in short time. So I'm thinking to create a very simple Active Object for each task, a single-state state-machine. When a repetitive timer expires, I call task<n>() function in the state handler.</n> static QState LBus_main(LocalBus...
I'm using avr port of qpn. In some cases I need to post an event with a parameter of 8 bytes (64 bits). Unfortunately this isn't possible because Q_PARAM_SIZE can be defined only as 0, 1, 2 or 4. I'm using Microchip AVR8 toolchain that has uint64_t. Is it possible to change qepn.h to allow value 8 too? Are there some drawbacks?
Interestingly, the "type-punned pointer" warning is emitted only with the -Os command-line option. This is not strange. Only during optimization the compiler assumes the strict-aliasing rule and emits warnings if this rule appears to be broken somewhere. Thank you for your workaround. It's very strange why casting is not sufficient, but a temporary variable is.
Could you perhaps try to build the standard DPP example... I just tried and the same warnings appear. I used make CONF=rel, because of -Os option. The version of my toolchain is: C:\avr8\avr8-gnu-toolchain\bin\avr-gcc --version avr-gcc (AVR_8_bit_GNU_Toolchain_3.6.1_1750) 5.4.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It seems my compiler is...