2353|1

1366

帖子

6

TA的资源

版主

楼主
 

先楫hpm_sdk使用vscode进行开发 [复制链接]

 

一、概述

    先楫的hpm_sdk,对于习惯用keil的开发者可能不太习惯,但是从开发角度上看,是比较灵活的,可以给开发者一定的发挥空间。该sdk支持cmake构建,可以在多个支持cmake的平台构建,比如vscode,clion等平台,构建的同时也会生成segger的IDESEGGER Embedded Studio for RISC-V。对于习惯IDE开发的,也可以直接上手segger这个SEGGER Embedded Studio,先楫官方也给予免费授权,完全不用担心商业授权问题。

    如果不习惯segger这个IDE,那么如果有点cmake基础(当然也可以没有),习惯用了vscode编辑代码,那么我想,这篇文章,可以一步到位,使用vscode进行一套开发,包括构建,编译,烧录,调试。本文也是基于此步骤进行说明。

二、开发流程

(一)、构建

    hpm_sdk是基于cmake构建开发的,每个sample都带一个CMakelist.txt,可以理解为:每个sample都是一个工程。也可以在hpm_sdk外面的路径进行新建个cmake工程进行开发。

安装CMAKE:

    window系统下的相关构建和编译烧录相关的,都可以在都可以在

链接已隐藏,如需查看请登录或者注册
(提取码为xk2n)下载,本文截至发布日期,目前的sdk版本为sdk_v1.1.0。

hpm_sdk要求的cmake版本不低于3.13,当然官方也提供了安装包,可以自己指向路径到环境变量当中

下载sdk_env_v1.1.0.zip,解压后,进入tools文件夹,cmake工具下的版本为3.24.0

    如果想升级更高的cmake版本,网络搜索cmake,进入cmake官网,点击download,,所以可以下载最新的,也可以下载开发者自己喜欢的不低于3.13版本。

    安装cmake之后会提示是否加入环境变量,请选择加入环境变量。

    另外构建需要Ninja,官方网盘也同样提供了ninja可执行文件,拷贝此文件,可以存放在本地任意路径,前提是需要将该可执行文件路径加入到环境变量中。本文为了方便,直接把ninja拷贝到cmake安装目录上。

1、设置全局环境变量

    在构建之前,需要添加几个环境变量到系统当中:GNURISCV_TOOLCHAIN_PATH 和HPM_SDK_BASE

① GNURISCV_TOOLCHAIN_PATH:表示是hpm_sdk所依赖的编译器的绝对路径,也就是开发者本地路径。

② HPM_SDK_BASE:表示是hpm_sdk的绝对路径,也就是开发者的本地Hpm_sdk开发路径。

③ Cmake安装

    window系统下的gcc编译链和linux编译链都可以在

链接已隐藏,如需查看请登录或者注册
(提取码为xk2n)下载,本文截至发布日期,目前的sdk版本为sdk_v1.1.0。

    从sdk_env_v1.1.0.文件夹进入到toolchains文件夹中,找到rv32imac-ilp32-multilib-win就是编译链工具

2、vscode下cmake插件

    ① 在扩展商店搜索cmake,安装cmake和cmake Tools

    ① 在开发者本地上,根据自己喜欢新建一个文件夹(用来开发所需),然后打开vscode,打开应为干净的工作区,即是没有任何文件夹。点击“文件”选择“将工作区另存为”,将工作区保存到新建的文件夹中。

    ② 点击"打开文件夹",为了让vscode能方便全局搜索hpm_sdk相关源文件(当然也可以用json文件包含),把hpm_sdk文件夹包含进来。

    ③ 在新建的开发文件夹中,我们可以新建一个cmake工程,这里为了方便,我们直接拷贝hpm_sdk的sample的文件工程,比如drivers/gpio 文件。

    ④ 再把拷贝的gpio工程,点击vscode右键添加到工作区当中

    ⑤ 添加完毕后,cmake工具栏下,会出现两个文件夹目录,我们切换到gpio这个文件夹

    ⑥如上图所示,kit工具链提示需要选择,这里我们选择上述所说的工具链(前提已经设置为全局环境变量)

    ⑦ cmake构建的是用常规的构建type,比如Debug, release等构建,这些在hpm_sdk认为都是在RAM执行。所以有必要自定义个type.

    在gpio文件夹中,我们可以新建一个.vscode文件,并在里面新建一个settings.json,这个主要用来配置vscode以及相关插件的配置文件。

    构建时候需要需要选择cmake build type,还需要选择board type,因为hpm_sdk包含了先楫目前发布的官方评估板,需要开发者自己去指定,所以我们可以通过加入cmake的构建参数指定Board.本文所选的是hpm6200evk。

    本文需要生成编译在flash执行的固件,根据hpm_sdk的构建类型,我们可以选择flash_xip这个类型来进行构建。当然也可以按照以下照葫芦画瓢构建其他hpm支持的构建类型

    如此再次点击cmake 构建的时候,就出现以上我们添加的构建类型。

