嵌入式


自定义板子和SOC定义

<p><a href="https://docs.zephyrproject.org/latest/application/index.html#custom-board-devicetree-and-soc-definitions">https://docs.zephyrproject.org/latest/application/index.html#custom-board-devicetree-and-soc-definitions</a></p> <p>对于<code>Zephyr</code>还不支持的板子和平台,你需要在应用中增加板子和<code>SOC</code>定义,而不需要将他们加到<code>Zephyr</code>树中。这个结构类似于<code>Zephyr</code>树中的板子和<code>SOCs</code>结构.使用这个结构可以更加容易的将自己的平台加入到<code>Zephyr</code>树中. 自定义板子使用下面的结构 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/a6d814d628ad8d0c2543af9bc6a0927f?showdoc=.jpg" alt="" /></p> <ul> <li><code>boards</code>目录结构</li> </ul> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/c52a1587290ad3b3181ea55a6d827688?showdoc=.jpg" alt="" /></p> <ul> <li><code>soc</code>目录放所有<code>soc</code>相关的代码,你仍可以使用<code>Zephyr</code>树中支持的<code>SOC</code></li> </ul> <h3>板子</h3> <p>使用合适的芯片架构目录名字<code>e.g., x86, arm</code>,<a href="https://docs.zephyrproject.org/latest/boards/boards.html#boards" title="板子架构">板子架构</a> <code>doc</code>和<code>support/</code>是可选的,但提交到<code>Zephyr</code>则需要这些文件 <code>my_custom_board</code>的内容需要有下面的文件</p> <pre><code>my_custom_board_defconfig my_custom_board.dts my_custom_board.yaml board.cmake board.h CMakeLists.txt doc/ dts_fixup.h Kconfig.board Kconfig.defconfig pinmux.c support/</code></pre> <p>你可以在构建时指定自定义板子</p> <pre><code> cmake -DBOARD=&lt;board name&gt; -DBOARD_ROOT=&lt;path to boards&gt; ..</code></pre> <blockquote> <p><code>BOARD_ROOT</code>可以在<code>CMakeLists.txt</code>定义</p> <pre><code>set(BOARD_ROOT ${CMAKE_CURRENT_LIST_DIR}) include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)</code></pre> </blockquote> <p>将自定义board的board_defconfig文件命名为自定义board名称,更改Kconfig.board中board名,kconfig_defconfig改为board名,dts文件改成board名,yaml文件改成board名</p> <ul> <li>kconfig_defconfig <pre><code> if BOARD_customboard</code></pre></li> </ul> <p>config BOARD default &quot;f407&quot;</p> <p>endif</p> <pre><code>- Kconfig.board</code></pre> <p>config BOARD_customboard bool &quot;NUCLEO-144 F412ZG Development Board&quot; depends on SOC_STM32F412ZG</p> <pre><code> - customboard_defconfig</code></pre> <p>ONFIG_ARM=y CONFIG_BOARD_CUSTOMBOARD=y CONFIG_SOC_SERIES_STM32F4X=y</p> <pre><code> ### `SOC`定义 ![](https://www.showdoc.cc/server/api/common/visitfile/sign/1d3e1069a24f591b71ed379a6197a4b7?showdoc=.jpg) 所有`Kconfig`文件的目录需要通过`$(SOC_DIR)`指定,在`soc`目录中需要顶级`Kconfig`文件指定自定的`SOC`</code></pre> <pre><code>choice prompt "SoC/CPU/Configuration Selection" source "$(SOC_DIR)/$(ARCH)/\*/Kconfig.soc" endchoice menu "Hardware Configuration" osource "$(SOC_DIR)/$(ARCH)/\*/Kconfig" endmenu ```</code></pre> <p>应用程序的目标平台可通过<code>cmake</code>构建系统的参数<code>-DSOC_ROOT</code>指定自定义平台的位置</p> <pre><code>cmake -DBOARD=&lt;board name&gt; -DSOC_ROOT=&lt;path to soc&gt; -DBOARD_ROOT=&lt;path to boards&gt; ..</code></pre> <p>你也可以在<code>CMakeLists.txt</code>定义<code>SOC_ROOT</code></p>

页面列表

ITEM_HTML