0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于HPM_SDK_ENV开发应用程序的升级处理

先楫半导体HPMicro 2025-02-08 13:38 次阅读

基于HPM_SDK_ENV开发应用程序的方式

HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境, 其包含HPM_SDK,工具链,依赖工具(cmake, ninja, openocd等)以及工程创建工具等文件。用户基于HPM_SDK_ENV开发自己的应用程序时需要考虑如何维护板级配置文件和应用程序文件的问题。

以下3种维护方式:

用户将自己的板级配置文件和应用程序文件全部维护在HPM_SDK_ENV之中。

不推荐。该种方式容易造成文件组织混乱,当需要升级SDK_ENV时,SDK_ENV文件与用户文件组织在一起,升级处理麻烦。


用户使用SDK_ENV中的板级配置文件,在SDK_ENV外维护应用程序文件。

此种方式适合用户直接使用SDK_ENV中的评估板,开发自己的应用程序。

用户在SDK_ENV外维护板级配置文件和应用程序文件。

推荐。该方式将用户的板级配置文件和应用程序文件独立于SDK_ENV进行维护,能够方便的进行版本管理和升级SDK_ENV。

fda13a02-e5de-11ef-9434-92fbcf53809c.png

创建应用程序和板级配置

推荐用户将应用程序和板级配置文件维护在SDK_ENV之外。

从sdk_env_v1.7.0开始,先楫半导体在SDK_ENV中提供了用户模板以供用户参考开发属于自己的应用程序和板级配置文件。模板路径:sdk_env/user_template。

请参考该模板 “如何快速创建用户自定义board和app工程” 创建属于应用程序和板级配置以及Linker文件。


fdcca9da-e5de-11ef-9434-92fbcf53809c.png

CMake构建简要介绍

HPM_SDK使用基于CMake的程序构建系统。用户维护应用程序和板级配置时,需要对应添加CMakeLists.txt文件, CMake工具通过配置文件(CMakeLists.txt)来控制程序的构建过程,并生成适用于多种工具链(GCC/Segger Embedded Studio和IAR)的工程文件。通过修改CMakeLists.txt可以实现添加新的.c和.h文件,增加编译参数等操作。

用户通过维护板级配置文件和应用程序文件以及对应的CMakeLists.txt文件,可以方便的构建出自己的程序,只需对以上文件进行版本管理,即可实现对最终程序版本的有效管理,能够降低版本管理难度。

多人协作时,使用版本管理的板级配置文件和应用程序文件以及对应的CMakeLists.txt文件,即可在本地构建出相同的工程,无须传递完整的工程文件(通常整个工程文件size较大)以及处理工程文件中的路径不一致问题,可以提高协作效率。

用户可参考HPM_SDK中cmake文件和查看HPM_SDK所支持的cmake API说明使用相关cmake指令。

fdd80db6-e5de-11ef-9434-92fbcf53809c.png

用户准备好板级配置文件和应用程序文件以及对应的CMakeLists.txt文件后,可以使用sdk_env中的start_gui工具调用CMake脚本构建出工程文件。

fde9fc42-e5de-11ef-9434-92fbcf53809c.png

HPM_SDK_ENV升级与处理

当用户将应用程序和板级配置维护在SDK_ENV之外,升级时可以直接使用新的SDK_ENV再次构建程序。如下,用户在user目录下维护自定义的板级配置和应用程序,原先配合sdk_env_1.6.0构建工程,升级获取sdk_env_v1.7.0后可以使用新sdk_env中的工具再次构建工程,构建出的工程即会使用新sdk_env中的源文件,实现升级。

当sdk_env升级后,可以查看hpm_sdk docs中的Change Log获取升级信息。某些情形下可能出现需要用户适当修改自己维护的板级配置和应用程序与新sdk_env配合使用的情况,以下是一些可能情况的列举:

fdcca9da-e5de-11ef-9434-92fbcf53809c.png

01

使用用户维护的板子和应用程序,用新的sdk_env构建程序应该能够直接构建并编译通过。

