[修改] 增加freeRTOS

1. 版本FreeRTOSv202212.01,命名为kernel;
This commit is contained in:
2023-05-06 16:43:01 +00:00
commit a345df017b
20944 changed files with 11094377 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
<table>
<tr>
<td colspan="3"><center><b>Code Size of AWS IoT Fleet Provisioning (example generated with GCC for ARM Cortex-M)</b></center></td>
</tr>
<tr>
<td><b>File</b></td>
<td><b><center>With -O1 Optimization</center></b></td>
<td><b><center>With -Os Optimization</center></b></td>
</tr>
<tr>
<td>fleet_provisioning.c</td>
<td><center>1.0K</center></td>
<td><center>0.9K</center></td>
</tr>
<tr>
<td><b>Total estimates</b></td>
<td><b><center>1.0K</center></b></td>
<td><b><center>0.9K</center></b></td>
</tr>
</table>

View File

@ -0,0 +1,228 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.8.20 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="pages" visible="yes" title="" intro=""/>
<!-- Hide the default "Data Structures" tab and use the "Modules" tab for data
structures. This allows internal data structures to be hidden. -->
<tab type="modules" visible="yes" title="Data types and Constants" intro="This library defines the following data types and constants."/>
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="interfaces" visible="no" title="">
<tab type="interfacelist" visible="no" title="" intro=""/>
<tab type="interfaceindex" visible="no" title=""/>
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="no" title="">
<tab type="classlist" visible="no" title="" intro=""/>
<tab type="classindex" visible="no" title=""/>
<tab type="hierarchy" visible="no" title="" intro=""/>
<tab type="classmembers" visible="no" title="" intro=""/>
</tab>
<tab type="structs" visible="no" title="">
<tab type="structlist" visible="no" title="" intro=""/>
<tab type="structindex" visible="no" title=""/>
</tab>
<tab type="exceptions" visible="no" title="">
<tab type="exceptionlist" visible="no" title="" intro=""/>
<tab type="exceptionindex" visible="no" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="no" title="">
<tab type="filelist" visible="yes" title="Files" intro="The following files are associated with this library."/>
<tab type="globals" visible="no" title="" intro=""/>
</tab>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

View File

@ -0,0 +1,101 @@
/**
@mainpage Overview
@anchor fleet_provisioning
@brief AWS IoT Fleet Provisioning Library
> By using AWS IoT fleet provisioning, AWS IoT can generate and securely deliver device certificates and private keys to your devices when they connect to AWS IoT for the first time. AWS IoT provides client certificates that are signed by the Amazon Root certificate authority (CA).
<span style="float:right;margin-right:4em"> &mdash; <i>Description of Fleet Provisioning from AWS IoT documentation <https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html></i></span><br>
For an overview of device provisioning options available with AWS IoT, see
[Device Provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html).
AWS IoT Fleet Provisioning allows you to provision devices without
pre-installed unique client certificates. There are two ways to use Fleet
Provisioning: by claim, or by trusted user. If provisioning by claim, devices
used a provisioning claim certificate and private key registered with AWS IoT
to obtain unique device certificates. If provisioning by trusted user, a
trusted user, such as an end user or installation technician, uses a mobile
app to configure the device in its deployed location.
There are two options for obtaining unique client certificates with AWS IoT
Fleet Provisioning: CreateCertificateFromCsr and CreateKeysAndCertificate.
CreateCertificateFromCsr allows the device to obtain a certificate by providing
a certificate signing request, keeping the private key secure on the device.
CreateKeysAndCertificate provides a new certificate and corresponding private
key.
@section fleet_provisioning_memory_requirements Memory Requirements
@brief Memory requirements of the AWS IoT Fleet Provisioning Library.
@include{doc} size_table.md
*/
/**
@page fleet_provisioning_design Design
AWS IoT Fleet Provisioning Library Design
The AWS IoT Fleet Provisioning library provides macros and functions to
assemble and parse MQTT topic strings reserved for the Fleet Provisioning
feature of AWS IoT core. Applications can use this library in conjunction with
any MQTT library to interact with the AWS IoT Fleet Provisioning APIs.
The diagram below demonstrates the happy path an application can take to use
the Fleet Provisioning library, a MQTT library, and a JSON or CBOR library to
interact with the AWS IoT Fleet Provisioning APIs.
\image html fleet_provisioning_operations.png "Fleet Provisioning Library example operation diagram" width=90%
*/
/**
@page fleet_provisioning_config Configurations
@brief Configurations of the AWS IoT Fleet Provisioning Library.
<!-- @par configpagestyle allows the @section titles to be styled according to
style.css -->
@par configpagestyle
Configuration settings are C pre-processor constants. They can be set with a
`\#define` in the config file (`fleet_provisioning_config.h`) or by using a
compiler option such as -D in gcc.
@section FLEET_PROVISIONING_DO_NOT_USE_CUSTOM_CONFIG
@copydoc FLEET_PROVISIONING_DO_NOT_USE_CUSTOM_CONFIG
@section fleet_provisioning_logerror LogError
@copydoc LogError
@section fleet_provisioning_logwarn LogWarn
@copydoc LogWarn
@section fleet_provisioning_loginfo LogInfo
@copydoc LogInfo
@section fleet_provisioning_logdebug LogDebug
@copydoc LogDebug
*/
/**
@page fleet_provisioning_functions Functions
@brief Primary functions of the AWS IoT Fleet Provisioning Library:<br><br>
@subpage fleet_provisioning_getregisterthingtopic_function <br>
@subpage fleet_provisioning_matchtopic_function <br>
@page fleet_provisioning_getregisterthingtopic_function FleetProvisioning_GetRegisterThingTopic
@snippet fleet_provisioning.h declare_fleet_provisioning_getregisterthingtopic
@copydoc FleetProvisioning_GetRegisterThingTopic
@page fleet_provisioning_matchtopic_function FleetProvisioning_MatchTopic
@snippet fleet_provisioning.h declare_fleet_provisioning_matchtopic
@copydoc FleetProvisioning_MatchTopic
*/
<!-- We do not use doxygen ALIASes here because there have been issues in the
past versions with "^^" newlines within the alias definition. -->
/**
@defgroup fleet_provisioning_enum_types Enumerated Types
@brief Enumerated types of the AWS IoT Fleet Provisioning Library
*/
/**
@defgroup fleet_provisioning_constants Constants
@brief Constants defined in the AWS IoT Fleet Provisioning Library
*/

