Hi Joseph,

 

I finally managed to figure out what was the config issue with the release 1.6.1. Below some feedback from my side.

 

If you use the trusted-firmware-m-TF-Mv1.6.1.tar.gz from  trusted-firmware-m.git - Trusted Firmware for M profile Arm CPUs, just like I did, CMake will report the config error because the version.cmake tries to execute a git command to get the version, but since the tar.gz is not a git repo, the command fails. Maybe it would be good in the future to fix this if you provide releases this way. So, one can either comment out include(cmake/version.cmake) from CMakeLists.txt as a quick and dirty fix, or better checkout the tag directly from the git repo. After that, I was able to successfully run CMake.

 

Another point is regarding the IAR compiler: the “Getting Started” guide indicates the following IAR compiler versions: “IAR Arm compiler v8.42.x, v8.50.x

So, I took the IAR 8.50.9. But, the release 1.6.1 uses the --fpu compiler option, which is not supported by IAR 8.50.x. I took the IAR 9.10.2 and with that I managed to build the release 1.6.1 with the regression tests.

 

Maybe it would be a good idea to update the IAR version in the “Getting Started” guide to the version that you use for the testing.

 

I’ll be doing some experiments with the release 1.6.1 next and try to create a wrapper for our OS to be able run the regression tests with that.

 

Hope that this feedback is useful for you.

 

Kind regards,

Ildikó

 

From: Pocsai Ildiko LCPF-CH
Sent: Friday, November 25, 2022 3:21 PM
To: Joseph Yiu <Joseph.Yiu@arm.com>; Anton Komlev <Anton.Komlev@arm.com>; tf-m@lists.trustedfirmware.org
Subject: RE: EXTERNAL - Trusted Firmware M build error on Windows 10

 

Hi Joseph,

 

Thanks for the hint regarding Python. I double-checked it, but it seems to be fine.

 

However, I still have issues with building the release 1.6.1. I figured it out that I need to install the 32-bit Strawberry Perl and with that CMake can find the Perl installation, but I get an error while configuring the project. You can find the full log below:

 

C:\Work\TF-M\trusted-firmware-m-TF-Mv1.6.1>cmake -G"Unix Makefiles" -S . -B build -DTFM_PLATFORM=nxp/lpcxpresso55s69 -DTFM_TOOLCHAIN_FILE=toolchain_IARARM.cmake -DCMAKE_BUILD_TYPE=Relwithdebinfo -DBL2=OFF

fatal: not a git repository (or any of the parent directories): .git

CMake Error at cmake/version.cmake:13 (string):

  string sub-command REGEX, mode REPLACE needs at least 6 arguments total to

  command.

Call Stack (most recent call first):

  CMakeLists.txt:10 (include)

 

 

CMake Error at cmake/version.cmake:15 (string):

  string sub-command REGEX, mode REPLACE needs at least 6 arguments total to

  command.

Call Stack (most recent call first):

  CMakeLists.txt:10 (include)

 

 

CMake Error at cmake/version.cmake:16 (string):

  string sub-command REGEX, mode MATCH needs at least 5 arguments total to

  command.

Call Stack (most recent call first):

  CMakeLists.txt:10 (include)

 

 

-- Populating tfm_test_repo

-- Configuring done

-- Generating done

-- Build files have been written to: C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/lib/ext/tfm_test_repo-subbuild

[ 11%] Creating directories for 'tfm_test_repo-populate'

[ 22%] Performing download step (git clone) for 'tfm_test_repo-populate'

Cloning into 'tfm_test_repo-src'...

remote: Enumerating objects: 2122, done.

remote: Counting objects: 100% (2122/2122), done.

remote: Compressing objects: 100% (1172/1172), done.

remote: Total 3873 (delta 1868), reused 959 (delta 950), pack-reused 1751

Receiving objects: 100% (3873/3873), 2.35 MiB | 1.66 MiB/s, done.

Resolving deltas: 100% (2715/2715), done.

HEAD is now at 723905d Test: Fix bug in BL1 TRNG testsuite

[ 33%] Performing update step for 'tfm_test_repo-populate'

[ 44%] No patch step for 'tfm_test_repo-populate'

[ 55%] No configure step for 'tfm_test_repo-populate'

[ 66%] No build step for 'tfm_test_repo-populate'

[ 77%] No install step for 'tfm_test_repo-populate'

[ 88%] No test step for 'tfm_test_repo-populate'

[100%] Completed 'tfm_test_repo-populate'

