walker2048 发表于 2024-8-12 21:52

「星闪体验教程」1、如何添加自己的应用工程

<div class='showpostmsg'><h2><strong>前言</strong></h2>

<p>我也是第一次接触海思这种SDK,并不熟悉对应的构建系统,只是照着其他例子的配置,借鉴一下小熊派的教程来。</p>

<hr />
<h2>1、工程目录结构</h2>

<p>我在samples目录下创建一个iot目录,用来保存自己的工程。要把这个目录的内容添加到编译目标里,我们需要修改samples目录下的CMakeLists.txt文件里(我是添加在add_subdirectory_if_exist(custom)这行后面),添加以下内容:</p>

<pre>
<code>

add_subdirectory_if_exist(custom)
add_subdirectory_if_exist(iot)

</code></pre>

<p>然后修改samples目录下的Kconfig文件,添加以下内容,这个内容其实很简单,就是如果开启Iot_sample特性,就展开iot目录里的Kconfig内容</p>

<pre>
<code>config ENABLE_IOT_SAMPLE
    bool
    prompt "Enable the Sample of IoT."
    default n
    depends on SAMPLE_ENABLE
    help
      This option means enable the sample of IoT.

if ENABLE_IOT_SAMPLE
osource "application/samples/iot/Kconfig"
endif
</code></pre>

<p>接下来编写iot项目的Kconfig文件,添加以下内容,内容也不复杂,作用是如果开启Support IOT_PLC Sample特性,则将iot_plc目录添加到构建系统里。如果不需要可配置的类型,就不需要添加这个文件。</p>

<pre>
<code>#===============================================================================
# @brief Kconfig file.
# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
#===============================================================================

config SAMPLE_SUPPORT_IOT_PLC
    bool "Support IOT_PLC Sample"
    prompt "Support IOT_PLC Sample."
    default n
    help
      This option means support IOT PLC Sample.</code></pre>

<p>接下来编写iot项目的CMakeLists.txt文件,用来将iot_plc目录添加到构建系统,如果不需要配置,可以将if(DEFINED CONFIG_SAMPLE_SUPPORT_IOT_PLC)这个判断语句删掉</p>

<pre>
<code>#===============================================================================
# @brief    cmake file
# Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
#===============================================================================

if(DEFINED CONFIG_SAMPLE_SUPPORT_IOT_PLC)
    add_subdirectory_if_exist(iot_plc)
endif()

set(SOURCES "${SOURCES}" PARENT_SCOPE)</code></pre>

<p>最后我们创建iot_plc目录(功能模块目录),然后在iot_plc目录里添加CMakeLists.txt文件,这个文件按小熊派的模板改的,这样改,以后增加源码文件和头文件会更方便一些。</p>

<pre>
<code>#===============================================================================
# @brief    cmake file
# Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
#===============================================================================

set(SOURCES_LIST
    ${CMAKE_CURRENT_SOURCE_DIR}/iot.c
)

set(PUBLIC_HEADER_LIST
    ${CMAKE_CURRENT_SOURCE_DIR}
)

set(SOURCES "${SOURCES_LIST}" PARENT_SCOPE)
set(PUBLIC_HEADER "${PUBLIC_HEADER_LIST}" PARENT_SCOPE)</code></pre>

<p>最后就是添加iot.c文件,这个文件我是直接复制blinky.c的内容,就没必要放上来了,当然也修改了一些内容。</p>

<h2><strong>2、配置文件对应解析</strong></h2>

<p>如下图,一般同一个目录层级下的Kconfig文件用于配置对应的CMakeLists.txt文件里的可选项内容,我在图片里已使用不同颜色的文字代表不同的层级。</p>

<p>例如iot目录下的Kconfig里的SAMPLE_SUPPORT_IOT_PLC,会直接影响iot目录下CMakeLists.txt文件里的配置,根据这个配置会影响iot_plc目录是否添加到编译文件里。</p>

<p>假如我们需要添加一些iot_plc功能模块的可配置选项,就需要在iot_plc里添加一个Kconfig文件(实际上在别的文件里添加也是可以的,只是时间长了忘记对应关系就很蛋疼)。</p>

<p>&nbsp;</p>

<div style="text-align: center;"></div>

<p>&nbsp;</p>

<h2><strong>3、编译和烧录</strong></h2>

<p>添加完毕后,就可以编译,并且烧录到板子上进行测试了。</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2024-8-13 07:25

<p>就需要在iot_plc里添加一个Kconfig文件,实际上在别的文件里添加也是可以的,是这样的</p>

秦天qintian0303 发表于 2024-8-13 14:55

<p>VS Code开发?没看出来什么开发环境&nbsp;&nbsp;</p>

walker2048 发表于 2024-8-13 15:35

秦天qintian0303 发表于 2024-8-13 14:55
VS Code开发?没看出来什么开发环境&nbsp;&nbsp;

<p>VSCode加命令行,海思自己的IDE也是魔改VSCode</p>

秦天qintian0303 发表于 2024-8-13 16:49

walker2048 发表于 2024-8-13 15:35
VSCode加命令行,海思自己的IDE也是魔改VSCode

<p>华为真厉害,各种魔改&nbsp;&nbsp;</p>
页: [1]
查看完整版本: 「星闪体验教程」1、如何添加自己的应用工程