View File

@ -0,0 +1,25 @@
/**
@page fleet_provisioning_porting Porting Guide
@brief Guide for porting the AWS IoT Fleet Provisioning Library to a new
platform.
@section fleet_provisioning_porting_config Configuration Macros
@brief Configuration macros that can be set in the config header
`fleet_provisioning_config.h`, or passed in as compiler options.
The following optional logging macros are used throughout the library:
- @ref LogError
- @ref LogWarn
- @ref LogInfo
- @ref LogDebug
@see [Configurations](@ref fleet_provisioning_config) for more information.
@note Regardless of whether the above macros are defined in
`fleet_provisioning_config.h` or passed as compiler options, by default the
`fleet_provisioning_config.h` file is needed to build the AWS IoT Fleet
Provisioning Library. To disable this requirement and build the library with
default configuration values, provide
`FLEET_PROVISIONING_DO_NOT_USE_CUSTOM_CONFIG` as a compile time preprocessor
macro.
*/

View File

@ -0,0 +1,136 @@
/*
* Stylesheet for Doxygen HTML output.
*
* This file defines styles for custom elements in the header/footer and
* overrides some of the default Doxygen styles.
*
* Styles in this file do not affect the treeview sidebar.
*/
/* Set the margins to place a small amount of whitespace on the left and right
* side of the page. */
div.contents {
margin-left:4em;
margin-right:4em;
}
/* Justify text in paragraphs. */
p {
text-align: justify;
}
/* Style of section headings. */
h1 {
border-bottom: 1px solid #879ECB;
color: #354C7B;
font-size: 160%;
font-weight: normal;
padding-bottom: 4px;
padding-top: 8px;
}
/* Style of subsection headings. */
h2:not(.memtitle):not(.groupheader) {
font-size: 125%;
margin-bottom: 0px;
margin-top: 16px;
padding: 0px;
}
/* Style of paragraphs immediately after subsection headings. */
h2 + p {
margin: 0px;
padding: 0px;
}
/* Style of subsection headings. */
h3 {
font-size: 100%;
margin-bottom: 0px;
margin-left: 2em;
margin-right: 2em;
}
/* Style of paragraphs immediately after subsubsection headings. */
h3 + p {
margin-top: 0px;
margin-left: 2em;
margin-right: 2em;
}
/* Style of the prefix "AWS IoT Device SDK C" that appears in the header. */
#csdkprefix {
color: #757575;
}
/* Style of the "Return to main page" link that appears in the header. */
#returntomain {
padding: 0.5em;
}
/* Style of the dividers on Configuration Settings pages. */
div.configpagedivider {
margin-left: 0px !important;
margin-right: 0px !important;
margin-top: 20px !important;
}
/* Style of configuration setting names. */
dl.section.user ~ h1 {
border-bottom: none;
color: #000000;
font-family: monospace, fixed;
font-size: 16px;
margin-bottom: 0px;
margin-left: 2em;
margin-top: 1.5em;
}
/* Style of paragraphs on a configuration settings page. */
dl.section.user ~ * {
margin-bottom: 10px;
margin-left: 4em;
margin-right: 4em;
margin-top: 0px;
}
/* Hide the configuration setting marker. */
dl.section.user {
display: none;
}
/* Overrides for code fragments and lines. */
div.fragment {
background: #ffffff;
border: none;
padding: 5px;
}
div.line {
color: #3a3a3a;
}
/* Overrides for code syntax highlighting colors. */
span.comment {
color: #008000;
}
span.keyword, span.keywordtype, span.keywordflow {
color: #0000ff;
}
span.preprocessor {
color: #50015a;
}
span.stringliteral, span.charliteral {
color: #800c0c;
}
a.code, a.code:visited, a.line, a.line:visited {
color: #496194;
}
div.image img[src="fleet_provisioning_operations.png"] {
max-width: 1000px;
}