[100%] Built target tfm_test_repo-populate

CMake Warning at CMakeLists.txt:56 (project):

  VERSION keyword not followed by a value or was followed by a value that

  expanded to nothing.

 

 

-- The C compiler identification is IAR ARM 8.50.9

-- The ASM compiler identification is IAR ARM 8.50.9

-- Found assembler: C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.4/arm/bin/iasmarm.exe

-- Found Git: C:/Users/pocsai-1/AppData/Local/Programs/Git/cmd/git.exe (found version "2.36.0.windows.1")

-- Populating mbedcrypto

-- Configuring done

-- Generating done

-- Build files have been written to: C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/lib/ext/mbedcrypto-subbuild

[ 11%] Creating directories for 'mbedcrypto-populate'

[ 22%] Performing download step (git clone) for 'mbedcrypto-populate'

Cloning into 'mbedcrypto-src'...

remote: Enumerating objects: 22978, done.

remote: Counting objects: 100% (22978/22978), done.

remote: Compressing objects: 100% (11490/11490), done.

remote: Total 22978 (delta 17960), reused 15329 (delta 11323), pack-reused 0

Receiving objects: 100% (22978/22978), 24.25 MiB | 2.13 MiB/s, done.

Resolving deltas: 100% (17960/17960), done.

HEAD is now at d65aeb37 Merge pull request #871 from ronald-cron-arm/mbedtls-3.1.0rc0-pr

[ 33%] Performing update step for 'mbedcrypto-populate'

[ 44%] Performing patch step for 'mbedcrypto-populate'

[ 55%] No configure step for 'mbedcrypto-populate'

[ 66%] No build step for 'mbedcrypto-populate'

[ 77%] No install step for 'mbedcrypto-populate'

[ 88%] No test step for 'mbedcrypto-populate'

[100%] Completed 'mbedcrypto-populate'

[100%] Built target mbedcrypto-populate

-- Found Python3: C:/Users/pocsai-1/AppData/Local/Programs/Python/Python310/python.exe (found version "3.10.5") found components: Interpreter

Start to generate partition files:

Generating Protected Storage Service in C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/generated/secure_fw/partitions/protected_storage

Generating TF-M Internal Trusted Storage Service in C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/generated/secure_fw/partitions/internal_trusted_storage

Generating TFM Crypto Service in C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/generated/secure_fw/partitions/crypto

Generating TFM Platform Service in C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/generated/secure_fw/partitions/platform

Generating TFM Initial Attestation Service in C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/generated/secure_fw/partitions/initial_attestation

Per-partition files done:

-- ---------- Display crypto configuration - start --------------

-- CRYPTO_RNG_MODULE_DISABLED is set to FALSE

-- CRYPTO_KEY_MODULE_DISABLED is set to FALSE

-- CRYPTO_AEAD_MODULE_DISABLED is set to FALSE

-- CRYPTO_MAC_MODULE_DISABLED is set to FALSE

-- CRYPTO_CIPHER_MODULE_DISABLED is set to FALSE

-- CRYPTO_HASH_MODULE_DISABLED is set to FALSE

-- CRYPTO_KEY_DERIVATION_MODULE_DISABLED is set to FALSE

-- CRYPTO_ASYM_SIGN_MODULE_DISABLED is set to FALSE

-- CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED is set to FALSE

-- CRYPTO_ENGINE_BUF_SIZE is set to 0x2080

-- CRYPTO_CONC_OPER_NUM is set to 8

-- CRYPTO_IOVEC_BUFFER_SIZE is set to 5120

-- ---------- Display crypto configuration - stop ---------------

-- Found Perl: C:/Strawberry/perl/bin/perl.exe (found version "5.32.1")

-- ----------- Display storage configuration - start ------------

-- PS_CREATE_FLASH_LAYOUT is set to ON

-- PS_ENCRYPTION is set to ON

-- PS_RAM_FS is set to OFF

-- PS_ROLLBACK_PROTECTION is set to ON

-- PS_VALIDATE_METADATA_FROM_FLASH is set to ON

-- PS_MAX_ASSET_SIZE is set to 512

-- PS_NUM_ASSETS is set to 5

-- PS_CRYPTO_AEAD_ALG is set to PSA_ALG_GCM

-- ITS_CREATE_FLASH_LAYOUT is set to ON

-- ITS_RAM_FS is set to OFF

-- ITS_VALIDATE_METADATA_FROM_FLASH is set to ON

-- ITS_MAX_ASSET_SIZE is set to 512

