[修改] 增加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,25 @@
<table>
<tr>
<td colspan="3"><center><b>Code Size of AWS SigV4 library (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>sigv4.c</td>
<td><center>5.2K</center></td>
<td><center>4.4K</center></td>
</tr>
<tr>
<td>sigv4_quicksort.c</td>
<td><center>0.4K</center></td>
<td><center>0.3K</center></td>
</tr>
<tr>
<td><b>Total estimates</b></td>
<td><b><center>5.6K</center></b></td>
<td><b><center>4.7K</center></b></td>
</tr>
</table>

View File

@ -0,0 +1,233 @@
<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,92 @@
/**
@mainpage Overview
@anchor sigv4
@brief AWS SigV4 Library
The AWS SigV4 Library is a standalone library for generating signatures
and authorization headers according to the specifications of the AWS Signature
Version 4 signing process. This library aids applications in sending direct
HTTP requests to AWS services requiring SigV4 authentication. The library is
written in C and designed to be compliant with ISO C90 and MISRA C and has no
dependencies on any additional libraries other than the standard C library.
@section sigv4_memory_requirements Memory Requirements
@brief Memory requirements of the SigV4 Library.
@include{doc} size_table.md
@section sigv4_design Design
@brief SigV4 Library Design
<h3>Memory Usage</h3>
<p>
All functions in the SigV4 library operate only on the buffers provided and use only
local variables on the stack.
</p>
<h3>Compliance & Coverage</h3>
<p>
The SIGV4 library is designed to be compliant with ISO C90 and MISRA C:2012.
All functions are written to have low complexity scores. Unit tests and CBMC
proofs are written to cover every path of execution and achieve 100% branch
coverage.
</p>
The diagram below demonstrates the happy path an application can take to use
the SigV4 library to interact with AWS Services that support SigV4 authentication via HTTP requests.
@image html sigv4_design.png "SigV4 Library Usage diagram" width=90%
*/
/**
@page sigv4_config Configurations
@brief Configurations of the AWS SigV4 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 (`sigv4_config.h`) or by using a
compiler option such as -D in gcc.
@section SIGV4_DO_NOT_USE_CUSTOM_CONFIG
@copydoc SIGV4_DO_NOT_USE_CUSTOM_CONFIG
@section sigv4_logerror LogError
@copydoc LogError
@section sigv4_logwarn LogWarn
@copydoc LogWarn
@section sigv4_loginfo LogInfo
@copydoc LogInfo
@section sigv4_logdebug LogDebug
@copydoc LogDebug
*/
/**
@page sigv4_functions Functions
@brief Primary functions of the AWS SigV4 library:<br><br>
@subpage sigV4_generateHTTPAuthorization_function <br>
@subpage sigV4_awsIotDateToIso8601_function <br>
@page sigV4_generateHTTPAuthorization_function SigV4_GenerateHTTPAuthorization
@snippet sigv4.h declare_sigV4_generateHTTPAuthorization_function
@copydoc SigV4_GenerateHTTPAuthorization
@page sigV4_awsIotDateToIso8601_function SigV4_AwsIotDateToIso8601
@snippet sigv4.h declare_sigV4_awsIotDateToIso8601_function
@copydoc SigV4_AwsIotDateToIso8601
*/
<!-- We do not use doxygen ALIASes here because there have been issues in the past versions with "^^" newlines within the alias definition. -->
/**
@defgroup sigv4_enum_types Enumerated Types
@brief Enumerated types of the SigV4 library
@defgroup sigv4_struct_types Struct Types
@brief Struct types of the SigV4 library
*/

View File

@ -0,0 +1,72 @@
/**
* @page sigv4_porting Porting Guide
* @brief Guide for porting the AWS SigV4 Library to a new
* platform.
*
* To use the AWS SigV4 library, a platform must implement the following
* components:
* 1. [Configuration Macros](@ref sigv4_config_macros)
* 2. [Crypto Interface](@ref sigv4_porting_cryptointerface)
*
* @section sigv4_config_macros Configuration Macros
* @brief Configuration macros that can be set in the config header
* `sigv4_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 sigv4_config) for more information.
*
* @note Regardless of whether the above macros are defined in
* `sigv4_config.h` or passed as compiler options, by default the
* `sigv4_config.h` file is needed to build the AWS SigV4 Library. To disable this requirement and build the library with
* default configuration values, provide
* `SIGV4_DO_NOT_USE_CUSTOM_CONFIG` as a compile time preprocessor
* macro.
*
* @section sigv4_porting_cryptointerface Crypto Interface
* @brief The AWS SigV4 library relies on the implementation of crypto interface
* to provide hash functions used in generating the Authorization header by the library.
*
* A port must implement functions corresponding to the
* following functions pointers:
* - [Hash Initialize]: A function to initialize the Hash Context.
* @code
* int32_t ( * hashInit )( void * pHashContext );
* @endcode
* - [Hash Update]: A function to update the hash to be calculated with more input data.
* @code
* int32_t ( * hashUpdate )( void * pHashContext,
* const uint8_t * pInput,
* size_t inputLen );
* @endcode
* - [Hash Final]: A function to calculate the final binary digest of the hash from the context.
* @code
* int32_t ( * hashFinal )( void * pHashContext,
* uint8_t * pOutput,
* size_t outputLen );
* @endcode
*
* The above three functions take in a pointer to pHashContext which defines the context used
* by the above function in calculating the hash. The HashContext must also be
* defined by the user's implementation and ought to contain any information
* necessary to calculate the hash.
* @code
* void * pHashContext;
* @endcode
*
* A port must also define the following:
* - [Hash Block Length]: The block length of the hash function implemented by the user.
* @code
* size_t hashBlockLen;
* @endcode
*
* - [Hash Digest Length]: The digest length of the hash function implemented by the user.
* @code
* size_t hashDigestLen;
* @endcode
*
*/

View File

@ -0,0 +1,152 @@
/*
* 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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

View File

@ -0,0 +1,53 @@
@startuml
skinparam dpi 100
skinparam classFontSize 8
skinparam classFontName Helvetica
autonumber
box "Application" #LightGreen
participant "Application" as application
end box
box "Library" #LightBlue
participant "SigV4 Library" as sigv4
end box
box "IoT Server" #Yellow
participant "IoT Server" as server
end box
box "AWS Server" #Orange
participant "AWS Server" as aws
end box
activate application
application -> server : Connect to AWS IOT Credential provider to fetch the temporary credentials
server -> application : Connected and retrieved credentials
application -> application: Parse the temporary credentials
application -> server : Disconnect from server
application -> application: Implement crypto interface hash functions.
application -> sigv4 : Convert the AWS IoT date retrieved from AWS IoT Credential Provider\n to ISO8601 format using (SigV4_AwsIotDateToIso8601) API
sigv4-> application : Date Converted and written to provided buffer
application-> aws : Connect to AWS Server for sending the HTTP request
aws->application : Connected
application -> sigv4 : Generate Authorization header using (Sigv4_GenerateHTTPAuthorization) API
application->application : Add the Authorization Header to the HTTP request to AWS Server.
application-> aws : Send the HTTP request to AWS Server to perform the desired action
aws-> application : Receive HTTP Response from AWS Server
application -> aws: Disconnect from AWS server
deactivate application
@enduml