settings.json文件如下:

{

    "cmake.configureArgs": [

        "-DBOARD=hpm6200evk" //传递给cmake的配置参数,表明选择的board

    ],

    "cmake.defaultVariants": {

        "buildType": {

            "choices": {

                "flash_xip": { //buildType加入flash_xip,表示支持该类型构建

                    "short":"flash_xip",

                    "long":"先楫构建 - flash构建",

                    "buildType": "flash_xip"

                }

            }

        }

    }

}

其他cmake插件参数具体可以看插件说明以及系统的settings.json文件。

EEWORLDIMGTK14

如此,我们新建的cmake gpio工程就此构建完成

EEWORLDIMGTK15

(二 )、编译

有了上面构建的基础,我们直接在cmake工具栏上点击build,直接就可以编译了。

EEWORLDIMGTK16

另外:如果不想用cmake插件工具,我们可以在任意终端窗口进行构建编译,比如powershell。

EEWORLDIMGTK17

(三) 烧录调试

vscode下的烧录调试,使用的是cortex_debug插件,这个跟是不是arm没什么关系,只要设置好相关gdb相关路径即可。

1、安装Cortex_Debug插件,打开扩展设置,点击在"settings.json 中编辑"。

EEWORLDIMGTK18

2、编辑以下三个参数,也就是gdb的路径,jlinkGdb路径(用于jlink调试),openocd路径(用于openocd调试)

EEWORLDIMGTK19

参数如下:

    "cortex-debug.gdbPath.windows": "your path\\sdk_env_v1.1.0\\toolchains\\rv32imac-ilp32-multilib-win\\bin\\riscv32-unknown-elf-gdb.exe",

    "cortex-debug.JLinkGDBServerPath.windows": "your path\segger\\JLink\\JLinkGDBServerCL.exe",

    "cortex-debug.openocdPath.windows": "your path\sdk_env_v1.1.0\\tools\\openocd\\openocd.exe",

3、完成之后,点击vscode左边工具栏的"运行与调试" ,点击创建launch,json文件。选择gpio这个工程文件夹,后选择cortex_debug,就会在对应的文件夹中生成launch,json文件

EEWORLDIMGTK20

EEWORLDIMGTK21

EEWORLDIMGTK22

4、对于jlink配置。需要指定elf文件路径,以及选择的芯片型号,接口。

EEWORLDIMGTK23

配置:

{

    // 使用 IntelliSense 了解相关属性。

    // 悬停以查看现有属性的描述。

    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "cwd": "${workspaceFolder}",

            "executable": "${workspaceFolder}/build/output/demo.elf",

            "name": "hpmicro_jlink_debug",

            "request": "launch",

            "type": "cortex-debug",

            "device": "HPM6280xPAx",

            "runToEntryPoint": "main",

            "showDevDebugOutput": "none",

            "interface": "jtag",

            "servertype": "jlink",

        }

    ]

}

5、对于openocd配置如下:需要指定openocd的配置文件路径,比如probes、soc、boards的cfg文件

EEWORLDIMGTK24

配置:

{

    // 使用 IntelliSense 了解相关属性。

    // 悬停以查看现有属性的描述。

    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

      {

        "cwd": "${workspaceRoot}",

        "executable": "${workspaceFolder}/build/output/demo.elf",

        "showDevDebugTimestamps": "raw",

        "name": "HPM_dapDebug",

        "request": "launch",

        "type": "cortex-debug",

        "servertype": "openocd",

        "configFiles": [

          "your path\\sdk_env_v1.1.0\\hpm_sdk\\boards\\openocd\\probes\\ft2232.cfg",

          "your path\\sdk_env_v1.1.0\\hpm_sdk\\boards\\openocd\\soc\\hpm6280-single-core.cfg",

          "your path\\sdk_env_v1.1.0\\hpm_sdk\\boards\\openocd\\boards\\hpm6200evk.cfg"

        ],

        // "searchDir": [],

        // "runToEntryPoint": "__start()",

        // "showDevDebugOutput": "none"

        }

    ]

}

6、配置完毕之后,点击调试按钮,即可下载调试。

最新回复

感谢   详情 回复 发表于 2023-11-8 20:42
点赞 关注
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

感谢

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表