-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Potential Tool Flow for Project Generation - Discussion #12
Comments
Hi, please find enclosed a document introducing some vocabulary and concepts we would like to discuss in the context of this project. Thanks & Regards, |
Follow Up here: #31Hi, minor question about the file format : why yaml ?
Besides, with JSON we may validate our data thanks to JSON schema: Benefits (taken from the JSON schema web site): I assume JSON schema can be used to validate YAML documents (or maybe YAML schema exists?) but to me YAML sounds like an add-on we might not need? Also, I know JSONPath exists but I do not know if YAML has the same tooling available ? To be discussed in a low priority I guess. Thanks & Regards, |
Follow Up here: #32Hi, another low priority discussion : the template engine. "Review template engines: Freemarker works, but handlebars might be easier to use." I am not familiar with Freemarker but with handlebar it is quite "easy" to define your own helpers: It has also a factorization system: But the input object format accepted by handlebar might be an issue ? To be discussed in a low priority I guess. Thanks & Regards, |
Hi, I would also like to understand better the concept of clayer. What is clayer bringing on top of a component with dependencies ? Thanks & Regards, |
Hi, the ctarget concept is not crystal clear to me. So, in a multi-context application project, would we have several ctarget files ? Thanks & Regards, |
Hi, regarding .rzone and DFP. To me a DFP could provide an rzone (or the equivalent). Also, I think we need to consider in a central repository MCU and board resources (+ shields if any) : seems like the rzone does not really cover this ? Thanks & Regards, |
For more information about project layers (*.clayer) please read here: Layers are the next level of abstraction between projects and components. The benefit of layers is that it is not only a list of components, but a combination of components that are already pre-configured for a range of use cases. |
The DFP (Device Family Pack) contain device descriptions and ship device deliverables like SVD, Flash Programming Algorithms, Device Header, HAL, Device documentation, etc. Therefore it is a good location for a resource description file (rzone). But certainly we need to support this on a board level (Board Support Pack). |
Hi Joachim, I remember Lab4Layer as I played with it some time back. Thanks & Regards, |
|
Please take a look at this board layer: |
Hi Joachim, ok so the ctarget is the implementation of the application project concept right ? Now, the cproject could be the SW project implementing an execution context I guess.
Then regarding resource allocation, as you know, we may envision context segregation. Thanks & Regards, |
Thanks Joachim. What is unclear to me is how this clayer relates to the SW delivery if it references files stored in the RTE folder. So how would you deliver this configured file stored in the RTE folder of the project ? By the way, and I think I already mentioned it in the past in a more specific case (ARM-software/CMSIS_5#1103 (comment)), but I am not a big fan of the RTE folder. Thanks & Regards, |
Please find a minor update of the document : we can consider that a binary can be produced by 1-N software projects and not exactly one (a binary can include a binary or link a library for instance, even if at the end there is one SW project producing the final binary) |
It seems like there is quite a big overlap/duplication of information between the .cproject.yml file and the .cprj file. In terms of where to store project settings, is the source-of-truth now instead the .cproject.yml file? |
Closing as there is no further activity. Feel free to re-open or start a new issue in case that there is still something relevant. |
This is revised content.
The diagram below shows a potential tool flow for project generation. It basically exports the information from the files described under #7
The CMSIS-Project Manager takes as input the following files:
The CMSIS-Project Manager has several operating modes:
The output of the CMSIS-Project Manager are self-contained *.cprj that refers linker scripts. These files can be copied to a different context (i.e. a CI test environment that generates a always fixed configuration).
We should introduce the notion of provided interfaces and consumed interfaces. This could be used to check for compatibility of projects, layers, and identify the build order of sub-projects. This is already in use here https://github.com/MDK-Packs/CB_Lab4Layer/blob/master/layer/Board/LPCXpresso55S69/Board.clayer#L11
The reason for this complexity is to support the use cases described here #6
Questions:
Are proposed file extensions OK? Compatible with schema and *.yml editor plugins?
A: https://github.com/SchemaStore/schemastore/blob/master/src/api/json/catalog.json would allow us to define schema information to the *.yml files. Proposed naming should be OK. This article explains how to configure a yaml schema: https://developers.redhat.com/blog/2020/11/25/how-to-configure-yaml-schema-to-make-editing-files-easier
Is a BSP *.rzone file additive to a DFP *.rzone file. Does it add board specific resources or defines all resources including DFP again.
More work is needed on provided interfaces and consumed interfaces in the current *.clayer files.
Is there a need to review CMSIS-Zone in the wider group?
Next steps:
The text was updated successfully, but these errors were encountered: