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

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

3天内不再提示

让 RT-Thread 用上 HyperRAM——e2studio 工程配置详解 | 技术集结

RT-Thread官方账号 2026-04-27 18:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Titan-RA8P1板载32MB的HyperRAM用于扩展内存空间。

https://club.rt-thread.org/ask/article/d1cedfd3e9ece158.html

上面的帖子中介绍如何在e2sutido中结合RT-Thread的代码仓库(使用的是最新的RT-Thread版本),在e2stduio中调试和下载RT-Thread工程。配置的过程繁琐,如何进行工程复用?可以利用e2studio的工程导出功能导出e2studio工程。再利用e2studio中的”重命名并导入工程”的功能实现工程的复用。

如果需要切换FSP版本或者RT-Thread版本,则需要重新制作一个e2studio工程模板。本文介绍使用RT-Thread V5.1版本的代码和FSP6.2.0创建e2studio工程模板,并使用e2studio的重命名导入功能,实现工程复用。

目录

RT-Thread代码添加


创建e2studio工程


添加HyperRAM


好物直达

1 RT-Thread代码添加

RT-Thread Studio安装RT-Thread v5.1,并从安装路径中使用RT-Thread代码;

d4fab5fc-4220-11f1-ab55-92fbcf53809c.jpg

或者RT-Thread Github获取v5.1的代码。

https://github.com/RT-Thread/rt-thread/releases/tag/v5.1.0

这里将RT-Thread v5.1的源码复制到rt-thread_5_1文件夹中,并和e2studio工程保持简单的相对路径。

2 创建e2studio工程

实现串口控制台和GPIO功能,实现RT-Thread功能中最小的部分作为工程模板。

2.1 FSP工程建设

在工程界面选择FSP6.2.0和Titan-Board对应的MCU芯片型号,工程的编译器选择GCC。

d50eb62e-4220-11f1-ab55-92fbcf53809c.jpg

RTOS界面选择”NO RTOS”,其余选项选择默认即可。

d5229432-4220-11f1-ab55-92fbcf53809c.jpg

根据原理图,串口的引脚如下:

d5352782-4220-11f1-ab55-92fbcf53809c.jpg

在clock界面中使能SCI 外设的时钟

d540c916-4220-11f1-ab55-92fbcf53809c.jpg

在FSP Configurator中的Stacks界面中添加串口模块。

d54e4406-4220-11f1-ab55-92fbcf53809c.jpg

同时设置串口模块的参数如下:

d55dae6e-4220-11f1-ab55-92fbcf53809c.jpg

保存并生成代码。

2.2 添加RT-Thread BSP工程中的文件

官方代码仓库中对Titan RA8P1开发板进行适配,复制其中的部分文件到工程文件夹,用于RT-Thread代码的配置、Scons输出CMake信息、开发板外设和软件组件适配等;

d5a3cf52-4220-11f1-ab55-92fbcf53809c.jpg

通过链接文件夹的方式添加RT-Thread源码到工程中

d5e9e94c-4220-11f1-ab55-92fbcf53809c.jpg

由于工程和RT-Thread的相对路径发生变更,需要修改顶层KConfig文件中变量。

mainmenu"RT-Thread Configuration"config BSP_DIR string option env="BSP_ROOT" default"."config RTT_DIR string option env="RTT_ROOT" default"../../rt-thread_5_1"# you can change the RTT_ROOT default"../.."to your rtthread_root,# example : default"F:/git_repositories/rt-thread"config PKGS_DIR string option env="PKGS_ROOT" default"packages"config ENV_DIR string option env="ENV_ROOT" default"/"source"$RTT_DIR/Kconfig"source"$PKGS_DIR/Kconfig"source"libraries/Kconfig"source"$BSP_DIR/board/Kconfig"

复制librarys/HAL_Drivers中的部分文件到工程目录中并保持目录结构,用于支持开发板的外设。

d5fd61f2-4220-11f1-ab55-92fbcf53809c.jpg

工程为保持精简,board文件夹中的内容删除多余的文件,保留图中的文件。删除的文件可以后续根据功能添加。

d60c8f60-4220-11f1-ab55-92fbcf53809c.jpg

其中的KConfig文件修改为以下内容