View File

@ -0,0 +1,165 @@
@startuml
skinparam dpi 300
skinparam classFontSize 8
skinparam classFontName Helvetica
autonumber
participant "User Application" as App
participant "Fleet Provisioning Library" as FleetProv
participant "MQTT Client" as MQTT
participant "JSON/CBOR Library" as JSON
activate App
App -> MQTT : Connect to AWS IoT broker with claim credentials
activate MQTT
MQTT -> App : Connected
deactivate MQTT
opt If using CreateCertificateFromCsr
App -> App : Securely generate keys and corresponding CSR
App -> JSON : Generate CreateCertificateFromCsr request payload
activate JSON
JSON -> App : Request payload
deactivate JSON
App -> FleetProv : Get Accepted and Rejected Topic Strings\n for CreateCertificateFromCsr
activate FleetProv
FleetProv -> App : Accepted and Rejected Topic Strings
deactivate FleetProv
App -> MQTT : Subscribe to CreateCertificateFromCsr Accepted and Rejected Topics
activate MQTT
MQTT -> App : Subscription Successful
deactivate MQTT
App -> FleetProv : Get CreateCertificateFromCsr Publish Topic String
activate FleetProv
FleetProv -> App : Publish Topic String
deactivate FleetProv
App -> MQTT : Publish Request
activate MQTT
MQTT -> App : Published
MQTT -> App : Incoming Publish Message Received
deactivate MQTT
App -> FleetProv : Is this a Fleet Provisioning CreateCertificateFromCsr\naccepted Message?
activate FleetProv
FleetProv -> App : Yes
deactivate FleetProv
App -> JSON : Parse response payload
activate JSON
JSON -> App : Certificate, certificate id, certificate ownership token
deactivate JSON
App -> App : Securely store certificate
else If using CreateKeysAndCertificate
App -> FleetProv : Generate Accepted and Rejected Topic Strings for RegisterThing
activate FleetProv
FleetProv -> App : Accepted and Rejected Topic Strings
deactivate FleetProv
App -> MQTT : Subscribe to CreateKeysAndCertificate Accepted and Rejected Topics
activate MQTT
MQTT -> App : Subscription Successful
deactivate MQTT
App -> FleetProv : Get CreateKeysAndCertificate Publish Topic String
activate FleetProv
FleetProv -> App : Publish Topic String
deactivate FleetProv
App -> MQTT : Publish Request
activate MQTT
MQTT -> App : Published
MQTT -> App : Incoming Publish Message Received
deactivate MQTT
App -> FleetProv : Is this a Fleet Provisioning CreateKeysAndCertificate\naccepted Message?
activate FleetProv
FleetProv -> App : Yes
deactivate FleetProv
App -> JSON : Parse response payload
activate JSON
JSON -> App : Private key, certificate, certificate id, certificate ownership token
deactivate JSON
App -> App : Securely store key and certificate
end
App -> JSON : Generate RegisterThing request payload
activate JSON
JSON -> App : Request payload
deactivate JSON
App -> FleetProv : Generate Accepted and Rejected Topic Strings for RegisterThing
activate FleetProv
FleetProv -> App : Accepted and Rejected Topic Strings
deactivate FleetProv
App -> MQTT : Subscribe to RegisterThing Accepted and Rejected Topics
activate MQTT
MQTT -> App : Subscription Successful
deactivate MQTT
App -> FleetProv : Get RegisterThing Publish Topic String
activate FleetProv
FleetProv -> App : Publish Topic String
deactivate FleetProv
App -> MQTT : Publish Request
activate MQTT
MQTT -> App : Published
MQTT -> App : Incoming Publish Message Received
deactivate MQTT
App -> FleetProv : Is this a Fleet Provisioning RegisterThing accepted Message?
activate FleetProv
FleetProv -> App : Yes
deactivate FleetProv
App -> JSON : Parse response payload
activate JSON
JSON -> App : Thing name, device configuration
deactivate JSON
App -> MQTT : Disconnect from AWS IoT broker
activate MQTT
MQTT -> App : Disconnected
deactivate MQTT
App -> MQTT : Connect to AWS IoT broker with newly provisioned credentials
activate MQTT
MQTT -> App : Connected
deactivate MQTT
deactivate App
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB