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

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

3天内不再提示

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

先楫半导体HPMicro 2023-09-26 10:00 次阅读

一、背景

最近在跟一些开发者交流过程中,或者开发者群里反馈,感觉先楫单片机开发方式不同于以往的单片机开发方式,或者开发方式没接触过导致无从下手,或者是觉得自己的APP需要严重依赖hpm_sdk等等。

在这些反馈当中,觉得有必要出个杂谈文章,谈一谈hpm_sdk的开发方式的优缺点,以及相比以往的单片机传统开发方式的不同点。以此可以带给开发者一些启发,更能方便开发者更快借助hpm_sdk进行开发自己的应用。

本文也会借助一些开发者分享过的开发经验,感谢hpmicro开发者贡献的文章。


二、开发差异

(一)IDE

先楫的目前通用MCU采用的内核架构都是riscv,这一点就不同于国内大同小异的各种arm的cortex-M系列的单片机,甚至可以B2B兼容STM32的单片机也一样,不能够支持ARM自己的平台-Keil MDK。

对于严重依赖keil开发的工程师来说,特别目前国内的很多开发工程师来说,这确实是不够友好的一个点。毕竟keil经过多年的发展,其傻瓜式的界面操作,网上丰富的踩坑记录,都足够让一个没接触过单片机开发的都能轻松入门。

但是Keil这个本身不是免费的商用IDE,尽管国内很多cortex-M单片机的芯片厂家提供的类似STM32的Firmware_Library包,里面的工程都支持了keil,但是也没说明对keil这个IDE进行了版权购买,这带来的版权问题责任就分给了芯片开发者,虽然国内很多可以通过破解方式进行商用,但是毕竟在商用的过程中时时刻刻得注意着版权问题。

先楫开发虽然不支持keil,但是在提供的IDE上,使用segger(大名鼎鼎Jlink调试器的厂家)自己开发的IDE,也就是SEGGER Embedded Studio for RISC-V,这个同样不是免费的商用IDE,但是先楫在版权上十分重视,购买了其芯片开发的商用版权,目前可以不限定于SEGGER Embedded Studio的版本,而且可以让开发者直接商用开发,避免版权问题。这个IDE同样跟keil操作类似,通过可视化操作进行配置即可,配合其Jlink更是能够让调试更加友好。

IDE的编译链支持上,支持了segger自身的编译链,也支持了gcc编译链,同样也支持andes编译链。