mainmenu"RT-Thread Configuration"config BSP_DIR string option env="BSP_ROOT" default"."config RTT_DIR string option env="RTT_ROOT" default"../../rt-thread_5_1"# you can change the RTT_ROOT default"../.."to your rtthread_root,# example : default"F:/git_repositories/rt-thread"config PKGS_DIR string option env="PKGS_ROOT" default"packages"config ENV_DIR string option env="ENV_ROOT" default"/"source"$RTT_DIR/Kconfig"source"$PKGS_DIR/Kconfig"source"libraries/Kconfig"source"$BSP_DIR/board/Kconfig"

RT-Tread Studio工程中的SConstruct脚本中的RT-Thread源码路径需要根据文件路径修改,用于后续使用scons --target=cmake指令获取编译的头文件包含路径和源文件索引信息。

ifos.path.exists('rt-thread'): RTT_ROOT = os.path.normpath(os.getcwd() +'/rt-thread')else: RTT_ROOT = os.path.normpath(os.getcwd() +'../../../rt-thread_5_1')

在工程文件夹中打开RT-Thread提供的env控制台,输入menuconfig指令进入代码配置界面,确认KConfig文件可以正确解析。

官方示例程序提供串口和GPIO控制,无需修改,直接使用即可。如果使用官方的BSP模板进行适配,可以参考之前的帖子进行移植。

https://club.rt-thread.org/ask/article/d1cedfd3e9ece158.html

2.3 e2studio工程调整

首先需要修改工程编译器的参数,修改FPU Type为fpv5-sp-d16,Other target flags的参数设置为-march=armv8.1 -m.main+mve.fp+fp.dp

d6189882-4220-11f1-ab55-92fbcf53809c.jpg

同时修改编译器的优化参数如下。

d62853a8-4220-11f1-ab55-92fbcf53809c.jpg

在工程属性的Path and Symbols中,设置工程的包含路径和源代码管理。首先在env控制台中运行scons --target=cmake获取CMakeList.txt文件,获取RT-Thread工程的编译信息,据此添加路径到Path and Symbols中。在Includes添加头文件路径,包括Assembly和GNU C两部分如下。

d63aee6e-4220-11f1-ab55-92fbcf53809c.jpgd64570f0-4220-11f1-ab55-92fbcf53809c.jpg

在Symbols选项卡中添加以下宏定义

d6580fe4-4220-11f1-ab55-92fbcf53809c.jpg

在Source Location中添加.c源代码路径。结合CMakeList.txt文件中的Source文件管理,设置不同路径的Filter选项,将不需要的文件排除到工程的构建外。

d6641f1e-4220-11f1-ab55-92fbcf53809c.jpg

e2studio工程的src文件夹中的hal_warmstart.c中的代码和RT-Thread提供的适配代码冲突,在源码控制中将其排除出构建即可。

修改ra\fsp\src\bsp\cmsis\Device\RENESAS\Source\startup.c中的Reset_Handler函数如下

voidReset_Handler(void){ /* Initialize system using BSP. */ SystemInit(); /* Call user application. */#ifdefined(__GNUC__) externintentry(void); entry();#elifdefined(__ICCARM__) externvoid__low_level_init(void); __low_level_init();#else /* Jump to main. */ main();#endif while(1) { /* Infinite Loop. */ }}

在hal_entry.c添加以下代码用于验证RT-Thread成功运行。

#include#include"hal_data.h"voidhal_entry(void){ rt_kprintf("\nHello RT-Thread!\n"); rt_kprintf("==================================================\n"); rt_kprintf("This example project is RTThread Template Test!\n"); rt_kprintf("==================================================\n"); while(1) { rt_thread_mdelay(500); }}

e2studio工程生成srcipt文件夹中的fsp.ld链接文件通过引用文件的形式链接Debug文件夹中的fsp_gen.ld和memory_regions.ld。复制两个文件中的内容到fsp.ld中。

文件中定位到MCU Vector Table位置,添加以下内容

/* MCU vector table */ __flash_vectors Base = .; _VECTORS = .; KEEP(*(.fixed_vectors)) KEEP(*(.application_vectors)) __flash_vectors$$Limit = .; /* section information for finsh shell */ . = ALIGN(4); __fsymtab_start = .; KEEP(*(FSymTab)) __fsymtab_end = .; . = ALIGN(4); __vsymtab_start = .; KEEP(*(VSymTab)) __vsymtab_end = .; /* section information for initial. */ . = ALIGN(4); __rt_init_start = .; KEEP(*(SORT(.rti_fn*))) __rt_init_end = .; . = ALIGN(4); KEEP(*(FalPartTable)) }> FLASH

