Hi Reed,

 

Most of the complexity is coming from the nature of TF-M. There is the requirement of partitioning (separating the execution context of secure services). This is implemented by security related hardware. The configuration of these components must match the configuration of the software (memory map). Since Cortex-M devices do not have an MMU, this configuration needs to be handled compile time. I don’t see a way around this.

In short security is complex by nature and there is no way to avoid this complexity being reflected in software.

“This reality argues for a more modular build packaging system that allows for it. “

I agree. On the other hand I don’t see why the current implementation would not support this. Of course there is room for improvement, and also some additional layers are yet to be implemented. I think the team is already trying to find the balance between the IDE and non IDE worlds and is open for suggestions and contribution.

 

/George

 

From: Reed Hinkel <Reed.Hinkel@arm.com>
Sent: 23 September 2020 13:01
To: Gyorgy Szing <Gyorgy.Szing@arm.com>; tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hello Gyrogy:


Your comment raises the question.  Why is TF-M so complex and does it need to be the only answer?  Either it needs to be simplified or respect must be paid to support in commercial tools as a first class citizen.  Commercial tools are the path for large scale product developers. If they can’t engage TF-M with commercial tools or SiP tools then developers will face challenges to develop with it.  It there are challenges they may even avoid using it in favor of simplified solutions much as they do today.

 

Multiple target use cases will be using various components of TF-M (MbedTLS with and without hardware interfaces, Attestation, Audit Logs, etc.):

 

  1. Arm v8M – Cortex-M33, M35, M55
  2. Dual Core Systems – Multiple possible configs
  3. Cortex v6M of v7M – M0, M0+, M3 & M4
  4. TF-A
  5. Other Cortex-R & Cortex-A implementations

 

This reality argues for a more modular build packaging system that allows for it. 

 

All the best!

Reed

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> on behalf of Gyorgy Szing via TF-M <tf-m@lists.trustedfirmware.org>
Reply-To: Gyorgy Szing <Gyorgy.Szing@arm.com>
Date: Wednesday, September 23, 2020 at 5:04 AM
To: "tf-m@lists.trustedfirmware.org" <tf-m@lists.trustedfirmware.org>
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi Andrej,

 

TF-M relies heavily on compile time configuration, and C is quiet limited on that. This means we cannot rely on the only standardized part of the “ecosystem” solely, and we have to use non-standard tools. I would love to have a portable automation solution supported by most IDEs.


Yes, a lot of projects can go well with a single configuration header but unfortunately TF-M is more complex than that:

 

None of these can be solved with IDEs in a portable way. I understand that adding IDE support for TF-M is challenging but the root cause is not how we implemented the build system, but how IDEs can handle the complexity needed by TF-M.

 

/George

 

From: Andrej Butok <andrey.butok@nxp.com>
Sent: 23 September 2020 09:33
To: Gyorgy Szing <Gyorgy.Szing@arm.com>; Ken Liu <Ken.Liu@arm.com>
Cc: nd <nd@arm.com>
Subject: RE: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi Ken,

 

So we are using one default/typical configuration. If any change in it, a user have to do changes manually which are not clear without deeper knowledge of the TFM project.

But this is the issue of the TF-M chosen approach - fully rely on cmake preprocessing.

 

The proposal is to use approach which is good for all worlds (cmake and IDEs) and which is used by all embedded MCU open-source projects like MbedTLS, FreeRTOS, lwIP, FNET and etc.

Which is to have only one set of platform-independent files and the framework configuration from a user/project configuration file.

It will work for both worlds, will solve all configuration issues we have, and will make TF-M easy to use and more popular.

 

I am talking about this from very beginning. As no steps in right direction, we have a forked TF-M for our SDK.

 

Thanks George for support ;)

Andrej Butok

 

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Ken Liu via TF-M
Sent: Wednesday, September 23, 2020 8:45 AM
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi Andrej,

 

