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

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

3天内不再提示

使用CMake+VSCode环境移植ThreadX到极海G32R501 MCU

Geehy极海半导体 来源:21ic论坛极海半导体专区 2026-03-09 14:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

《极海芯得》系列内容为用户使用极海系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。

01、概述

我本人是 cmake+vscode 组合的忠实用户,之前写了一篇文章介绍了在 cmake+vscode 环境下开发 G32R501 的一些实践经验。这篇文章准备更进一步:移植一个ThreadX。

关于 G32R501

G32R501是极海最新发布的实时控制 MCU,搭载Arm v8.1-M架构的ArmCortex-M52内核及自研紫电数学指令扩展单元,支持基于矢量扩充方案(MVE)的Arm HeliumTM技术,集成高性能感知,控制外设和灵活的外设互联系统,支持-40°C~105°/125°C的宽环境工作温度,适用于新能源逆变器、商业电源工业自动化、新能源汽车等广泛领域。

产品主页:https://www.geehy.com/product/fifth/G32R501

关于 ThreadX

最早由 Express Logic发布,2019年被微软收购。2023微软宣布将 ThreadX 捐赠给 Eclipse 基金会,更名为 Eclipse ThreadX,采用 Apache 2.0 协议完全开源。

工程目录组织

还是之前的套路,先介绍一下代码目录组织:

0ea6c244-1866-11f1-90a1-92fbcf53809c.png

主要的文件/文件夹有:

.vscode:VSCode 配置文件

build:构建目录

g32r501_sdk:G32R501 SDK 目录

keil-mdk:keil 工程文件,主要用于Debug。

ports:移植文件

src:App 源码

threadx:ThreadX 源码

CMakeLists.txt:CMake 配置文件

这个目录,是用git 进行源码管理,powershell进行命令行操作。下面的操作会一步一步指示如何完成移植。

02、移植步骤

构建目录

我的工作目录是 D:g32r501_threadx,大家在实践的时候可以自行选择目录。手动创建这个目录,在 powershell里切换到这个目录,使用git init创建 git仓库:

git init .

0f025dde-1866-11f1-90a1-92fbcf53809c.png

使用 git submodule加两个子模块,也就是 g32r501_sdk和 threadx的目录:

git submodule add https://gitee.com/quincyzh/hal_geehy_g32r501.git g32r501_sdk

git submodule add https://github.com/eclipse-threadx/threadx.git threadx

0f5bfad8-1866-11f1-90a1-92fbcf53809c.png

再手动创建 keil-mdk,ports,src三个目录。

移植详解

G32G501 的内核是 Cortex-M52,ThreadX目前没有相关移植。我们以 Cortex-M55 为基础修改,需要注意的是:

G32G501不具备Cortex-M55 安全相关特性,需要删除相关代码。

完成VOID _tx_initialize_low_level(VOID)这个函数及相关内容。

第一步

复制 threadxportscortex_m55ac6目录下的 inc 和 src目录到 portsg32r501下。删除 tx_initialize_low_level.S这个文件,创建 tx_initialize_low_level.c 代码为可以参考 tx_initialize_low_level.S这个文件:

可用 RAM空间首地址赋予 _tx_initialize_unused_memory这个指针。

赋值 _tx_thread_system_stack_ptr为Stack指针。

ThreadX使用 SysTick作为系统滴答时钟,OS外其他程序也会使用 SysTick时钟,这里就不配置 SysTick稍后我们在 main.c 文件处理 SysTick。

配置 PendSV_IRQn、SVC等几个必须的中断优先级。

具体内容参考下图内容:

0fbea534-1866-11f1-90a1-92fbcf53809c.png

第二步

修改 tx_thread_secure_stack.c文件。

需要删除其中的 __attribute__((cmse_nonsecure_entry)) ,共有5行,全部删除。不删除的话也没关系,编译期间会有告警。

第三步

完成 SysTick设置。

在 main.c 文件中,ThreadX初始化前完成 SysTick设置,就按1ms为周期:

101a9cf4-1866-11f1-90a1-92fbcf53809c.png

SysTick_Handler这个 ISR中需要调用 _tx_timer_interrupt() 就可以完成 ThreadX滴答~,需要注意的是如果使能 TX_ENABLE_EXECUTION_CHANGE_NOTIFY和 TX_EXECUTION_PROFILE_ENABLE两个特性,还需要在 _tx_timer_interrupt()之前和之后调用_tx_execution_isr_enter()和 _tx_execution_isr_exit()。

10754f96-1866-11f1-90a1-92fbcf53809c.png

main函数可以这样写:

10cc7a82-1866-11f1-90a1-92fbcf53809c.png