-- ITS_NUM_ASSETS is set to 10

-- ITS_BUF_SIZE is not set (defaults to ITS_MAX_ASSET_SIZE)

-- ----------- Display storage configuration - stop -------------

-- Pulling MCUxpresso NXP SDK drivers from https://github.com/NXPmicro/mcux-sdk

-- Configuring incomplete, errors occurred!

See also "C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/CMakeFiles/CMakeOutput.log".

See also "C:/Work/TF-M/trusted-firmware-m-TF-Mv1.6.1/build/CMakeFiles/CMakeError.log".

 

 

Do you have any idea what could be wrong? I cannot find any useful information in CMakeError.log or CMakeOutput.log.

The step Pulling MCUxpresso NXP SDK drivers from https://github.com/NXPmicro/mcux-sdk is OK because the files are pulled from the NXP git repo. So, it must be somewhere in the configuration, but I have no idea where to look.

The last release that I could build successfully on Windows was 1.4.1. All newer releases than that have build issues on my Windows machine.

 

Thanks in advance.

Ildikó

 

From: Joseph Yiu <Joseph.Yiu@arm.com>
Sent: Friday, November 25, 2022 10:48 AM
To: Pocsai Ildiko LCPF-CH <Ildiko.Pocsai@mt.com>; Anton Komlev <Anton.Komlev@arm.com>; tf-m@lists.trustedfirmware.org
Subject: RE: EXTERNAL - Trusted Firmware M build error on Windows 10

 

Hi Ildikó,

 

You might have multiple versions of Python installed on your Windows machine.

In command shell, type

C:\> where python

You might see something like

C:\Program Files\Python37\python.exe

C:\Users\<username>\AppData\Local\Microsoft\WindowsApps\python.exe

 

The TF-M build system might located the latest version of Python (e.g. 3.10), but when you run pip3 install -r tools\requirements.txt

It might install the modules in an older version (e.g. 3.7).

 

To make sure you are installing the Python tools to the right version of Python, you can specify which Python to use when running pip:

C:\>C:\Users\<username>\AppData\Local\Microsoft\WindowsApps\python -m pip install -r tools\requirements.txt

 

Hope this solve the Python problem.

Regards,

Joseph

 

From: Pocsai Ildiko LCPF-CH via TF-M <tf-m@lists.trustedfirmware.org>
Sent: 24 November 2022 15:50
To: Anton Komlev <Anton.Komlev@arm.com>; tf-m@lists.trustedfirmware.org
Subject: [TF-M] Re: EXTERNAL - Trusted Firmware M build error on Windows 10

 

Hi Anton,

 

Just wanted to ask if there are any updates regarding the build failure on Windows with the IAR compiler. I tried to build the head version on Win x64 for NXP LPC55S69  using

 

IAR ANSI C/C++ Compiler V8.50.9.278/W32 for ARM

GNU Make 3.81

git version 2.36.0.windows.1

CMake 3.24.2

Python 3.10.5

 

but I still get some errors. They are though not the same as during my previous try:

 

[ 77%] Building C object secure_fw/CMakeFiles/tfm_s.dir/__/platform/ext/target/nxp/lpcxpresso55s69/Device/Source/startup_lpcxpresso55s69.o

 

  extern typeof(__vector_table) __attribute__ ((alias ("__vector_table"))) __Vectors;

         ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",218  Error[Pe260]:

          explicit type is missing ("int" assumed)

 

  extern typeof(__vector_table) __attribute__ ((alias ("__vector_table"))) __Vectors;

                                ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",218  Error[Pe1113]:

          attributes are not permitted in a function definition

 

  extern typeof(__vector_table) __attribute__ ((alias ("__vector_table"))) __Vectors;

                                                                           ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",218  Error[Pe169]:

          expected a declaration

 

  void Reset_Handler(void)

       ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",228  Error[Pe099]:

          a declaration here must declare a parameter

 

  {

  ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",229  Error[Pe065]:

          expected a ";"

At end of source  Warning[Pe012]: parsing restarts here after previous syntax

          error

 

  extern typeof(__vector_table) __attribute__ ((alias ("__vector_table"))) __Vectors;

                ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",218  Warning[Pe1051]:

          standard requires that parameter "__vector_table" be given a type by

          a subsequent declaration ("int" assumed)

At end of source  Error[Pe130]: expected a "{"

At end of source  Error[Pe067]: expected a "}"

 

  extern typeof(__vector_table) __attribute__ ((alias ("__vector_table"))) __Vectors;

         ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",218  Error[Pe1154]:

          entity declared as alias cannot have definition

 

  extern typeof(__vector_table) __attribute__ ((alias ("__vector_table"))) __Vectors;

         ^

"C:\Work\TF-M\head\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",218  Error[Pe1153]:

          declaration does not match its alias variable "__vector_table @

          ".intvec""

make[2]: *** [secure_fw/CMakeFiles/tfm_s.dir/__/platform/ext/target/nxp/lpcxpresso55s69/Device/Source/startup_lpcxpresso55s69.o] Error 2

make[1]: *** [secure_fw/CMakeFiles/tfm_s.dir/all] Error 2

make: *** [all] Error 2

 

Could you please tell if there is any plan to fix these errors in the near future?

 

Another question regarding the latest release 1.6.1: I tried to build this too using the setup mentioned above, but I get an error for missing Perl:

 

CMake Error at C:/Program Files/CMake/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:230 (message):

  Could NOT find Perl (missing: PERL_EXECUTABLE)

Call Stack (most recent call first):

  C:/Program Files/CMake/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)

  C:/Program Files/CMake/share/cmake-3.24/Modules/FindPerl.cmake:84 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)

  build/lib/ext/mbedcrypto-src/library/CMakeLists.txt:115 (find_package)

 

