Skip to content

Commit 28aafb3

Browse files
committed
Enhance config system doc
1 parent 18e078a commit 28aafb3

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

docs/reference/configuration/configuration.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,20 @@ The Arm Mbed OS configuration system, a part of the Arm Mbed OS build tools, cus
77
- The receive buffer size of a serial communication library.
88
- The flash and RAM memory size of an Mbed target.
99

10-
The Arm Mbed OS configuration system gathers and interprets the configuration defined in the target in its [target configuration](../reference/adding-and-configuring-targets.html), all `mbed_lib.json` files and the `mbed_app.json` file. The configuration system creates a single header file, `mbed_config.h`, that contains all of the defined configuration parameters converted into C preprocessor macros. `mbed compile` places `mbed_config.h` in the build directory, and `mbed export` places it in the application root. `mbed compile` runs the Mbed configuration system before invoking the compiler, and `mbed export` runs the configuration system before creating project files.
10+
Here is how a default JSON file might look like:
11+
12+
```JSON
13+
"target_overrides": {
14+
"*": {
15+
"cellular.random_max_start_delay": "100"
16+
},
17+
"K64F": {
18+
"cellular.use-apn-lookup": false
19+
}
20+
}
21+
```
22+
23+
The Arm Mbed OS configuration system gathers and interprets the configuration defined in the target in its [target configuration](../reference/adding-and-configuring-targets.html), all `mbed_lib.json` files and the `mbed_app.json` file. The configuration system creates a single header file, `mbed_config.h`, that contains all of the defined configuration parameters converted into C preprocessor macros. For instance, based on the JSON snippet above, you would see the macro, `MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY` in `mbed_config.h`. `mbed compile` places `mbed_config.h` in the build directory, and `mbed export` places it in the application root. `mbed compile` runs the Mbed configuration system before invoking the compiler, and `mbed export` runs the configuration system before creating project files.
1124

1225
<span class="notes">**Note:** Throughout this document, "library" means any reusable piece of code within its own directory.</span>
1326

@@ -74,15 +87,15 @@ When compiling or exporting, the configuration system generates C preprocessor m
7487
<file truncated for brevity>
7588
```
7689
77-
The name of the macro for a configuration parameter is either a prefixed name or explicitly specified by `macro_name`. The configuration system constructs a prefixed name from the prefix `MBED_CONF_`, followed by the name of the library or `APP`, followed by the name of the parameter. The configuration system then capitalizes the prefixed name and converts it to a valid C macro name. For example, the configuration system converts the `random_max_start_delay` configuration parameter in the library `cellular` to `MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY`.
90+
The name of the macro for a configuration parameter is either a prefixed name or explicitly specified by `macro_name`. The configuration system constructs a prefixed name from the prefix `MBED_CONF_`, followed by the name of the library or `APP`, followed by the name of the parameter. The configuration system then capitalizes the prefixed name and converts it to a valid C macro name. For example, the configuration system converts the `random_max_start_delay` configuration parameter in the library `cellular` to `MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY`. As for using `macro_name` field, it is strongly encouraged to avoid its use unless the intent is to support an already defined macro that is heavily used in Mbed OS, or user applications.
7891
7992
The Mbed OS build tools instruct the compiler to process the file `mbed_config.h` as if it were the first include of any C or C++ source file, so you do not have to include `mbed_config.h` manually.
8093
8194
Do not edit `mbed_config.h` manually. It may be overwritten the next time you compile or export your application, and you will lose all your changes.
8295
8396
### Configuration parameters in `mbed_app.json`, `mbed_lib.json`
8497
85-
An application may have one `mbed_app.json` in the root of the application and many `mbed_lib.json` files throughout the application. When present, `mbed_app.json` may override configuration parameters defined in libraries and the target and define new configuration parameters.
98+
An application may have one `mbed_app.json` in the root of the application and many `mbed_lib.json` files throughout the application. When present, `mbed_app.json` may override configuration parameters defined in libraries and the target, and define new configuration parameters.
8699
87100
#### Overriding configuration parameters
88101
@@ -256,7 +269,7 @@ It is an error to both add and subtract the same value from a cumulative attribu
256269

257270
### `mbed_app.json` Specification
258271

259-
`mbed_app.json` may be present at the root of your application or specified as the argument of the `--app-config` parameter to `mbed compile` and `mbed export`. The configuration system interprets only one `mbed_app.json` during `mbed compile` or `mbed export`, unlike library configuration. Like `mbed_lib.json`, `mbed_app.json` is a JSON formatted document that contains a root JSON Object. The keys within this object are sections. The allowed sections and their meanings are below:
272+
`mbed_app.json` may be present at the root of your application or specified as the argument of the `--app-config` parameter to `mbed compile` and `mbed export`. When you create a new mbed project using `mbed new`, `mbed_app.json` is created by default in the root of the application. The configuration system interprets only one `mbed_app.json` during `mbed compile` or `mbed export`, unlike library configuration. Like `mbed_lib.json`, `mbed_app.json` is a JSON formatted document that contains a root JSON Object. The keys within this object are sections. The allowed sections and their meanings are below:
260273

261274
| Section | Required | Meaning |
262275
| ------- | -------- | ------- |

0 commit comments

Comments
 (0)