开发者文章: (SEGGER Embedded Studio for RISC-V,for HPMicro Devices 解决首次使用激活问题,提示无License

另外SEGGER Embedded Studio 也有对应user manual手册,以便开发者查缺补漏。网页:

6b80dda2-5c10-11ee-9788-92fbcf53809c.png


(二)构建系统

对于国内的arm的cortex-m的单片机厂家来说,并没有所谓的什么构建系统开发环境。但是对于有些开发者如果开发过乐鑫的产品,比如esp32,使用的esp-idf就是使用的cmake构建系统(早期的esp-idf还是makefile版本),还有树莓派的rp2040的pico-sdk。这种构建系统入门有点门槛,需要有一定的cmake基础(比如cmakelist语法)以及相关环境搭建经验,但这也感觉是未来嵌入式发展的趋势,通过cmakelists.txt管理配置生成各大跨平台的工程(比如先楫开发中,生成SEGGER Embedded Studio 以及后续先楫支持的IDE)、生成的makefile文件可以给各大平台编译器解析,

对于芯片原厂和开发者来说,这种构建系统可以让多种芯片系列,组件包等等只需要支持一套SDK,而不需要提供多种library芯片包,可以扩展构建多种IDE,比如命令或者可视化界面生成EGGER Embedded Studio工程;支持cmake构建的vscode,clion等等跨平台开发。


三、开发优势

项目工程依靠cmakelists.txt文件进行管理,这种管理方式类似在keil进行相关路径加入或者加入自定义编译宏定义等,比如:

1、设置一些自定义编译宏定义开关

2、根据不同编译类型配置不同的编译选项和链接选项

3、添加头文件路径、编译宏等常规操作

4、添加源码编译

5、添加extern组件等操作

以上是不是觉得这种开发方式,IDE比如keil在界面操作也有,但是对于cmake来说,单纯一个cmakelist文件就可以操作完成,熟悉入门后也能大大提高开发效率。

本文以hpm_sdk1.2进行说明,简单举例一些常用的命令说明,一个cmakelist文件管理的方便好处。

更多的命令接口可以参考sdk中的sample的cmakelist,以及cmake文件夹里面的封装的命令函数。不在本文阐述范围内。

6b94897e-5c10-11ee-9788-92fbcf53809c.png

该版本已经支持在sdk以外创建自己的Board, 但在sdk以外开发自己的应用一直都是可以的。

(一)创建自己的AP应用文件夹

新建一个自己一个APP文件夹,里面放置一个Board-这里我使用的是hpm6750_rc,这里从hpm_sdk里面的board的hpm6750evkmini中提取,并把hpm6750evkmini.yaml改为hpm6750_rc.yaml,如下:

6b9be3fe-5c10-11ee-9788-92fbcf53809c.png

从hpm_sdk复制一个sample,比如hello_world。然后在自己创建的应用文件夹新建个build,进入到该build文件夹,这时候使用命令:

cmake -G Ninja -DBOARD=rc_hpm_evk -DBOARD_SEARCH_PATH=your custom/rcsn_project/board/ -DCMAKE_BUILD_TYPE=flash_xip ..

这时候打开build文件夹里面的segger_embedded_studio,打开ses这个IDE,可以看到boards已经变成自己项目上的Board,以及自己的application已经被添加上来。

6ba4af70-5c10-11ee-9788-92fbcf53809c.png

(二)定义宏开关,预处理定义

在keil上,预处理定义在option上可以手动输入定义

6bb77aa6-5c10-11ee-9788-92fbcf53809c.png


同样在segger_embedded_studio中也有类似的定义。

6bc418e2-5c10-11ee-9788-92fbcf53809c.png


但是hpm_sdk中,并不需要开发者自己手动去添加,在makelists使用命令: sdk_compile_definitions, 如此就可以进行定义预处理符号。

6bd63b1c-5c10-11ee-9788-92fbcf53809c.png

(三)头文件路径加入

比如在keil里面就有对应的控件操作

6bb77aa6-5c10-11ee-9788-92fbcf53809c.png

那么在segger_embedded_studio也有类似操作界面

6bc418e2-5c10-11ee-9788-92fbcf53809c.png

在hpm_sdk的构建当中,同样也不需要用户自己去界面操作,直接可以在cmakelists通过sdk_inc 命令设置,比如自己的工程定义以下工程目录,每个目录里面有个inc,这个就是需要包含的头文件路径。

6bfb3c64-5c10-11ee-9788-92fbcf53809c.png

6c0c14c6-5c10-11ee-9788-92fbcf53809c.png

(四)加入源文件

像keil一样,segger_embedded_studio也有自己的源文件目录结构,比如需要添加上述所说的drivers里面的文件,可以通过使用sdk_app_src命令进行设置。比如:

6c181208-5c10-11ee-9788-92fbcf53809c.png

(五)编译相关

比如设置优化等级、GCC编译参数、指令集选择等等。都可以通过sdk_compile_options命令设置

设置O3优化可以使用:

sdk_compile_options("-O3")

设置gcc特定警告

sdk_compile_options("-Wall")

设置ABI和ISA

sdk_compile_options("-mabi=ilp32d")sdk_compile_options("-march=rv32gc")


四、开发劣势

(一)入门门槛相对高

目前来说,cmake构建方式在MCU开发上并不常见,也存在一定的入门门槛;

但对于项目的构建优化和管理是效率显著的,比如引入一个第三方中间件,只需要在此中间件内部通过CMakelists管理好自身文件链接,项目通过条件包含,能够最大减少中间件带来的耦合度。

6c2afd3c-5c10-11ee-9788-92fbcf53809c.png

需要有一定的cmake基础,也带来一定的学习成本。

(二)工程管理相对约束

在传统的MCU开发中,很多开发者都喜欢把MCU厂家自身的驱动和组件源码都加入到自己的工程目录下,这样方便自己管理,甚至可以自己改动官方库代码(这点是极其不推荐的行为)。


但hpm_sdk更多倾向于开发者的APP应用与SDK分开,这种开发好比是上位机的QT开发,在QT开发中,通过pro/pri文件管理导入QT的官方库使用,如果不想使用那就不开启对应的库,又好比python开发,通过Import方式自行选择。


这种开发方式需要把hpm_sdk路径放在对应的文件夹中,并把路径添加到环境变量,这好比是软件的安装,先楫的所有芯片系列都依赖与这个hpm_sdk,用户只需关心自己的应用开发路径,在拷贝的过程中也只需要拷贝自身应用,但前提对方也得"安装"了hpm_sdk。


这种约束方法对于有些开发者来说确实不够友好,当然未来先楫也不排除支持把hpm_sdk所需要的文件能让开发者自行导入到自己工程目录的需求,比如类似stm32cubemx生成初始化外设工具,但hpm_sdk的cmake构建方式仍是主要开发方式。

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

    关注

    6035

    文章

    44554

    浏览量

    634653
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1035

    浏览量

    45902
  • HPM
    HPM
    +关注

    关注

    1

    文章

    23

    浏览量

    7741
收藏 人收藏

    评论

    相关推荐

    HPM6E00技术日 | 百人研讨共话工业应用创新及发展趋势

    、内嵌ESC的高性能RISC-V内核微控制器系列——HPM6E00产品及其应用,由的市场、技术和方案专家们以及
    发表于 09-02 10:14

    半导体hpm_apps v1.6.0上线

    半导体hpm_apps v1.6.0上线
    的头像 发表于 08-02 08:18 772次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>hpm</b>_apps v1.6.0上线

    有奖提问!半导体HPM6E00系列新品发布会!!

    , EtherCAT Slave Controller) 的高性能MCU产品——HPM6E00系列新品全面上市! 直关注的小伙伴们应
    发表于 06-20 11:45

    半导体 hpm_sdk v1.5.0 正式发布

    半导体 hpm_sdk v1.5.0 正式发布
    的头像 发表于 04-12 08:17 577次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体 <b class='flag-5'>hpm_sdk</b> v1.5.0 正式发布

    半导体 hpm_sdk v1.5.0 正式发布

    半导体 hpm_sdk v1.5.0 正式发布!功能升级更强大 版本更新概况 新支持的IDE IAR Embedded Workbench for RISC-V (测试版本3.20.1) 新增
    发表于 04-08 11:14

    半导体hpm_sdk v1.5.0正式发布!

    可以将当前app所使用到hpm_sdk的文件复制到app本地, 同时更新app的CMakeLists.txt使之使用本地化之后的hpm_sdk
    的头像 发表于 04-08 10:02 916次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>hpm_sdk</b> v1.5.0正式发布!

    半导体携手OpenHarmony正式发布HPMicro ohos v1.0.0

    各位关注的小伙伴们,基于OpenHarmony 4.0-Release版本和hpm_sdk v1.4.0 版本的 HPMicro ohos v1.0.0 正式发布了。
    的头像 发表于 04-02 10:45 1103次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体携手OpenHarmony正式发布HPMicro ohos v1.0.0

    基于HPM5300 RISC-V内核MCU的HPM5361EVK开发板测评效果(二)

    HPM5361EVK是基于HPM5300系列高性能RISC-V内核MCU的
    的头像 发表于 03-12 10:30 2874次阅读
    基于<b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>5300 RISC-V内核MCU的<b class='flag-5'>HPM</b>5361EVK<b class='flag-5'>开发</b>板测评效果(二)

    半导体HPMicro Nuttx v0.2.0正式发布!

    各位关注的小伙伴们,基于Nuttx v12.4.0版本和hpm_sdk v1.4.0版本的HPMicro Nuttx v0.2.0正式发布了。
    的头像 发表于 03-12 10:22 1307次阅读

    HPM5361EVK开发板,网友测评效果(二)

    上海半导体举办的HPM5361EVK开发板试用活动圆满结束,广大工程师和爱好者们踊跃参与此次试用并提交报告。经过
    的头像 发表于 03-12 08:16 2055次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>5361EVK<b class='flag-5'>开发</b>板,网友测评效果(二)

    HPM5361EVK开发板试用体验】(原创)5.手把手实战AI机械臂

    HPM5361EVK开发板。现在开始设计实战AI机械臂的程序。 代码结构 由于编写个完整的用HP
    发表于 02-06 10:28

    HPM5361EVK开发板试用体验】HPM5361EVK开发板的UART实践与测试

    HPM5361EVK开发简单给大家介绍下,HPM
    发表于 01-09 22:22

    半导体HPM5300EVK开发板试用作品手册免费下载

    产品介绍: HPM5300系列MCU是上海半导体推出的款高性能RISC-V内核通用微控制器。
    发表于 12-28 10:25

    HPM5361EVK开发板试用体验】HPM5361EVK开发板初体验

    HPM5361EVK是基于HPM5300系列高性能RISC-V内核MCU的
    发表于 12-24 22:58

    HPM5361EVK开发板试用体验】认识和了解HPM5361EVK开发

    近日,收到了HPM5361EVK开发开发板,带大家了解和认识
    发表于 12-24 22:39