[HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列 (三)
在昨天(2024年3月29号),先楫发布了新的hpm_sdk包以及hpm_env的window环境开发包,也就是V1.5.0版本。这两个包在以往的系列文章中已经做了介绍,如果想了解可以进行翻阅。《你想要了解的先楫hpm_sdk开发都在这里系列》
本文主要介绍hpm_sdk和hpm_env在V1.5.0版本下的更新。
由于sdk更新的内容较多,也使得本文内容较多,建议更多可以查看更新文件CHANGELOG.md
在sdk_env的CHANGELOG.md可以看到,除了更新sdk为1.5之外,也更新了windows端的gcc toolchain版本到13.2,更新了HPM6800EVK这款开发板的用户手册到1.1。
其他更多的更新在于start_gui可视化生成工具,也是本文阐述的重点。
(一)localize sdk for app (sdk生成本地化)
该使用场景是: 当用户希望可以有一份和当前应用匹配的独立sdk,可以对sdk进行本地化。本地化的sdk以及应用可以整体发送到另外一个工作机器编译。
简单来说,localize sdk也就是在第一篇中说过未来支持的工程文件本地化,跟stm32cubemx生成工程类似。
sdk本地化生成有两种方式,一种使用start_gui,一种是使用命令行。
1、使用start_gui生成本地化, 提供了localize sdk for app按钮
比如hpm6750evk2生成lvgl相关工程,先点击Generate按钮,再点击Localize SDK for App按钮。
缺省状态下sdk会被本地化到当前应用CMakeLists.txt同一级目录,以 localized_sdk_for_BOARDNAME 命名。本地化之后,当前应用可以被移动到其他位置(或者整体发送给另一台工作机器),移动之后的之前cmake构建过程中生成的所有ide工程文件可以直接打开编译。但是由于cmake生成的用户gcc的构建文件都是用绝对路径,gcc的编译需要重新构建(删除构建目录下CMakeCache.txt和CMakeFiles目录)。
试着将该目录拷贝到另外一台电脑上,打开生成的ses工程或者iar工程。
进行编译,编译成功。说明可以通过sdk本地化进行工程复制,方便自己传统方式的工程管理和拷贝。
1)、使用opengdb调试,需要自己更改自己的Openocd可执行文件路径,默认生成的是在本地化生成的路径上。
2)、对于windows平台,本地化sdk需要和当前应用在同一盘符下。
3)、本地化的sdk位置不能改变,同时本地化的sdk和当前应用的相对路径关系也不能改变。
1)、本地化过程中会将当前应用的CMakeLists.txt先备份为CMakeLists.txt.localized.bak,然后做使用本地化后sdk相关的改动
2)、如果中间需要再生成,可以使用unlocalize sdk for App进行反本地化,再重新locallize。
3、反本地化有以下依赖,任何条件不满足,反本地化过程将会终止:
1. 存在CMakeLists.txt.localized.bak
2. 不存在CMakeLists.txt.unlocalized.bak
- 反本地化过程会把在本地化过程中修改的当前应用CMakeLists.txt先进行备份,在用 CMakeLists.txt.localized.bak恢复。备份为CMakeLists.txt.unlocalized.bak,此备份文件的目的是避免用户在本地化之后的改动被意外覆盖.
使用hpm6750evk2生成helloworld工程。进入sample/hello_world,新建个build文件夹,然后进入build进行构建
$ cmake -GNinja -DBOARD=hpm6750evk2 -DCMAKE_BUILD_TYPE=flash_xip ..
2、使用 ninja localize_sdk/ unlocalize_sdk命令生成本地化。
(二)、compile with gcc(gcc编译sdk)
如果不想装任何IDE,或者需要快速编译生成可执行文件进行烧录,start_gui提供了GCC Compile按钮进行在线编译。
(三)launch gdb server(更换GDB的cfg文件)
如果需要更换probe/soc/board的cfg文件,start_gui提供了launch gdb server 按钮,支持在线更改,也支持自定义的Board.
以上是主要的sdk_env更新,本文可能存在遗漏,更全的功能可自行查看sdk_env。
hpm_sdk更新比较多,CHANGELOG.md上更新长达三页,本文也阐述不过来,具体更新可看hpm_sdk下的CHANGELOG.md文件。
1、IDE支持上,在1.5.0支持了IAR,版本为3.20.1。对于习惯IAR开发的话是一个特别的好消息。
主要支持了以下:支持nds_gcc options、IAR生成、为工具添加指定linker文件、支持通配符源文件加入、SDK本地化。
1)、"add symbols to specify linker for tools."
这个也就是当不想使用sdk自带的ses或者IAR或者gcc的linker文件时候,可以通过set linker file指令设置指定的linker file文件路径。
对于GCC来说使用的是 CUSTOM_GCC_LINKER_FILE
对于SES来说使用的 CUSTOM_SES_LINKER_FILE
对于IAR来说使用的是 CUSTOM_IAR_LINKER_FILE
set(CUSTOM_SES_LINKER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/flash_xip_rcsn.icf)
③使用命令行构建可知,ses linker file已经被指定。
2)、"add sdk*src_glob." 支持通配符文件加入
在以往的版本中,要加入某个文件夹的所有文件都得使用sdk_app_src逐个加入,在1.5.0版本中支持了文件夹内所有文件的加入,对应的指令有sdk_src_glob 、sdk_app_src_glob 、sdk_iar_src_glob、sdk_ses_src_glob。也就是在原来的src基础上加上了_glob后缀。
还是hello_world例子,在camkelists.txt中把sdk_app_src更换为sdk_app_src_glob
1、本文阐述SDK V1.5.0的一部分更新内容,其余的更新内容建议通过查看CHANGELOG.md。
2、从更新点上看,change和add的内容更新最多,说明先楫sdk开始在丰富功能的路上逐步发力,比如组件和中间件丰富、例子。以及工具使用便利傻瓜式的方向走。