Skip to content
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

Rewrite of the pack publishing and tutorial sections #320

Merged
merged 6 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ compile_commands.json
CTestTestfile.cmake
_deps
doc/html
.DS_Store
Binary file added doxygen/images/GHhosting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doxygen/images/IndexingService.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed doxygen/images/LocalInstallation.png
Binary file not shown.
Binary file removed doxygen/images/WebInstallation.png
Binary file not shown.
Binary file added doxygen/images/drawings.pptx
Binary file not shown.
Binary file added doxygen/images/pack_trinity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions doxygen/pack.dxy
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,6 @@ WARN_LOGFILE =
INPUT = src/General.txt \
src/pack_creation.txt \
src/pack_tutorial.txt \
src/pack_utilities.txt \
src/pack_publish.txt \
src/pdsc_format.txt \
src/config_wizard.txt \
Expand All @@ -878,7 +877,6 @@ INPUT = src/General.txt \
src/generators_schema.txt \
src/debug_description.txt \
src/sdf_schema.txt \
src/pack_index.txt \
src/pack_dbg_setup_tutorial.txt


Expand Down
77 changes: 38 additions & 39 deletions doxygen/src/General.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
/**
\mainpage
\mainpage Overview

<b>CMSIS-Pack</b> describes a delivery mechanism for software components, device parameters, and evaluation board
support. The XML-based package description (PDSC) file describes the content of a \ref cp_SWComponents "Software Pack"
(file collection) that includes:
<b>Open-CMSIS-Pack</b> describes a delivery mechanism for software components, device parameters, and evaluation board
support. The XML-based package description (PDSC) file describes the content of a software pack (file collection) that
includes:
- Source code, header files, and software libraries
- Documentation and source code templates
- Device parameters along with startup code and programming algorithms
- Example projects

The complete file collection along with the PDSC file is shipped in ZIP-format (renamed to *.pack). The PDSC file is designed
for software development environments and describes the user and device relevant context for the files supplied within such
a pack file.
a pack file. This information can also be used for display on web sites (refer to \ref createPackPublish).

The CMSIS-Pack system solves several problems:

Expand All @@ -24,65 +24,67 @@ The CMSIS-Pack system solves several problems:
- The meta-data of a software component can include dependency information for toolchains, devices, and processors which
simplifies the integration into application programs.

After installing a \ref cp_SWComponents "Software Pack", all included software components are available to the development
tools. \ref cp_Components "Software components" are a collection of source modules, header and configuration files as well as
libraries. Packs containing software components can also include \ref cp_Examples and \ref cp_CodeTemplates.
After installing a software pack, all included software components are available to the development
tools. Software components are a collection of source modules, header and configuration files as well as
libraries. Packs containing software components can also include \ref pdsc_examples_pg "examples" and user code templates.

The \subpage pack_revisionHistory lists the main changes between versions.


\section SWPackVariants Software Pack Use Cases
\section SWPackVariants Software pack use cases

A pack can be used to deliver:
A software pack can be used to deliver:

- \b Device \b support: a so called <i>Device Family Pack (DFP)</i> contains CMSIS system/startup files, drivers, and flash
algorithms for a microcontroller device family.
- \b Board \b support: a <i>Board Support Pack (BSP)</i> contains documentation, schematics, and drivers for a certain
development board.
- \b Middleware: distribute software components belonging to a middleware stack (such as source code or libraries) in
CMSIS-Pack format.
- \b In-house \b software: distribute software components within a company or engineering group.
- \b Software \b components: a pure <i>software pack</i> can contain source code, libraries, and documentation for:
- \b middleware \b stacks for public availability.
- \b in-house \b software for distribution within a company and/or engineering group.

\note
- A Software Pack can address multiple use cases at the same time!
- CMSIS itself is distributed as a software pack (containing the generic CMSIS components (CORE, DSP Library, and RTOS
implementation)) and is supplied by Arm.
All these pack types can contain in addition:

- example projects,
- code templates,
- reference applications.

As shown in the image below, a software pack can address multiple use cases at the same time! The
\ref packFormat "XML elements" in the PDSC file determine the use case(s).
<a class="el" href="https://arm-software.github.io/CMSIS_6/latest/General/index.html#cmsis_components" target="_blank">CMSIS</a>
itself is distributed in various software packs (CORE, DSP library, RTOS implementation, etc.) and is supplied by Arm.

\image html pack_trinity.png "Major use cases of software packs"

The following sections provide more information:

- In the \ref cp_Packs, learn the basics and the required steps for creating a pack.
- \ref cp_PackTutorial are available that show how to start a \ref cp_SWComponents "software pack" from scratch, how to
enable device support in a \ref createPack_DFP "Device Support Pack (DFP)", and how to describe development boards in a
\ref createPackBoard "Board Support Pack (BSP)".
- Learn how to \ref createPackPublish.
- \ref createPackUtil are available that are useful during the creation of a pack.
- \ref cp_PackTutorial are available that show how to start a software pack from scratch, how to
enable device support in a device support pack (DFP), and how to describe development boards in a
board support pack (BSP).
- \ref packFormat describes all XML elements that can be used in a package description file.
- \ref configWizard can be used to create GUI-like elements in development tools for configuration files.
- \ref flashAlgorithm algorithms are used to erase or download applications to Flash devices.
- \ref coresight_setup allows to create tool-agnostic debug and trace configurations.
- \ref packIndexFile are used to generate a catalog of available packs.

<hr>

CMSIS-Pack in ARM::CMSIS Pack
-----------------------------
Files relevant to CMSIS-Pack are present in the following \b ARM::CMSIS directories:
Folder |Content |
----------------|----------------------------------------------|
Utilities | \ref createPackUtil |
Pack\\Tutorials | Tutorials for \ref cp_Packs "Creating Packs" |

- \ref sdf_pg describes all XML elements that can be used in a system description file for debugging.
*/