Sounds like your IDE is using the default .sct/.ld file, may I ask some a question that:

 

 

We need to support more components (partition is the direct example), so in this case, the sct/ld can’t be avoided to be modified.

 

Or do you think if we put a specific .sct/.ld under nxp folder would work if there is no other partitions are needed?

 

Thanks.

 

/Ken

 

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Gyorgy Szing via TF-M
Sent: Wednesday, September 23, 2020 8:46 AM
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi,

 

Good point, this is an important factor. I think templating can be IDE compliant as long as the IDE does support pre-build step(s). The current build flow already contains steps requiring this and thus I don’t think situation would be much worse with any mentioned solution than it is today.

 

/George

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Andrej Butok via TF-M
Sent: 23 September 2020 08:33
To: Ken Liu <Ken.Liu@arm.com>
Cc: tf-m@lists.trustedfirmware.org
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Please, do not add changes to sources & linker-files which may harm Non-Cmake systems (IDEs).

 

Thanks,

Andrej Butok

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Ken Liu via TF-M
Sent: Wednesday, September 23, 2020 8:05 AM
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

As cmake is still the build system, let me check the cmake related feature – but need to wait the build system change get merged then we can take a look where to start.

 

BR.

 

/Ken

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Gyorgy Szing via TF-M
Sent: Tuesday, September 22, 2020 4:43 PM
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi Ken,

 

I think templating is a good approach here, the current C preprocessor based solution is a very limited implementation of this.
I see two main contenders for templating:

  1. cmake has built in support for templating with the configure_file() [1] command. This would move ownership of this information info the build scripts, which are the focus point for such info already. A cmake based solution would feel more native to the existing system. On the other hand other solutions might have more features, which could lead to easier to read template files. Also cmake as a template engine is not that widely adopted.
  2. jinja2 [2]. A widely adopted and more feature rich templating engine. TF-M already uses it for manifest file handling. I suggest using yahsa [3] instead of a custom pyhton script as the cli frontend though. This could speed up development as long as no complex processing is needed and the templates can be filled based on “simple” values.

 

Which of the above is the best for the task depends on template file readability and on complexity of the task. It could be nice if a clean split could be made, and we could stop using the C preprocessor based processing completely.

“Not sure if all these format support #include”
The build system works around that by implementing a compiler specific cmake function to add the pre-processing step for compilers not supporting pre-processing out of the box.


/George

[1] https://cmake.org/cmake/help/v3.18/command/configure_file.html
[2] https://jinja.palletsprojects.com/en/2.11.x/
[3] https://github.com/kblomqvist/yasha

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Ken Liu via TF-M
Sent: 22 September 2020 10:15
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi,

 

During the level3 prototyping, we found using a unified sct/ld/file would be hard because we are trying to cover platform-specific setting in ONE place.

 

The biggest concern of preventing spreading the LD is: if there are COMMON changes then every platform source needs to be updated.

 

I believe the COMMON change is the arrangement of ARoT and PRoT, those platform-specific things such as CODE_SRAM and MPU alignment issue should not be covered inside the common sct/ld/icf.

 

Not sure if all these format support #include but as we are using a template so it should be possible to put COMMON settings inside a COMMON template and let platform to contain these common part and then add the specific settings.

 

I have a rough idea (see above) and need more investigation, request for ideas/concerns about this part.

 

Thanks.

 

/Ken

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Shawn Shan via TF-M
Sent: Wednesday, August 5, 2020 1:27 PM
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: [TF-M] Proposal to separate SCT/LD into each platform folder

 

Hi all,

 

There are many differences in linker scripts between each platform. Using a common_s.sct/ld makes it too complicated.

And at the same time, in order to achieve isolation level 3, the position of the sessions in scatter and linker script file needs to be adjusted.

The common linker scripts would be more complicated with isolation L3.

 

So I would like to propose to have dedicated linker scripts for platforms with enough differential arrangements.

What’s your opinion on this?

 

Best regards,

Shawn