攀枝花市三线建设博物馆网站国内最大的app开发公司
2026/1/10 5:27:29 网站建设 项目流程
攀枝花市三线建设博物馆网站,国内最大的app开发公司,网站广告下悬浮代码怎么做,腾讯云域名如何建设网站概述我本人是 cmakevscode 组合的忠实用户#xff0c;之前写了一篇文章介绍了在 cmakevscode 环境下开发 G32R501 的一些实践经验。这篇文章准备更进一步#xff1a;移植一个ThreadX。关于 G32R501G32R501是极海微最新发布的实施控制 MCU#xff0c;搭载Arm v8.1-M架构的Arm…概述我本人是 cmakevscode 组合的忠实用户之前写了一篇文章介绍了在 cmakevscode 环境下开发 G32R501 的一些实践经验。这篇文章准备更进一步移植一个ThreadX。关于 G32R501G32R501是极海微最新发布的实施控制 MCU搭载Arm v8.1-M架构的Arm® Cortex®-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 协议完全开源。工程目录组织还是之前的套路先介绍一下代码目录组织主要的文件/文件夹有.vscodeVscode 配置文件build构建目录g32r501_sdkG32R501 SDK 目录keil-mdkkeil 工程文件主要用于Debug。ports移植文件srcApp 源码threadxThreadX 源码CMakeLists.txtCmake 配置文件这个目录是用git 进行源码管理powershell进行命令行操作。下面的操作会一步一步指示如何完成移植。移植步骤构建目录我的工作目录是 D:\g32r501_threadx大家在实践的时候可以自行选择目录。手动创建这个目录在 powershell里切换到这个目录使用git init创建 git仓库复制gitinit .使用 git submodule加两个子模块也就是 g32r501_sdk和 threadx的目录复制pgit submodule add https://gitee.com/quincyzh/hal_geehy_g32r501.git g32r501_sdk/ppgit submodule add https://github.com/eclipse-threadx/threadx.git threadx/p再手动创建 keil-mdkportssrc三个目录。移植详解G32G501 的内核是 Cortex-M52ThreadX目前没有相关移植。我们以 Cortex-M55 为基础修改需要注意的是G32G501不具备Cortex-M55 安全相关特性需要删除相关代码。完成VOID _tx_initialize_low_level(VOID)这个函数及相关内容。第一步复制 threadx\ports\cortex_m55\ac6目录下的 inc 和 src目录到 ports\g32r501下。删除 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等几个必须的中断优先级。具体内容参考下图内容第二步修改 tx_thread_secure_stack.c文件。需要删除其中的 __attribute__((cmse_nonsecure_entry)) 共有5行全部删除。不删除的话也没关系编译期间会有告警。第三步完成 SysTick设置。在 main.c 文件中ThreadX初始化前完成 SysTick设置就按1ms为周期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()。main函数可以这样写App示例App部分我们先来点个灯~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关键内容Vscode配置为了更便捷地使用 vscode可以添加一些配置创建/修改文件 .vscode\settings.jsoncmake.configureEnvironment这里构建是必须的环境变量ARMCLANG_PATH这个是 g32r501_sdk仓库必须的内容。cmake.configureArgs是Cmake配置工程时的参数这里指定了一个 .cmake文件也就是 g32r501_sdk/cmake/g32r501.cmake。文件说明了使用 armclang编译套件。最后的 cmake.generator指定使用Ninja为构建工具。编译调试编译准备工作完成了编译就是一键完成F7。等待编译完成。调试Vscode中配合 armclang调试确实不方便我们还是回到 keil中进行调试工作。仓库 keil-mdk 文件夹下有一个 keil工程直接打开就可以开始调试。但需要在调试前手动下载程序。因为工程里没有任何文件点击编译等按钮都不会触发任何操作~如果调试中发现程序不能执行停止时PC在 0x10000000 代码段的情况。那是因为 G32R501 DCS 没有正确解锁。请在keil工程配置中设置 InitiaizationFile 这个文件已经在仓库里示意图打完收工工程师们的时机都很宝贵时间应该聚焦在 app的编写。所以我贴心的把整个移植工程上传到 gitee 。大家可以自行取用顺手点个 star也是欢迎的~https://gitee.com/quincyzh/g32r501_threadx祝工程师朋友们编码快乐无 Bug ~~~。---------------------作者wangqy_ic链接https://bbs.21ic.com/forum.php?modviewthreadtid3460432来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询