Loading...
 

SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32


STM32 assembly .ifdef not working?

Seems like no matter what I try the .ifdef does not work. It always takes the default path.

This happens with a symbol defined in the make settings as well as with symbols defined in any other way, including .equ and .set

I even tried using a label that I used for memory access a few lines down in the code. Same result, .ifdef used the default path and the memory access worked.

France

Hi,

Could you be a bit more explicit about how the symbol you want to test has been defined? What do you mean by “defined in the make settings”?

Note that a referenced symbol is not a defined symbol: it may assemble correctly, as an undefined symbol that will be resolved by the linker, but is not a defined symbol, as checked by .ifdef

Also the symbol must be defined in the same file, before being tested by .ifdef

Last option, sometimes more natural to C programmers, name your assembler source file with an uppercase S as extension and it will be preprocessed by the C preprocessor, so you could use all the C pre-processor directives (include, ifdef, etc...)

Hope this helps,

Bernard (Ac6)

Hi Bernard,
thank you, that was exactly the information I was missing.

I changed the files to .S and let the C pre-processor do the job. Now it works.

Primarily I code in assembly, but the project uses the ST libraries for some tasks, so I do have to mix the code.

Greetings
Guido