Open-CMSIS-Pack / cmsis-toolbox

CMSIS-Toolbox
https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/README.md#cmsis-toolbox
Apache License 2.0
56 stars 13 forks source link

Suggestion - enable access to github repos from packs #147

Open markgsaunders opened 3 weeks ago

markgsaunders commented 3 weeks ago

Lots of Si vendors distribute run-time software on github. It would be helpful if that code could be reused in CMSIS without creating copies inside packs. It is possible, today, to define example programs in board support packs using the tag. But that tag requires a "folder" attribute to find the content and those files must be included in the pack. This means the BSP and original repo contain "two versions of the truth". It would be great to be able to refer to a repo from the example element (in addition to the folder attribute). That way vendors could put the CMSIS-specific files (csolution, cproject, etc.) in the BSP and pull the application sources from github.

jkrech commented 3 weeks ago

Assuming that your BSP CMSIS-Pack is generated as a versioned snapshot of your repository, I don't think that there is "two versions of the truth". If the run-time software has modules with APIs that can be reused across projects, these should be described a components in the package description and then referenced by the projects rather than copied and duplicated. Please take a look at: https://github.com/Open-CMSIS-Pack/BSP-Pack-HandsOn .

Separating project files from source files does not seem like the best solution either, as the may run out of sync.

At this point the CMSIS Pack tooling for the end-user does not make use of cloning repositories (e.g. git repositories) for distributing software but instead uses Packs. The meta data kept in the package description however allows to specify the "origin" of a pack as e.g. a github repository and map a pack version to a repository tag.

ReinhardKeil commented 3 weeks ago

@markgsaunders we are looking into ways on how to improve the system further. Right now we are working on CI steps based on https://github.com/Arm-Examples/AVH_CI_Template that verifies build (and test) steps of examples.

For GitHub based examples there are CI steps that verify for correctness and allow to trigger a publish service. See https://github.com/Arm-Examples/Hello_B-U585I-IOT02A (workflows). This is independent of a pack, but could be picked-up by an IDE in context of a board or device.

Also we are working on the structure of toolchain agnostic projects that compile with AC6, GCC, IAR, and LLVM.