02

使用用户维护的板子和新sdk_env提供的例程构建程序,可能会有需要补充或修改板级函数或宏定义等板级实现的情况。

假设hpm_sdk_env_v1.6.0中提供了例程A, 升级到hpm_sdk_env_v1.7.0时A例程进行了修改,需要使用板级文件中申明的函数或宏定义B。B是hpm_sdk_env_v1.7.0升级过程中新引入的,而用户自己维护的板级文件停留在旧的状态,缺少B的申明或实现,出现编译报错。

解决办法:参考SDK中的board,在用户自己维护的板级文件中添加缺少的函数或宏定义。

如果构建的例程是hpm_sdk_env_v1.7.0中新增的例程,新例程调用一些板级函数,则用户同样需要在自己维护的板级文件中添加相关板级实现。

如果使用用户维护的板子和SDK中的例程进行构建,出现不支持构建的情况,会可能由于SDK例程依赖特定板级的feature,而用户维护的板子不能提供相关feature,出现不能构建的情况。例如SDK中的例程hpm_sdk/samples/audio_codec/audio_loopback/app.yaml会记录该例程依赖板级feature:board_audio_codec,也就是当板子支持板级audio_codec,该例程才能被构建出来。板子支持的feature记录在板级文件夹下的yaml文件中。

03

使用用户维护的板子和应用程序,但用户应用程序想参考新sdk_env中的例程进行功能添加和升级。

例如在hpm_sdk_env_v1.6.0中,先楫提供了ECAT_IO例程,用户基于此开发了自己的例程,在hpm_sdk_env_v1.7.0中,先楫增加了FOE例程,用户希望将FOE功能添加到已有的应用程序中。

此类升级会涉及到修改用户自己维护应用程序中的cmake和应用程序的.c&.h文件。用户需参考SDK中的FOE例程的cmake修改自己应用程序的cmake,将FOE功能依赖的.c和.h添加进自己的工程,参考FOE例程,修改自己的应用程序,配置和调用FOE相关功能,最终实现FOE功能的正确添加。

04

用户维护的linker升级

如果用户使用的是SDK中的默认linker文件,其会随着SDK_ENV的更新而被更新,SDK默认linker文件路径在hpm_sdk/soc/xxxx/xxxx/toolchains下。

如果用户维护了自己的linker文件,sdk升级过程中会存在一些linker的改动, 如增加section,修改section的存放位置,特定的sample会对此类改动有需求。当使用自己维护的linker出现链接过程报错时,可以参考sdk中的linker进行检查和修改。

05

IDE版本的升级

在HPM_SDK_ENV升级过程中,构建出的IDE工程可能会存在参数变化等情况,需要新的IDE版本才能支持。会出现SDK_ENV升级后的工程需要IDE同步升级后才能正确编译的情况。例如升级到hpm_sdk_env_v1.7.0时,需要使用SEGGER Embedded Studio Release 8.16a及以上版本才可正确编译。IDE版本信息可关注SDK的Release Note,确认相关IDE的版本需求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17559

    浏览量

    355886
  • 应用程序
    +关注

    关注

    38

    文章

    3309

    浏览量

    58327
  • HPM
    HPM
    +关注

    关注

    1

    文章

    38

    浏览量

    7869