App示例

App部分,我们先来点个灯~

1127042a-1866-11f1-90a1-92fbcf53809c.png

CMake配置

两个关键部分:一是ThreadX library,二g32r501_sdk。

ThreadX library部分,把 threadx/common 下的全部源文件,port/g32r501 下的全部源文件都加入工程参与编译就可以。

g32r501_sdk 部分,直接使用 add_subdirectory把 sdk加入工程就ok。这一部分是在 https://gitee.com/quincyzh/hal_geehy_g32r501.git这个仓库完成,具体可以参考这个仓库的内容。

CMakeLists.txt关键内容:

11854404-1866-11f1-90a1-92fbcf53809c.png

VSCode配置

为了更便捷地使用 vscode,可以添加一些配置:

创建/修改文件 .vscodesettings.json:

11e2d2d6-1866-11f1-90a1-92fbcf53809c.png

"cmake.configureEnvironment"这里构建是必须的环境变量ARMCLANG_PATH这个是 g32r501_sdk仓库必须的内容。

"cmake.configureArgs是CMake配置工程时的参数,这里指定了一个 .cmake文件,也就是 g32r501_sdk/cmake/g32r501.cmake。文件说明了使用 armclang编译套件。

最后的 "cmake.generator"指定使用Ninja为构建工具。

03、编译&调试

编译

准备工作完成了,编译就是一键完成:F7。等待编译完成。

调试

VSCode中配合 armclang调试确实不方便,我们还是回到 keil中进行调试工作。

仓库 keil-mdk 文件夹下,有一个 keil工程,直接打开就可以开始调试。但需要在调试前手动下载程序。

因为工程里没有任何文件,点击编译等按钮都不会触发任何操作~

如果调试中发现程序不能执行,停止时PC在 0x10000000 代码段的情况。那是因为 G32R501 DCS 没有正确解锁。请在keil工程配置中设置 InitiaizationFile 这个文件已经在仓库里,示意图:

1243d1ee-1866-11f1-90a1-92fbcf53809c.png

04、打完收工

工程师们的时机都很宝贵,时间应该聚焦在app的编写。所以我贴心的把整个移植工程上传到 gitee 。大家可以自行取用,顺手点个 star也是欢迎的~

https://gitee.com/quincyzh/g32r501_threadx

祝工程师朋友们编码快乐,无 Bug ~~~

注:文章作者在原帖中提供了代码文件,有需要请至原文21ic论坛

原文地址:https://bbs.21ic.com/forum.php?mod=viewthread&tid=3460432&_dsign=de9bc2fa

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

    关注

    147

    文章

    19232

    浏览量

    405178
  • threadx
    +关注

    关注

    0

    文章

    19

    浏览量

    14503
  • 移植
    +关注

    关注

    1

    文章

    417

    浏览量

    29576
  • 极海半导体
    +关注

    关注

    0

    文章

    228

    浏览量

    4825

原文标题:极海芯得 EP.74 | 使用CMake+VSCode环境移植ThreadX到G32R501