/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
/**
\page pack_revisionHistory Revision History of CMSIS-Pack
\page pack_revisionHistory Revision history

<table class="cmtable" summary="Revision History">
<tr>
<th>Version</th>
<th>Description</th>
</tr>
<tr>
<td>1.7.38</td>
<td>
- The \ref createPackPublish "pack publishing process" has been rewritten completely
- removed the old tutorials that have been superseded by the online versions on GitHub
</td>
</tr>
<tr>
<td>1.7.37</td>
<td>
Expand Down Expand Up @@ -371,7 +373,7 @@ Pack\\Tutorials | Tutorials for \ref cp_Packs "Creating Packs" |
<tr>
<td>1.6.1</td>
<td>Modifications compared to Version 1.6.0
- added \ref bash_script to support pack generation on Linux or Windows.
- added a Bash script to support pack generation on Linux or Windows.
- added \b custom attribute to \ref element_component "component element".
- added \b TrustZone-disabled value to \ref DsecureEnum "software model selection".
- added \ref dbg_setup_tutorial in CMSIS-Pack documentation.
Expand Down Expand Up @@ -548,6 +550,3 @@ Pack\\Tutorials | Tutorials for \ref cp_Packs "Creating Packs" |
</tr>
</table>
*/



2 changes: 1 addition & 1 deletion doxygen/src/apis_schema.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ It is also possible to expose a combination of API definitions. An example for

\section element_apis /package/apis

This element is a grouping element for all application programming interfaces included in the \ref cp_SWComponents "Software Pack".
This element is a grouping element for all application programming interfaces included in the software pack.
The element itself is optional. Only one such section can exist in a package.

\b Example:
Expand Down
6 changes: 3 additions & 3 deletions doxygen/src/boards_schema.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ Grouping element for boards. No more than one such group can exist in a Pack. No

\section element_board /package/boards/board

This element provides information to specify the \ref createPackBoard "Board Support Package (BSP)". At least one board must be defined.
This element provides information to specify the board support. At least one board must be defined.