另外定位到SDRAM区域具体可以参考工程中代码查看,添加以下内容

.ram.flat_nsc : { __sau_ddsc_RAM_NSC = .; }> RAM /* This symbol represents the end of user allocated RAM. The RAM after this symbol can be used at run time for things such as ThreadX memory pool allocations. */ __RAM_segment_used_end__ = ALIGN(__sau_ddsc_RAM_NSC ,4);


由于Titan-RA8P1使用的调试器是DAP固件,可以参考以下帖子在e2studio中使用PyOCD下载和调试程序。

https://club.rt-thread.org/ask/article/ee532d8d659ae45b.html

编译并下载后,通过串口获得如下输出,验证移植成功。

d683ec4a-4220-11f1-ab55-92fbcf53809c.jpg

2.4 工程导出以及重命名导入

利用e2studio的工程导出功能将移植成功的RT-Thread工程导出作为模板工程,进行复用。

d6923a52-4220-11f1-ab55-92fbcf53809c.jpg

导出工程时,勾选ra、ra_gen、ra_cfg中的SConscript文件的作用是在导出的工程中保留这些文件夹,避免FSP代码生成工具生成代码时覆盖掉startup.c、fsp.ld等文件的改动。

导入工程时,选择重命名并导入工程的选项。

d6a6b0e0-4220-11f1-ab55-92fbcf53809c.jpg

选择之前导出的工程压缩文件、重命名并导入即可利用模板工程进行开发。

d6b2d7d0-4220-11f1-ab55-92fbcf53809c.jpg

3 添加HyperRAM

板载32MB的HyperRAM,MCU通过OSPI与其通讯。导入之前的模板工程。

3.1 FSP添加配置

在FSP Configurator中修改设置,BSP选项卡中使能D-Cache,提高内存数据传输速率。

d6c0c318-4220-11f1-ab55-92fbcf53809c.jpg

clocks界面中使能OCTACLK时钟。

d6cc44e0-4220-11f1-ab55-92fbcf53809c.jpg

在Stacks选项卡中添加OSPI模块。

d7099534-4220-11f1-ab55-92fbcf53809c.jpg

修改OSPI模块的参数如下。

d74a6cee-4220-11f1-ab55-92fbcf53809c.jpgd75a0ae6-4220-11f1-ab55-92fbcf53809c.jpgd76fbf62-4220-11f1-ab55-92fbcf53809c.jpg

Pins选项卡中设置OSPI外设的引脚,并修改其中数据引脚的驱动能力和上下拉设置。

d77dd7c8-4220-11f1-ab55-92fbcf53809c.jpg

保存并生成代码

3.2 添加HyperRAM驱动代码

复制官方适配的HyperRAM驱动代码到board\ports目录中。

d78b62b2-4220-11f1-ab55-92fbcf53809c.jpg

在board\Kconfig文件中添加HyperRAM配置项

menu"On-chip Peripheral Drivers" rsource"../libraries/HAL_Drivers/drivers/Kconfig" config BSP_USING_OSPI_RAM bool"Enable ospi HyperRAM" defaultn endmenu


env工具中进入menuconfig界面,确认其中使能HyperRAM,并保存配置。

d798d29e-4220-11f1-ab55-92fbcf53809c.jpg

使用scons --target=cmake更新编译信息,根据其中的内容,修改工程的Path and Symbols,添加HyperRAM相关的头文件路径。

d7a41dc0-4220-11f1-ab55-92fbcf53809c.jpg

由于Source Location中添加board文件夹作为源代码索引,会自动包含Hyperram的代码,需要修改配置。

保存并编译,烧录工程到开发板运行。在串口控制台中输入help查看可用的指令。

d7ad6b28-4220-11f1-ab55-92fbcf53809c.jpg

运行hyper_ram_test进行RAM读写测试,测试输出结果如下