文章出处:【微信号:geehysemi,微信公众号:Geehy极海半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用vscodecmake工具开发G32R501 MCU

    目前官方提供的 IDE 开发环境有 Keil/IAR/Eclipse。都能很好的完成开发,但是 VS Code 配合 CMake 工具是更加“现代”的C/C++开发
    的头像 发表于 11-25 14:45 3443次阅读
    使用<b class='flag-5'>vscode</b>和<b class='flag-5'>cmake</b>工具开发<b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b> <b class='flag-5'>MCU</b>

    G32R501数据手册# 内置FPU,支持 Arm Helium,实时控制 MCU

    G32R501实时控制MCU : 基本信息 : G32R5系列实时控制MCU搭载Arm v8
    的头像 发表于 02-19 13:58 3670次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b>数据手册# 内置FPU,支持 Arm Helium,实时控制 <b class='flag-5'>MCU</b>

    Cortex-M52内核MCU G32R501在CoreMark的表现如何

    要真正衡量一颗MCU的运算实力,CoreMark成绩往往是一个比较客观、公认的参考指标。到底这个G32R501跑起CoreMark来能交出怎样的成绩单?今天就让我们一起“探秘”一番,看这款Cortex-M52 MCU在CoreM
    的头像 发表于 03-09 14:09 4124次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b>Cortex-M52内核<b class='flag-5'>MCU</b> <b class='flag-5'>G32R501</b>在CoreMark的表现如何

    G32R501实时控制 MCU 跨域新境界丨面向新一代高效能高实时控制设备

    首款基于Arm® Cortex®-M52双核架构的实时控制MCU——G32R501渠道
    发表于 01-07 18:06 1683次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b>实时控制 <b class='flag-5'>MCU</b> 跨域新境界丨面向新一代高效能高实时控制设备

    实时自控 精准调速 | G32R501 2.2kW高性能矢量变频器参考方案

    和稳定性,同时降低能耗和排放。这些特性使其更符合国际节能减排目标要求。 2.2kW高性能 矢量变频器参考方案介绍 G32R501 2
    发表于 03-10 18:18 1409次阅读
    实时自控 精准调速 | <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b> 2.2kW高性能矢量变频器参考方案

    如何在Keil MDK环境移植ThreadX操作系统?

    去年在threadx刚开源的时候移植体验了一波,并分享了移植文章,最近发现这一年threadx在不断的更新,目前更新至v6.1.6版本,所以更新最新版本的
    的头像 发表于 06-16 16:53 4104次阅读

    于electronica 2024展示G32R5高性能实时控制MCU

    近日,在2024德国慕尼黑国际电子元器件博览会(electronica 2024)上大放异彩,展示了其最新的G32R5高性能实时控制MCU。 在此次博览会上,
    的头像 发表于 12-16 13:42 1602次阅读

    高效双控 精准卓越 | G32R501低压无感双电机参考方案

    降低成本、提高系统可靠性以及简化电机结构方面具有显著优势。 随着无传感器电机控制技术的逐步成熟,其在工业自动化、旋翼飞行器、空调外机等领域迎来广阔的市场应用前景。紧跟行业技术发展趋势,推出G32R501低压无感双
    发表于 01-16 16:12 848次阅读
    高效双控 精准卓越 | <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b>低压无感双电机参考方案

    高效转换 实时调控 | 基于G32R501的800W双路MPPT微型逆变器参考方案

    ,更是推动绿色能源普及的重要技术载体。 推出G32R501 800W双路MPPT微型逆变器参考方案,旨在以更高效、更智能的量产级技术方案,助力全球能源转型。该方案通过G32R501
    发表于 02-26 11:07 780次阅读
    高效转换 实时调控 | 基于<b class='flag-5'>G32R501</b>的800W双路MPPT微型逆变器参考方案

    半导体荣登2025中国IC设计Fabless100排行榜之TOP10微控制器公司

    近日,在“中国IC设计成就奖”颁奖典礼中,微上榜中国微控制器公司Top 10,G32R501实时控制MCU斩获“2025年度MCU”奖,
    的头像 发表于 04-01 09:43 2297次阅读

    半导体全数字双向电源参考方案助力能效跃升

    半导体凭借在工业应用领域深厚的技术积累,推出了基于G32R501实时控制MCU的全数字双向电源参考方案,该方案具备高效率、高可靠、高转换率、低噪声和高性价比等特点,为企业应对关税冲
    的头像 发表于 04-12 14:15 1220次阅读

    半导体G32R501:面向具身机器人的高性能、高安全实时控制MCU/DSP

    要求。     今天,在第十五届松山湖中国IC创新高峰论坛中,珠海半导体有限公司实时控制MCU/DSP产品线高级产品经理卢鹏升带来了面向具身机器人的高性能、高安全实时控制MCU/D
    发表于 05-13 12:12 1697次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b>半导体<b class='flag-5'>G32R501</b>:面向具身机器人的高性能、高安全实时控制<b class='flag-5'>MCU</b>/DSP

    G32R501工业六轴机械臂参考方案释放工业4.0产业价值

    挥着重要作用,是现代工业自动化和智能化生产的核心工具。据Grand View Research数据分析,2024年全球工业机器人市场规模约为340亿美元,预计2025年至2030年将以9.9%的复合年增长率持续增长,展现出巨大的市场潜力。 工业六轴机械臂参考方案,采用
    发表于 06-23 13:52 2027次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b>工业六轴机械臂参考方案释放工业4.0产业价值

    特来电携手半导体推出G32R501T实时控制MCU

    联合开发的G32R501T实时控制MCU,这不仅是对AI智能充电与新能源领域核心技术的一次深度定义,更标志着高端电源主控芯片朝着自主化、智能化迈出坚实一步。
    的头像 发表于 11-04 09:21 1182次阅读

    G32R501芯片与Jlink适配的过程解析

    适配芯片至Jlink,网上已经有许许多多的博客介绍了,但今天我们的主角G32R501不太一般,要是我们按照普通的芯片适配流程,大家会发现在最终对芯片进行程序进行下载的时候无法成功,那这是为什么呢?本文给大家介绍一下G32R501芯片,在适配Jlink的正确姿势!
    的头像 发表于 02-25 13:47 763次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>G32R501</b>芯片与Jlink适配的过程解析