<table class="cmtable" summary="Element: Board">
<tr>
Expand Down Expand Up @@ -129,7 +129,7 @@ This element provides information to specify the \ref createPackBoard "Board Sup
</tr>
<tr>
<td>revision</td>
<td>Revision of the board that is suited to be used with the \ref createPackBoard "BSP".</td>
<td>Revision of the board that is suited to be used with the BSP.</td>
<td>xs:string</td>
<td>optional</td>
</tr>
Expand Down Expand Up @@ -946,7 +946,7 @@ Specify Flash programming algorithms with the address range and its size for boa
</tr>
<tr>
<td>name</td>
<td>Flash Programming Algorithm file including the path, which is relative to the root folder of the \ref cp_SWComponents "Software Pack".</td>
<td>Flash Programming Algorithm file including the path, which is relative to the root folder of the software pack.</td>
<td>xs:string</td>
<td>required</td>
</tr>
Expand Down
6 changes: 1 addition & 5 deletions doxygen/src/components_schema.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,6 @@ Only the \b Cversion attribute can be redefined in the \b component elements.
Components of the same \b Cclass belonging to a different \b Cbundle shall not be selected concurrently. In this way bundles ensure
interoperability across multiple components and restrict the mix and match of components within a \b Cclass.

An example of a <b>bundle</b> is shown in the \ref cp_BundleExample section where the bundle is used to deliver board
support files for a certain development platform.

\section Component_Files Component Files

The files of a Software Component will be used in development tool-chains to build an application. Depending on the
Expand All @@ -135,8 +132,7 @@ attributes, the files are handled differently:
note that header files that are used with the attribute \c "config" need to be stored separately from other header files
(for example in an extra directory) to avoid that due to the include path search order of the compiler, the unmodified
header file in the pack repository is found first and used by the compiler (creating unexpected results).
- Source and header files that have the attribute \c "template" are part of \ref cp_CodeTemplates and can be added to a
project manually by the user.
- Source and header files that have the attribute \c "template" can be added to a project manually by the user.

The following image shows the dependency between the attribute and the display in a development environment:

Expand Down
6 changes: 3 additions & 3 deletions doxygen/src/conditions_schema.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
\page pdsc_conditions_pg /package/conditions element

The grouping element \ref element_conditions contains all conditions defined for the \ref cp_SWComponents "Software Pack".
The grouping element \ref element_conditions contains all conditions defined for the software pack.

A condition describes dependencies on device, processor, and tool attributes as well as the presence of other components.
The <b>conditions</b> are used to define AND and OR rules used to make components conditional and therefore only available under certain circumstances,
Expand Down Expand Up @@ -62,7 +62,7 @@

\section element_conditions /package/conditions

This element groups all conditions used in the \ref cp_SWComponents "Software Pack".
This element groups all conditions used in the software pack.

<table class="cmtable" summary="Element: Conditions">
<tr>
Expand Down Expand Up @@ -113,7 +113,7 @@
</tr>
<tr>
<td>id</td>
<td>Condition identifier which is unique within a \ref cp_SWComponents "Software Pack". The condition identifier is referenced by other elements with the attribute \b condition.</td>
<td>Condition identifier which is unique within a software pack. The condition identifier is referenced by other elements with the attribute \b condition.</td>
<td>xs:string</td>
<td>required</td>
</tr>
Expand Down Expand Up @@ -316,7 +316,7 @@
<td>Cversion</td>
<td>Specifies a software component's version. Requires that Cclass, Cgroup, and Csub (if part of the component definition) is also specified.
- <b>require Cversion:</b>condition is true if version of component is equal or higher than requested and compatible.
According to <a href="https://semver.org/#spec-item-8"><b>SemanticVersioning</b></a> compatibility requires the <b>major version</b> to remain unchanged.

Check warning on line 319 in doxygen/src/conditions_schema.txt

View workflow job for this annotation

GitHub Actions / Build main documentation