收藏 人收藏

    相关推荐

    先楫半导体 hpm_sdk v1.5.0 正式发布

    sdk_env 开发环境,通过包内的 start_gui 图形化工具来可视化的生成工程和打开工程。欢迎探索start_gui的更多功能。 常用链接 在线工具 hpm pinmux tool 链接
    发表于 04-08 11:14

    HPM SDK Linux开发环境搭建指南

    HPM SDK是一个基于宽松使用许可(BSD 3-Clause)完全开源的综合性软件支持包,帮助用户使用先楫半导体基于RISC-V内核的MCU简化和加快应用开发HPM
    发表于 06-08 13:59

    先楫hpm_sdk使用vscode开发

    一、概述 先楫的hpm_sdk,对于习惯用keil的开发者可能不太习惯,但是从开发角度上看,是比较灵活的,可以给开发者一定的发挥空间。该sdk
    发表于 06-24 20:19

    HPMSDK之外搭建工程指南(在也不担心SDK升级一堆冲突上头)

    sdk_env_v1.2.0。 2.HPM SDK 组成结构介绍2.1 SDK ENV组成结构 SDK
    发表于 08-09 14:29

    SDK_ENV 构建工程失败

    使用gui和cmd工具创建工程均失败,v1.2.0,v1.1.0版本都无法正常创建 F:\\\\work\\\\sdk_env\\\\hpm_sdk\\\\samples
    发表于 09-14 15:32

    【先楫HPM5361EVK开发板试用体验】在windows系统下搭建开发环境

    。 要将第2步下载的hpm_sdk文件夹里面的所有内容复制到sdk_env-main\\\\hpm_sdk中。 此时再运行start_gui.exe程序就能识别到
    发表于 11-29 21:15

    【先楫HPM5361EVK开发板试用体验】搭建开发环境1

    集成开发环 境HPM Studio和PC桌面端图形化的SoC资源配置 工具,同合作伙伴一起推进高性能MCU生态发展。 SDK在线文档: https://hpm-sdk
    发表于 12-03 14:42

    【先楫HPM5361EVK开发板试用体验】coremark测试HPM5361EVK性能

    HPM5361EVK开发板默认已经写好了大部分常用的BSP SDK,我们在使用时,需要先下载这些BSP, 2.1 sdk_env下载地址https://github.com/hpmi
    发表于 12-07 09:23

    【先楫HPM5361EVK开发板试用体验】coremark软件跑分测试HPM5361EVK性能

    HPM5361EVK开发板默认已经写好了大部分常用的BSP SDK,我们在使用时,需要先下载这些BSP, 2.1 sdk_env下载地址https://github.com/hpmi
    发表于 12-07 10:15

    【先楫HPM5361EVK开发板试用体验】coremark软件跑分测试HPM5361EVK性能

    HPM5361EVK开发板默认已经写好了大部分常用的BSP SDK,我们在使用时,需要先下载这些BSP, 2.1 sdk_env下载地址https://github.com/hpmi
    发表于 12-10 19:32

    使用面向OpenCL应用程序的英特尔SDK更快地开发OpenCL

    使用面向OpenCL™应用程序的英特尔®SDK更快地开发OpenCL
    的头像 发表于 11-09 06:39 2863次阅读

    如何使用Xilinx SDK创建Linux应用程序,并进行开发和调试

    了解如何使用Xilinx SDK创建Linux应用程序。 我们还将重点介绍和演示支持Linux应用程序开发和调试的不同方面的SDK功能。
    的头像 发表于 11-20 07:03 1.1w次阅读

    如何导出硬件平台并启动SDK开发应用程序及板级支持包

    本文介绍如何导出硬件平台, 并启动SDK开发应用程序及板级支持包(BSP)。
    的头像 发表于 02-08 10:56 2634次阅读
    如何导出硬件平台并启动<b class='flag-5'>SDK</b><b class='flag-5'>开发</b><b class='flag-5'>应用程序</b>及板级支持包

    [HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列 (二)

    一、概述在上一篇杂谈文章《[HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列(一)》,大概分析了先楫通用单片机开发与其他国产单片机的开发
    的头像 发表于 10-12 08:18 1929次阅读
    [<b class='flag-5'>HPM</b>杂谈]你想要了解的先楫<b class='flag-5'>hpm_sdk</b><b class='flag-5'>开发</b>都在这里系列 (二)

    window端的sdk_env的构建工具使用

    在上一篇杂谈文章《[HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列 (一)》,大概分析了先楫通用单片机开发与其他国产单片机的开发
    的头像 发表于 10-16 15:32 914次阅读
    window端的<b class='flag-5'>sdk_env</b>的构建工具使用