1### Port of MCUBoot library for evaluation with Cypress PSoC 6 chips
2
3### Disclaimer
4
5Given solution is included in `MCUboot` repository with purpose to demonstrate basic consepts and features of MCUboot library on Cypress PSoC 6 device. Applications are created per MCUboot library maintainers requirements. Implemetation differs from conventional and recomended by Cypress Semiconductors development flow for PSoC 6 devices. These applications are not recomended as a starting point for development and should not be considered as supported examples for PSoC 6 devices.
6
7Examples provided to use with **ModusToolbox® Software Environment** are a recommended reference point to start development of MCUboot based bootloaders for PSoC 6 devices.
8
9Refer to **Cypress Semiconductors** [github](https://github.com/cypresssemiconductorco) page to find examples.
10
111. MCUboot-Based Basic Bootloader [mtb-example-psoc6-mcuboot-basic](https://github.com/cypresssemiconductorco/mtb-example-psoc6-mcuboot-basic)
122. MCUboot-Based Bootloader with Rollback to Factory App in External Flash [mtb-example-anycloud-mcuboot-rollback](https://github.com/cypresssemiconductorco/mtb-example-anycloud-mcuboot-rollback)
13
14### Solution description
15
16There are two applications implemented:
17* MCUBootApp - PSoC6 MCUboot-based bootloading application;
18* BlinkyApp - simple PSoC6 blinking LED application which is a target of BOOT/UPGRADE;
19
20The default flash map for MCUBootApp implemented is next:
21
22* [0x10000000, 0x10018000] - MCUBootApp (bootloader) area;
23* [0x10018000, 0x10028000] - primary slot for BlinkyApp;
24* [0x10028000, 0x10038000] - secondary slot for BlinkyApp;
25* [0x10038000, 0x10039000] - scratch area;
26
27The flash map is defined through sysflash.h and cy_flash_map.c.
28
29It is also possible to place secondary (upgrade) slots in external memory module. In this case primary slot can be doubled in size.
30For more details about External Memory usage, please refer to separate guiding document `MCUBootApp/ExternalMemory.md`.
31
32MCUBootApp checks image integrity with SHA256, image authenticity with EC256 digital signature verification and uses either completely software implementation of cryptographic functions or accelerated by hardware - both based on Mbed TLS Library.
33
34### Downloading solution's assets
35
36There is a set assets required:
37
38* MCUBooot Library (root repository)
39* PSoC6 Peripheral Drivers Library (PDL)
40* Mbed TLS Cryptographic Library
41
42Those are represented as submodules.
43
44To retrieve source code with subsequent submodules pull:
45
46    git clone --recursive https://github.com/mcu-tools/mcuboot.git
47
48Submodules can also be updated and initialized separately:
49
50    cd mcuboot
51    git submodule update --init --recursive
52
53
54
55### Building solution
56
57Root directory for build is **boot/cypress.**
58
59This folder contains make files infrastructure for building both MCUboot Bootloader and sample BlinkyApp application used for Bootloader demo functionality.
60
61Instructions on how to build and upload MCUBootApp bootloader application and sample user applocation are located in `Readme.md` files in corresponding folders.
62
63Supported platforms for `MCUboot`, `BlinkyApp`:
64
65* PSOC_062_2M
66* PSOC_062_1M
67* PSOC_062_512K
68
69### Build environment troubleshooting
70
71Following CLI / IDE are supported for project build:
72
73* Cygwin on Windows systems
74* unix style shells on *nix systems
75* Eclipse / ModusToolbox ("makefile project from existing source")
76
77*Make* - make sure it is added to system's `PATH` variable and correct path is first in the list;
78
79*Python/Python3* - make sure you have correct path referenced in `PATH`;
80
81*Msys2* - to use systems PATH navigate to msys2 folder, open `msys2_shell.cmd`, uncomment set `MSYS2_PATH_TYPE=inherit`, restart MSYS2 shell.
82
83This will inherit system's PATH so should find `python3.7` installed in regular way as well as imgtool and its dependencies.
84
85