Name Date Size #Lines LOC

..--

.github/H06-Mar-2024-2,2522,160

docs/doxygen/H06-Mar-2024-2,9912,380

source/H06-Mar-2024-75,07141,265

test/H06-Mar-2024-61,46837,711

tools/H06-Mar-2024-2,1351,534

.gitignoreHD06-Mar-202422 43

.gitmodulesHD06-Mar-2024238 98

GenerateOriginalFiles.pyHD06-Mar-202410.6 KiB240146

History.txtHD06-Mar-202414.7 KiB282252

LICENSE.mdHD06-Mar-20241 KiB2016

MISRA.mdHD06-Mar-20248.1 KiB179141

README.mdHD06-Mar-20247.7 KiB8459

ReadMe.urlHD06-Mar-2024111 65

manifest.ymlHD06-Mar-2024447 1413

readme.txtHD06-Mar-2024735 1912

sbom.spdxHD06-Mar-202418.6 KiB512439

README.md

1## FreeRTOS-Plus-TCP Library
2FreeRTOS-Plus-TCP is a lightweight TCP/IP stack for FreeRTOS. It provides a familiar Berkeley sockets interface, making it as simple to use and learn as possible. FreeRTOS-Plus-TCP's features and RAM footprint are fully scalable, making FreeRTOS-Plus-TCP equally applicable to smaller lower throughput microcontrollers as well as larger higher throughput microprocessors.
3
4This library has undergone static code analysis and checks for compliance with the [MISRA coding standard](https://www.misra.org.uk/). Any deviations from the MISRA C:2012 guidelines are documented under [MISRA Deviations](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/main/MISRA.md). The library is validated for memory safety and data structure invariance through the [CBMC automated reasoning tool](https://www.cprover.org/cbmc/) for the functions that parse data originating from the network.
5
6## Getting started
7The easiest way to use FreeRTOS-Plus-TCP is to start with the pre-configured demo application project (found in [this directory](https://github.com/FreeRTOS/FreeRTOS/tree/master/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator)).  That way you will have the correct FreeRTOS source files included, and the correct include paths configured.  Once a demo application is building and executing you can remove the demo application files, and start to add in your own application source files.  See the [FreeRTOS Kernel Quick Start Guide](https://www.freertos.org/FreeRTOS-quick-start-guide.html) for detailed instructions and other useful links.
8
9Additionally, for FreeRTOS-Plus-TCP source code organization refer to the [Documentation](http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_Networking_Tutorial.html), and [API Reference](https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_TCP_API_Functions.html).
10
11**FreeRTOS-Plus-TCP V3.1.0 [source code](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/tree/V3.1.0)(.c .h) is part of the [FreeRTOS 202210.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202210.00-LTS) release.**
12
13### Getting help
14If you have any questions or need assistance troubleshooting your FreeRTOS project, we have an active community that can help on the [FreeRTOS Community Support Forum](https://forums.freertos.org). Please also refer to [FAQ](http://www.freertos.org/FAQHelp.html) for frequently asked questions.
15
16Also see the [Submitting a bugs/feature request](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/main/.github/CONTRIBUTING.md#submitting-a-bugsfeature-request) section of CONTRIBUTING.md for more details.
17
18## Upgrading to V3.0.0 and above
19In version 3.0.0 or higher, the folder structure of FreeRTOS-Plus-TCP has changed and the files have been broken down into smaller logically separated modules. This change makes the code more modular and conducive to unit-tests. FreeRTOS-Plus-TCP V3.0.0 improves the robustness, security, and modularity of the library. Version 3.0.0 adds comprehensive unit test coverage for all lines and branches of code and has undergone protocol testing, and penetration testing by AWS Security to reduce the exposure to security vulnerabilities. Additionally, the source files have been moved to a `source` directory. This change requires modification of any existing project(s) to include the modified source files and directories. There are examples on how to use the new files and directory structure. For a windows simulator based example, refer to this [demo](https://github.com/FreeRTOS/FreeRTOS/tree/TCPRefactorDemo/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator). For an example based on the Xilinx Zynq-7000, use the code in this [branch](https://github.com/aws/amazon-freertos/tree/TCPRefactorDemo) and follow these [instructions](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_xilinx.html) to build and run the demo.
20
21### Generating pre V3.0.0 folder structure for backward compatibility:
22If you wish to continue using a version earlier than V3.0.0 i.e. continue to use your existing source code organization, a script is provided to generate the folder structure similar to [this](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/tree/f118c8415b4373e3d6e6dbd2d5a116f7eaf27b63).
23
24**Note:** After running the script, while the .c files will have same names as the pre V3.0.0 source, the files in the `include` directory will have different names and the number of files will differ as well. This should, however, not pose any problems to most projects as projects generally include all files in a given directory.
25
26Running the script to generate pre V3.0.0 folder structure:
27For running the script, you will need Python version > 3.7. You can download/install it from [here](https://www.python.org/downloads/).
28
29Once python is downloaded and installed, you can verify the version from your terminal/command window by typing `python --version`.
30
31To run the script, you should switch to the FreeRTOS-Plus-TCP directory that was created using the [Cloning this repository](#cloning-this-repository) step above.
32And then run  `python <Path/to/the/script>/GenerateOriginalFiles.py`.
33
34## Cloning this repository
35This repository uses [Git Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) to bring in dependent components.
36
37Note: If you download the ZIP file provided by GitHub UI, you will not get the contents of the submodules. (The ZIP file is also not a valid Git repository)
38
39To clone using HTTPS:
40```
41git clone https://github.com/FreeRTOS/FreeRTOS-Plus-TCP.git ./FreeRTOS-Plus-TCP
42cd ./FreeRTOS-Plus-TCP
43git submodule update --checkout --init --recursive tools/CMock test/FreeRTOS-Kernel
44```
45Using SSH:
46```
47git clone git@github.com:FreeRTOS/FreeRTOS-Plus-TCP.git ./FreeRTOS-Plus-TCP
48cd ./FreeRTOS-Plus-TCP
49git submodule update --checkout --init --recursive tools/CMock test/FreeRTOS-Kernel
50```
51
52## Porting
53The porting guide is available on [this page](http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_TCP_Porting.html).
54
55## Repository structure
56This repository contains the FreeRTOS-Plus-TCP repository and a number of supplementary libraries for testing/PR Checks.
57Below is the breakdown of what each directory contains:
58- tools
59    - This directory contains the tools and related files (CMock/uncrustify) required to run tests/checks on the TCP source code.
60- tests
61    - This directory contains all the tests (unit tests and CBMC) and the dependencies ([FreeRTOS-Kernel](https://github.com/FreeRTOS/FreeRTOS-Kernel)/[Litani-port](https://github.com/awslabs/aws-build-accumulator)) the tests require.
62- source/portable
63    - This directory contains the portable files required to compile the FreeRTOS-Plus-TCP source code for different hardware/compilers.
64- source/include
65    - The include directory has all the 'core' header files of FreeRTOS-Plus-TCP source.
66- source
67    - This directory contains all the [.c] source files.
68
69## Note
70At this time it is recommended to use BufferAllocation_2.c in which case it is essential to use the heap_4.c memory allocation scheme. See [memory management](http://www.FreeRTOS.org/a00111.html).
71
72### Kernel sources
73The FreeRTOS Kernel Source is in [FreeRTOS/FreeRTOS-Kernel repository](https://github.com/FreeRTOS/FreeRTOS-Kernel), and it is consumed by testing/PR checks as a submodule in this repository.
74
75The version of the FreeRTOS Kernel Source in use could be accessed at ```./test/FreeRTOS-Kernel``` directory.
76
77## CBMC
78
79The `test/cbmc/proofs` directory contains CBMC proofs.
80
81To learn more about CBMC and proofs specifically, review the training material [here](https://model-checking.github.io/cbmc-training).
82
83In order to run these proofs you will need to install CBMC and other tools by following the instructions [here](https://model-checking.github.io/cbmc-training/installation.html).
84

ReadMe.url

1[{000214A0-0000-0000-C000-000000000046}]
2Prop3=19,2
3[InternetShortcut]
4URL=http://www.freertos.org/tcp
5IDList=
6

readme.txt

1Contains the files that implement FreeRTOS+TCP.
2
3User documentation, including an API reference is available on:
4http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/
5
6A description of the source code organisation is available on:
7http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_Networking_Tutorial.html
8
9The porting guide is available on:
10http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_TCP_Porting.html
11
12License information is available on:
13http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_Plus_TCP_License.html
14
15At this time it is recommended to use BufferAllocation_2.c in which case it is
16essential to use the heap_4.c memory allocation scheme:
17http://www.FreeRTOS.org/a00111.html
18
19