嵌入式


配置系统

<p><a href="https://os.mbed.com/docs/mbed-os/v5.14/reference/configuration.html">https://os.mbed.com/docs/mbed-os/v5.14/reference/configuration.html</a></p> <h4></h4> <p><code>Arm Mbed OS</code>配置系统作为<code>OS</code>的一部分,自定义了编译时配置参数。每个库可以在<code>mbed_lib.json</code>定义一些配置参数.<code>mbed_app.json</code>可以覆盖这些配置参数。配置使用JSON格式定义,如一些配置参数: </p> <ul> <li>获取数据的周期</li> <li>OS线程的默认堆栈大小</li> <li>串口接收缓存大小</li> <li>Mbed目标的flash和RAM空间大小 <code>Arm Mbed OS</code>配置系统收集和解析所有<code>mbed_lib.json</code>文件和<code>mbed_app.json</code>文件目标配置的定义.配置系统创建一个单一的头文件<code>mbed_config.h</code>包含了所有配置参数的定义转换成C预处理宏。</li> </ul> <blockquote> <p><code>mbed compile</code>将<code>mbed_config.h</code>放到build文件夹下,它在编译前执行配置系统 <code>mbed export</code>将<code>mbed_config.h</code>放到根目录文件夹下,在创建工程文件前运行配置系统</p> <p>注意:配置系统提供增加自定义目标的方法 <code>Mbed OS</code>工具查找根目录下的<code>custom_targets.json</code>将其作为目标.</p> </blockquote> <h4>获取支持的配置选项</h4> <p><code>mbed compile --config</code></p> <h4><code>mbed_app.json</code>,<code>mbed_lib.json</code>的配置</h4> <p>配置系统允许用户使用JSON对象<code>target_overrides</code>覆盖任何已定义的参数</p> <pre><code>"target_overrides": { "*": { "cellular.random_max_start_delay": "100" }, "K64F": { "cellular.use-apn-lookup": false } }</code></pre> <ul> <li><code>mbed_lib.json</code>覆盖库配置</li> <li><code>mbed_app.json</code>覆盖应用和库的配置</li> </ul> <h4>定义配置参数</h4> <p>配置系统可以解析目标,库和应用定义的<code>config</code>的JSON对象的配置</p> <pre><code>{ "config": { "param1": { "help": "The first configuration parameter", "macro_name": "CUSTOM_MACRO_NAME", "value": 0 }, "param2": { "help": "The second configuration parameter", "required": true }, "param3": { "help": "The third configuration parameter", "value_min": 0, "value_max": 10, "value": 5 }, "param4": { "help": "The fourth configuration parameter", "accepted_values": ["test1", "test2", "0x1000"], "value": "test2" }, "param5": { "help": "The fifth configuration parameter", "value": null }, "param6": 10 } }</code></pre> <p>配置项的值不定义<code>undefined</code>或设置成<code>null</code>允许在编译时指定<code>mbed compile --config</code>,r然而这个配置项不会在 <code>mbed_config.h</code>出现且不影响应用或<code>OS</code>除非它被复写了。 <code>param1</code>~<code>param5</code>使用描述对象定义。描述对象支持下面的键值:</p> <ul> <li>help: 可选,描述配置参数目的</li> <li>value: 可选,定义参数值</li> <li>value_min: 可选,定义参数最小值</li> <li>value_max: 可选,定义参数最大值</li> <li>accepted_values: 可选,定义可接收参数列表</li> <li>required: 可选,指定在编译前是否必须设置参数值,默认<code>false</code>。</li> <li>macro_name: 可选,指定宏名称。</li> </ul> <blockquote> <p>配置系统自动在每个配置参数前加入前缀,这样同名的配置参数不会与目标或库的配置发生冲突。 前缀是</p> </blockquote> <table> <thead> <tr> <th>位置</th> <th>前缀</th> </tr> </thead> <tbody> <tr> <td>target</td> <td><code>target.</code></td> </tr> <tr> <td>任何库</td> <td>库名称<code>name.</code></td> </tr> <tr> <td>应用</td> <td><code>app.</code></td> </tr> </tbody> </table> <h4><code>mbed_lib.json</code> spec</h4> <p>允许的section</p> <table> <thead> <tr> <th>section</th> <th>必须</th> <th>定义</th> </tr> </thead> <tbody> <tr> <td><code>name</code></td> <td>是</td> <td>库的名称</td> </tr> <tr> <td><code>macros</code></td> <td>否</td> <td><code>mbed_config.h</code>定义的宏列表</td> </tr> <tr> <td><code>config</code></td> <td>否</td> <td>库的配置参数</td> </tr> <tr> <td><code>target_overrides</code></td> <td>否</td> <td>覆盖目标和本库的配置</td> </tr> </tbody> </table> <pre><code>{ "name": "mylib", "config": { "buffer_size": 1024, "timer_period": { "help": "The timer period (in us)", "macro_name": "INTERNAL_GPTMR_PERIOD", "required": true }, "queue_size": { "help": "Size of event queue (entries)", "value": 10 } }, "macros": ["MYMOD_MACRO1", "MYMOD_MACRO2=\"TEST\""], "target_overrides": { "K64F": { "timer_period": 100, "queue_size": 40 }, "NXP": { "queue_size": 20, "buffer_size": 128, "target.features_add": ["IPV4"] } } }</code></pre> <h4><code>mbed_app.json</code> spec</h4> <p><code>mbed_app.json</code>放在应用的根目录下或通过<code>mbed compile</code>和<code>mbed export</code>的<code>--app-config</code>指定。 允许的section:</p> <table> <thead> <tr> <th>section</th> <th>必须</th> <th>定义</th> </tr> </thead> <tbody> <tr> <td><code>artifact_name</code></td> <td>否</td> <td>执行文件名称。默认是文件夹名</td> </tr> <tr> <td><code>macros</code></td> <td>否</td> <td><code>mbed_config.h</code>宏列表</td> </tr> <tr> <td><code>config</code></td> <td>否</td> <td>配置参数</td> </tr> <tr> <td><code>target_overrides</code></td> <td>否</td> <td>复写目标,库和应用配置</td> </tr> </tbody> </table> <pre><code>{ "artifact_name": "my-application", "config": { "welcome_string": { "help": "The string printed on the display on start-up", "value": "\"Hello!\"" } }, "target_overrides": { "*": { "mylib.timer_period": 100 }, "NCS36510": { "target.mac_addr_high": "0x11223344" } } }</code></pre> <blockquote> <p>如果override不带前缀,则覆盖<code>config</code>中配置参数</p> </blockquote>

页面列表

ITEM_HTML