I installed Straberry Perl on my machine and added it to PATH, but the error still persists.  I tried also to re-run pip3 install -r tools\requirements.txt but it says that all the requirements are up-to-date. What am I missing here?

 

Thanks in advance.

Ildikó

 

From: Anton Komlev <Anton.Komlev@arm.com>
Sent: Monday, October 31, 2022 2:11 PM
To: Pocsai Ildiko LCPF-CH <Ildiko.Pocsai@mt.com>; tf-m@lists.trustedfirmware.org
Subject: Re: EXTERNAL - Trusted Firmware M build error on Windows 10

 

Hi Ildiko,

 

Thanks for reporting. The same defect is reproducible on other platforms and possibly caused by some recent changes.

Let me update you here when fix be available.

 

Best regards,

Anton

 

From: Pocsai Ildiko LCPF-CH via TF-M <tf-m@lists.trustedfirmware.org>
Sent: Monday, October 31, 2022 5:56 AM
To: tf-m@lists.trustedfirmware.org
Subject: [TF-M] Trusted Firmware M build error on Windows 10

 

Hello,

 

I’m trying to build the Trusted Firmware M on Win10 x64 for NXP LPC55S69 using the IAR compiler, but I get the following error:

 

[ 76%] Building C object secure_fw/CMakeFiles/tfm_s.dir/__/platform/ext/target/nxp/lpcxpresso55s69/Device/Source/startup_lpcxpresso55s69.o

 

  extern uint32_t __INITIAL_SP;

                  ^

"C:\Work\TF-M\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",29  Error[Pe007]:

          unrecognized token

 

  extern uint32_t __INITIAL_SP;

                  ^

"C:\Work\TF-M\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",29  Error[Pe065]:

          expected a ";"

 

  extern uint32_t __INITIAL_SP;

                  ^

"C:\Work\TF-M\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",29  Error[Pe007]:

          unrecognized token

 

  extern uint32_t __STACK_LIMIT;

                  ^

"C:\Work\TF-M\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",30  Error[Pe007]:

          unrecognized token

 

  extern uint32_t __STACK_LIMIT;

                  ^

"C:\Work\TF-M\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",30  Error[Pe065]:

          expected a ";"

 

  extern uint32_t __STACK_LIMIT;

                  ^

"C:\Work\TF-M\trusted-firmware-m\platform\ext\target\nxp\lpcxpresso55s69\Device\Source\startup_lpcxpresso55s69.c",30  Error[Pe007]:

          unrecognized token

 

    (VECTOR_TABLE_Type)(&__INITIAL_SP),            /*      Initial Stack Pointer */

 

In the attachment, you can find the full build log and also the CMake build file generation log.

 

Some details about my setup:

 

Win10 Enterprise x64. Version 20H2

IAR ANSI C/C++ Compiler V8.50.9.278/W32 for ARM

GNU Make 3.81

git version 2.36.0.windows.1

CMake 3.24.2

Python 3.10.5

 

I followed the steps from the Getting started guide here than the steps to build the framework for LPC55S69 here.

 

Do you have any idea what I’m missing?

 

In case you need any further information let me please know.

 

Thanks in advance.

 

Kind regards,

Ildikó Pocsai