200 OK
- <b>deny Cversion:</b> condition is true if version of component is lower than requested.
- Version ranges are specified with <em>min_version</em><b>:</b><em>max_version</em>. The condition is true if the version of the component is equal or higher than
<em>min_version</em> and lower or equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal the version must match exactly.
Expand All @@ -328,7 +328,7 @@
<td>Capiversion</td>
<td>Specifies an API version.
- <b>require Capiversion:</b>condition is true if version of API is equal or higher than requested and compatible.
According to <a href="https://semver.org/#spec-item-8"><b>SemanticVersioning</b></a> compatibility requires the <b>major version</b> to remain unchanged.

Check warning on line 331 in doxygen/src/conditions_schema.txt

View workflow job for this annotation

GitHub Actions / Build main documentation

200 OK
- <b>deny Capiversion:</b> condition is true if version of API is lower than requested.
- Version ranges are specified with <em>min_version</em><b>:</b><em>max_version</em>. The condition is true if the version of the API is equal or higher than
<em>min_version</em> and lower or equal than <em>max_version</em>. If <em>min_version</em> and <em>max_version</em> are equal the version must match exactly.
Expand Down
4 changes: 2 additions & 2 deletions doxygen/src/devices_schema.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
\page pdsc_devices_pg /package/devices element

The level \elem{devices} contains all devices for which support is provided by the \ref cp_SWComponents "Software Pack".
The level \elem{devices} contains all devices for which support is provided by the software pack.

Devices can be organized in hierarchy groups to limit redundancy. The hierarchy levels are:
- \ref element_family "family": the attributes of a device family which includes also the processor.
Expand Down Expand Up @@ -761,7 +761,7 @@ algorithms must have a different name.
</tr>
<tr>
<td>name</td>
<td>Flash Programming Algorithm file including the path, which is relative to the root folder of the \ref cp_SWComponents "Software Pack".</td>
<td>Flash Programming Algorithm file including the path, which is relative to the root folder of the software pack.</td>
<td>xs:string</td>
<td>required</td>
</tr>
Expand Down
9 changes: 5 additions & 4 deletions doxygen/src/flash_algorithms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
/**
\page flashAlgorithm Flash Programming

<b>Flash Programming Algorithms</b> are a piece of software to erase or download applications to Flash devices. A \ref createPack_DFP
usually contains predefined Flash algorithms for programming the devices that are supported by the DFP. A template for
creating new algorithms are available in the <b>ARM:CMSIS</b> Pack. The following section describes the process in more detail.
<b>Flash Programming Algorithms</b> are a piece of software to erase or download applications to Flash devices. A device
family pack (DFP) usually contains predefined Flash algorithms for programming the devices that are supported within. A
template for creating new algorithms are available in the <b>ARM:CMSIS</b> Pack. The following section describes the process
in more detail.


\section CreateFPA Creating a new Algorithm
Expand All @@ -27,7 +28,7 @@

\note
- Creating a Flash programming algorithm with
<a class="el" href="https://www.keil.com/arm/selector.asp" target="_blank">MDK-Lite</a> is not supported.

Check warning on line 31 in doxygen/src/flash_algorithms.txt

View workflow job for this annotation

GitHub Actions / Build main documentation

200 OK
- Flash programming algorithms use <b>Read-Only Position Independent</b> and <b>Read-Write Position Independent</b> program
code. These options are set in the dialogs \b Project - <b>Options for Target</b> - \b C/C++ and \b Project -
<b>Options for Target</b> - \b Asm.
Expand Down Expand Up @@ -79,7 +80,7 @@


\section AddFPA Adding an Algorithm to a Pack
The generated <b>*.FLM</b> file needs to be added to the \ref createPack_DFP, so that it is available to the tool user for programming
The generated <b>*.FLM</b> file needs to be added to the DFP, so that it is available to the tool user for programming
his device. Usually, a directory \b Flash is created and the algorithm is saved in this directory.

The algorithm is specified within the the \ref element_family level:
Expand Down
Loading