blob: 048ab18b664e9a3703e64ee7dcd5ef283621d4c8 [file] [log] [blame]
Marti Bolivarf91bca52018-04-12 12:40:46 -04001/*
2 * Copyright (c) 2018 Open Source Foundries Limited
David Vinczeb75c12a2019-03-22 14:58:33 +01003 * Copyright (c) 2019 Arm Limited
Marti Bolivarf91bca52018-04-12 12:40:46 -04004 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef __MCUBOOT_CONFIG_H__
9#define __MCUBOOT_CONFIG_H__
10
11/*
12 * Template configuration file for MCUboot.
13 *
14 * When porting MCUboot to a new target, copy it somewhere that your
15 * include path can find it as mcuboot_config/mcuboot_config.h, and
16 * make adjustments to suit your platform.
17 *
18 * For examples, see:
19 *
20 * boot/zephyr/include/mcuboot_config/mcuboot_config.h
21 * boot/mynewt/mcuboot_config/include/mcuboot_config/mcuboot_config.h
22 */
23
24/*
25 * Signature types
26 *
27 * You must choose exactly one signature type.
28 */
29
30/* Uncomment for RSA signature support */
31/* #define MCUBOOT_SIGN_RSA */
32
33/* Uncomment for ECDSA signatures using curve P-256. */
34/* #define MCUBOOT_SIGN_EC256 */
35
36
37/*
38 * Upgrade mode
39 *
David Vinczee574f2d2020-07-10 11:42:03 +020040 * The default is to support A/B image swapping with rollback. Other modes
41 * with simpler code path, which only supports overwriting the existing image
42 * with the update image or running the newest image directly from its flash
43 * partition, are also available.
44 *
45 * You can enable only one mode at a time from the list below to override
46 * the default upgrade mode.
Marti Bolivarf91bca52018-04-12 12:40:46 -040047 */
48
49/* Uncomment to enable the overwrite-only code path. */
50/* #define MCUBOOT_OVERWRITE_ONLY */
51
52#ifdef MCUBOOT_OVERWRITE_ONLY
David Vincze2d736ad2019-02-18 11:50:22 +010053/* Uncomment to only erase and overwrite those primary slot sectors needed
Marti Bolivarf91bca52018-04-12 12:40:46 -040054 * to install the new image, rather than the entire image slot. */
55/* #define MCUBOOT_OVERWRITE_ONLY_FAST */
56#endif
57
David Vinczee574f2d2020-07-10 11:42:03 +020058/* Uncomment to enable the direct-xip code path. */
59/* #define MCUBOOT_DIRECT_XIP */
60
Tamas Banfe031092020-09-10 17:32:39 +020061/* Uncomment to enable the ram-load code path. */
62/* #define MCUBOOT_RAM_LOAD */
63
Marti Bolivarf91bca52018-04-12 12:40:46 -040064/*
65 * Cryptographic settings
66 *
67 * You must choose between mbedTLS and Tinycrypt as source of
68 * cryptographic primitives. Other cryptographic settings are also
69 * available.
70 */
71
72/* Uncomment to use ARM's mbedTLS cryptographic primitives */
73/* #define MCUBOOT_USE_MBED_TLS */
74/* Uncomment to use Tinycrypt's. */
75/* #define MCUBOOT_USE_TINYCRYPT */
76
77/*
David Vincze2d736ad2019-02-18 11:50:22 +010078 * Always check the signature of the image in the primary slot before booting,
Marti Bolivarf91bca52018-04-12 12:40:46 -040079 * even if no upgrade was performed. This is recommended if the boot
80 * time penalty is acceptable.
81 */
David Vincze2d736ad2019-02-18 11:50:22 +010082#define MCUBOOT_VALIDATE_PRIMARY_SLOT
Marti Bolivarf91bca52018-04-12 12:40:46 -040083
84/*
85 * Flash abstraction
86 */
87
88/* Uncomment if your flash map API supports flash_area_get_sectors().
89 * See the flash APIs for more details. */
90/* #define MCUBOOT_USE_FLASH_AREA_GET_SECTORS */
91
Marti Bolivarf9bfddd2018-04-24 14:28:33 -040092/* Default maximum number of flash sectors per image slot; change
93 * as desirable. */
94#define MCUBOOT_MAX_IMG_SECTORS 128
95
David Vinczeb75c12a2019-03-22 14:58:33 +010096/* Default number of separately updateable images; change in case of
97 * multiple images. */
98#define MCUBOOT_IMAGE_NUMBER 1
99
Marti Bolivar248da082018-04-24 15:11:39 -0400100/*
Fabio Utzig7d817862018-05-07 08:09:01 -0300101 * Logging
102 */
103
104/*
105 * If logging is enabled the following functions must be defined by the
106 * platform:
107 *
Emanuele Di Santo20ba65e2019-01-10 13:38:16 +0100108 * MCUBOOT_LOG_MODULE_REGISTER(domain)
109 * Register a new log module and add the current C file to it.
110 *
111 * MCUBOOT_LOG_MODULE_DECLARE(domain)
112 * Add the current C file to an existing log module.
113 *
Fabio Utzig7d817862018-05-07 08:09:01 -0300114 * MCUBOOT_LOG_ERR(...)
115 * MCUBOOT_LOG_WRN(...)
116 * MCUBOOT_LOG_INF(...)
117 * MCUBOOT_LOG_DBG(...)
118 *
Emanuele Di Santoccc98aa2019-01-09 14:17:54 +0100119 * The function priority is:
Fabio Utzig7d817862018-05-07 08:09:01 -0300120 *
121 * MCUBOOT_LOG_ERR > MCUBOOT_LOG_WRN > MCUBOOT_LOG_INF > MCUBOOT_LOG_DBG
Fabio Utzig7d817862018-05-07 08:09:01 -0300122 */
123#define MCUBOOT_HAVE_LOGGING 1
124
125/*
Marti Bolivar248da082018-04-24 15:11:39 -0400126 * Assertions
127 */
128
129/* Uncomment if your platform has its own mcuboot_config/mcuboot_assert.h.
130 * If so, it must provide an ASSERT macro for use by bootutil. Otherwise,
131 * "assert" is used. */
132/* #define MCUBOOT_HAVE_ASSERT_H */
133
Fabio Utzig853657c2019-05-07 08:06:07 -0300134/*
135 * Watchdog feeding
136 */
137
138/* This macro might be implemented if the OS / HW watchdog is enabled while
139 * doing a swap upgrade and the time it takes for a swapping is long enough
140 * to cause an unwanted reset. If implementing this, the OS main.c must also
141 * enable the watchdog (if required)!
142 *
143 * #define MCUBOOT_WATCHDOG_FEED()
144 * do { do watchdog feeding here! } while (0)
145 */
146
Marti Bolivarf91bca52018-04-12 12:40:46 -0400147#endif /* __MCUBOOT_CONFIG_H__ */