d7bdb7e4-4220-11f1-ab55-92fbcf53809c.jpg

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

    关注

    30

    文章

    4977

    浏览量

    74388
  • RT-Thread
    +关注

    关注

    32

    文章

    1641

    浏览量

    45215
  • HyperRAM
    +关注

    关注

    0

    文章

    6

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RT-Thread记录(二、RT-Thread内核启动流程)

    在前面我们RT-Thread Studio工程基础之上讲一讲RT-Thread内核启动流程.
    的头像 发表于 06-20 00:30 7296次阅读
    <b class='flag-5'>RT-Thread</b>记录(二、<b class='flag-5'>RT-Thread</b>内核启动流程)

    RT-Thread Studio配置rtthread CANFD驱动来控制M3508电机

    本文旨在RT-Thread Studio配置rtthread CANFD驱动来控制M3508电机,不涉及任何原理 开发环境:RT-Thread
    发表于 10-08 11:44 2246次阅读
    在<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b>上<b class='flag-5'>配置</b>rtthread CANFD驱动来控制M3508电机

    如何使用rt-thread studio中,使用 定制化的SDK建立工程

    --target=eclipse生成 rt-thread studio 工程rt-thread studio中,使用sdk Manag
    发表于 09-26 06:16

    RT-Thread Studio工程里添加文件到工程

    常见问题如何添加文件到工程可以直接通过复制粘贴往RT-Thread Studio工程里添加文件,甚至可以直接可以往工程里复制粘贴整个文件夹,
    发表于 03-29 06:44

    RT-Thread Studio 安装教程

    RT-Thread 源码版本,选择对应的 BSP,然后点击完成按钮,如下图所示:点击完成后,等待工程创建过程如下图所示:工程创建成功后项目资源管理器窗口会出现刚创建的工程test,如
    发表于 08-10 14:12

    RT-Thread Studio 主要亮点功能

    RT-Thread Studio V1.1.0 快速上手体验 RT-Thread Studio 主要包括工程创建和管理,代码编辑,SDK管理
    的头像 发表于 06-19 11:45 7175次阅读

    基于RT-Thread的智慧路灯案例实验分享

    这里我用的是RT-Thread Studio V1.1.0,这里的I2C的范例配置有点问题,其它版本的RT-Thread
    的头像 发表于 07-01 14:43 4855次阅读
    基于<b class='flag-5'>RT-Thread</b>的智慧路灯案例实验分享

    RT-Thread Studio快速配置GPIO进行点灯

    本章通过RT-Thread Studio配置AB32VG1片上外设GPIO的引脚,控制RGB彩灯进行简单的颜色变换
    发表于 12-14 18:44 10次下载
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b>快速<b class='flag-5'>配置</b>GPIO进行点灯

    RT-Thread STM32 配置系统时钟(使用外部晶振)

    RT-Thread STM32 配置系统时钟开发环境芯片:STM32F103RCT6RT-Thread Studio: V1.0.6(现在已经更新到1.1.3,由于本人使用RTT开发已
    发表于 12-14 18:45 15次下载
    <b class='flag-5'>RT-Thread</b> STM32 <b class='flag-5'>配置</b>系统时钟(使用外部晶振)

    RT-Thread Studio配置连接WIFI模块

    通过 RT-Thread Studio 配置 AB32VG1 片上外设 UART1 ,搭载 at_device 软件包连接WIFI模块
    发表于 12-20 19:11 17次下载
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b><b class='flag-5'>配置</b>连接WIFI模块

    RT-Thread Studio驱动SD卡

    RT-Thread Studio驱动SD卡前言一、创建基本工程1、创建Bootloader2、创建项目工程二、
    发表于 12-27 19:13 20次下载
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b>驱动SD卡

    基于RT-Thread Studio学习

    前期准备:从官网下载 RT-Thread Studio,弄个账号登陆,开启rt-thread学习之旅。
    的头像 发表于 05-15 11:00 6636次阅读
    基于<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b>学习

    使用RT-Thread Studio进行智能家居终端的设计

    本次方案基于星火一号开发板开发,使用RT-Thread Studio进行工程创建,代码编辑,RT-Thread配置,调试
    的头像 发表于 07-28 16:41 3172次阅读
    使用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b>进行智能家居终端的设计

    试用RT-Thread Studio(VSCode)

    想尝试RT-Thread studio (VSCode),先下载安装VSCode,再搜索RT-Thread
    的头像 发表于 10-12 10:58 2218次阅读
    试用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Studio</b>(VSCode)

    RT-Thread新开发工具支持:e2studio手把手适配教程 | 技术集结

    实现RT-Thread工程的管理和调试。目录硬件外设创建e2studio工程配置基本外设添加BSP模板并修改1硬件外设使用
    的头像 发表于 04-02 18:06 3560次阅读
    <b class='flag-5'>RT-Thread</b>新开发工具支持:<b class='flag-5'>e2studio</b>手把手适配教程 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>