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

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

3天内不再提示

DshanMCU-R128s2启动与资源划分

嵌入式Linux那些事 来源:嵌入式Linux那些事 作者:嵌入式Linux那些事 2023-12-22 17:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下面简单介绍一下 R128 方案的资源划分与启动流程。

资源划分

CPU 资源划分

这只是默认配置方案,CPU 资源划分可以按照需求任意修改

CPU功能说明
M33控制核。运行 WI-FI/BT 固件、协议栈、驱动、休眠唤醒、安全启动、安全控制
C906应用核。运行大部分驱动与主要应用,控制台
HIFI5算法核。运行音频相关驱动与算法

内存配置

R128 方案目前三个核 OS 运行的地址范围如下表。

这只是默认配置方案,CPU 资源划分可以按照需求任意修改。

CPU内存使用地址
M33lspsram,运行地址范围 0x8000000 - 0x8300000
C906lspsram,运行地址范围 0x8300000 - 0x8800000
HIFI5hspsram,运行地址范围 0xC000660 - 0xC0A0660

启动流程

R128 方案非安全启动流程如下,其中 M33 为启动核:

这只是默认配置方案,启动流程可以按照需求任意修改。

  1. BROM
    1. 加载 M33 BOOT0 至 SRAM
    2. 跳转 M33 BOOT0 运行
  2. M33 BOOT0
    1. 初始化 LSPSRAM 与 HSPSRAM
    2. 加载 M33 RTOS 至 LSPSRAM
    3. 加载 C906 RTOS 至 LSPSRAM
    4. 加载 HIFI5 RTOS 至 HSPSRAM
    5. 跳转运行 M33 RTOS
  3. M33 RTOS
    1. 启动运行 C906 RTOS
    2. 启动运行 HIFI5 RTOS
  4. C906 RTOS
    1. 启动运行用户程序
sequenceDiagram
    BROM-- >>SRAM: load M33 Core BOOT0 to SRAM
    BROM-- >>BOOT0: Boot BOOT0 on M33
    BOOT0-- >>LSPSRAM: init LSPSRAM
    BOOT0-- >>HSPSRAM: init HSPSRAM
    BOOT0-- >>LSPSRAM: load M33 RTOS to LSPSRAM
    BOOT0-- >>LSPSRAM: load C906 RTOS to LSPSRAM
    BOOT0-- >>HSPSRAM: load HIFI5 RTOS to HSPSRAM
    BOOT0-- >>M33: BOOT0 Boot M33 RTOS
    M33-- >>C906: Boot C906 RTOS
    C906-- >>LSPSRAM: C906 RTOS Running on LSPSRAM
    M33-- >>HIFI5: Boot HIFI5 RTOS
    HIFI5-- >>HSPSRAM: HIFI5 RTOS Running on HSPSRAM
    C906-- >>HSPSRAM: APP Running on HSPSRAM

修改运行核心

系统有三个不同的核心,分别是 M33,C906,HIFI5,其中M33是启动核心不可以关闭,另外两个核心都可以关闭。当不需要使用 C906 核心或者 HIFI5 DSP 核心的时候,可以将这两个核心关闭。方法如下:

关闭 HIFI5 核心

首先,选择好 M33 的方案,因为 HIFI5 是由 M33 来启动的。

source envsetup.sh
lunch_rtos r128s2_m33

直接取消勾选即可:

image1

关闭 C906 核心

首先,选择好 M33 的方案,因为 C906 是由 M33 来启动的。

source envsetup.sh
lunch_rtos r128s2_m33

直接取消勾选即可:

image1

修改核心运行内存空间

修改到 HSPSRAM 运行

R128 的 M33 和 C906 两个核运行的系统都是默认运行在 LSPSRAM,这里示例如何修改到 HSPSRAM

  1. 关闭启动 HIFI5 核心

首先,选择好 M33 的方案,因为 HIFI5 是由 M33 来启动的。

source envsetup.sh
lunch_rtos r128s2_m33

由于默认 HIFI5 是运行在 HSPSRAM 的,这里需要释放 HSPSRAM。运行 mrtos_menuconfig 启动配置。

直接取消勾选即可。

image1

  1. 将 M33 和 C906 设置成在 HSPSRAM 运行

首先选择 M33 的方案:

source envsetup.sh
lunch_rtos r128s2_m33

接着运行 mrtos_menuconfig 修改启动地址,所需要修改的配置如下图所示:

image2

lspsram 地址空间为 0x8000000-0x87fffff,hspsram 地址空间为 0xc000000-0xc7fffff。

这里将所需要的修改的核的地址,将8改成c即可。如修改 M33 的起始地址,将 0x08004000,修改成0x0c004000 即可,如下图。

image3

然后保存配置,重新编译 M33 方案。接下来修改 C906 的地址,选择 C906 的方案

source envsetup.sh
lunch_rtos r128s2_c906

接着运行 mrtos_menuconfig 修改启动地址,所需要修改的配置如下图所示:

image4

然后保存配置,重新编译 C906 方案。

  1. 修改配置文件

首先,确认自己方案使用的 image_header 文件,运行一次打包的命令 pack,从打包的 log 中能看出方案所选的文件,如下图:

image4-1

如果需要修改 M33 的地址,则只修改 M33 的即可,C906同理。如果取消启动 DSP,则直接注销掉 DSP的配置代码。

最后,修改 M33 和 C906 在 HSPSRAM 运行,并且取消运行 HIFI5 的 image_header 文件修改可如下所示:

diff --git a/r128s2/pro/configs/image_header_xip.cfg b/r128s2/pro/configs/image_header_xip.cfg
index 5c83ac1..fc87d06 100755
--- a/r128s2/pro/configs/image_header_xip.cfg
+++ b/r128s2/pro/configs/image_header_xip.cfg
@@ -30,9 +30,9 @@
         {"id": "0xa5e05a00", "bin": "boot0_spinor.fex", "attr": "0x01", "sram_offs": "0x40b0000", "ep": "0x40b0080"},
         {"id": "0xa5e05a00", "bin": "boot0_sdcard.fex", "attr": "0x01", "sram_offs": "0x40b0000", "ep": "0x40b0080"},
         {"id": "0xa5e15a01", "bin": "freertos-gz.fex", "attr": "0x01"},
-        {"id": "0xa5e05a01", "bin": "rtos_arm.fex", "attr": "0x01", "sram_offs": "0x8004000", "ep": "0x8004000"},
-        {"id": "0xa5e05a01", "bin": "rtos_riscv.fex", "attr": "0x01", "sram_offs": "0x8200000", "ep": "0x8200000"},
-           {"id": "0xa5e05a01", "bin": "rtos_dsp.fex", "attr": "0x01", "sram_offs": "0xc000000", "ep": "0xc000660"},
+        {"id": "0xa5e05a01", "bin": "rtos_arm.fex", "attr": "0x01", "sram_offs": "0xc004000", "ep": "0xc004000"},
+        {"id": "0xa5e05a01", "bin": "rtos_riscv.fex", "attr": "0x01", "sram_offs": "0xc200000", "ep": "0xc200000"},
+       //    {"id": "0xa5e05a01", "bin": "rtos_dsp.fex", "attr": "0x01", "sram_offs": "0xc000000", "ep": "0xc000660"},
         {"id": "0xa5e05a01", "bin": "etf.fex", "attr": "0x01", "sram_offs": "0x4000000", "ep": "0x4000000"},
         {"id": "0xa5e05a01", "bin": "rtos_xip_rv.fex", "attr": "0x02"},
         {}

查看代码内存分布

可以在 SDK 中运行 kamp 命令查看代码的内存分布

image

可以在最后查看内存的总使用情况

image

配置XIP

R128-S2 内置 NOR FLASH,可以将运行效率要求不高的代码保存在 XIP 段中,减少内存的占用。

配置 XIP 需要把对应的函数和库文件加入 xip.lds.S 中,具体语法请参照 ld 语法。

image

image

配置多个堆内存

有些时候当不需要使用 DSP 核心或者 DSP 核心内存使用量较少时,可以配置多个堆内存,将一部分内存放置于不同的 RAM 上使用。这里以 R128-S2 关闭 DSP 核心并将 HSPSRAM 分配给 C906 核心使用为例:

配置前内存分布情况

配置前进入 C906 核心运行 free 命令查看当前内存使用分布情况。

image

关闭 DSP 核心

首先,选择好 M33 的方案,因为 DSP 是由 M33 来启动的。

source envsetup.sh
lunch_rtos r128s2_m33

由于默认 DSP 是运行在 HSPSRAM 的,这里需要释放 HSPSRAM。运行 mrtos_menuconfig 启动配置。

直接取消勾选即可。

image

修改后请重新编译 M33 核心的固件。

image

将 HPSRAM 全部分配给 C906 使用

选择好 C906 的方案,运行配置界面

source envsetup.sh
lunch_rtos r128s2_c906
image-20231017135824514

image

找到 Kernel Options

image

找到 Heap Memory Manager (Use heap-4 to allocate memory) --->

image

选中 Use heap-multiple to allocate memory

image

配置 Default Heap Ram 为 heap in lpsram 配置默认内存堆为 lpsram

image

勾选 lpsram heap 和 lpsram heap dynamic address,意思是 lpsram 的内存是动态分布的

image

配置 lpsram heap size 的大小是0x600000,因为前面 2M 给 M33 使用,所以剩下 6M

image

配置 hpsram heap 使能 HPSRAM,并配置 hpsram heap start address 为 0xc000000,hpsram heap size 为 0x7FFFFF 表示将 HPSRAM 全部分配给 C906 核心使用。

image

将 HPSRAM 部分分配给 C906 使用

如果 HPSRAM 需要运行 DSP,可以分配部分给 C906 使用,配置 hpsram heap start address为 0xc400000,0xc000000 是 HPSRAM 的开始地址,前面 4M 已经分配给 DSP 使用;并配置 hpsram heap size 为 0x400000 意思是可以用的 HPSRAM 大小是 4M。

image

配置后的内存分布情况

编译打包烧录后,可以使用 free 命令查看配置后的内存分布情况。可以看到 HPSRAM 的8M内存全部分配给 C906 使用了,C906 一共可以用 4M LPSRAM + 8M HPSRAM = 12M RAM

image

审核编辑 黄宇

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

    关注

    147

    文章

    19258

    浏览量

    405242
  • R128
    +关注

    关注

    0

    文章

    41

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    73S8014R/RN/RT 20SO 演示板用户手册解读

    CMDVCC 和 5V/#V 控制信号生成 3V 或 5V 的 VCC,而 73S8014RT 重新定义了这些引脚,可选择 5V、3V 和 1.8V 的 VCC。73S8014R 用 CLKDIV1 和 CLKDIV2 选择
    的头像 发表于 05-22 16:20 204次阅读

    深入解析Cypress S25FL128S/S25FL256S SPI闪存:特性、应用与技术要点

    深入解析Cypress S25FL128S/S25FL256S SPI闪存:特性、应用与技术要点 在当今的电子设计领域,闪存作为一种关键的存储组件,其性能和功能对于系统的稳定性和效率起着至关重要
    的头像 发表于 04-29 17:35 1129次阅读

    深入解析MC9S12DT128微控制器:特性、应用与设计要点

    深入解析MC9S12DT128微控制器:特性、应用与设计要点 在电子工程领域,微控制器是众多电子设备的核心大脑,而MC9S12DT128微控制器以其丰富的功能和出色的性能,在众多应用场景中发
    的头像 发表于 04-09 15:05 421次阅读

    深入剖析Freescale MC9S08JE128系列MCU:高效节能的理想之选

    深入剖析Freescale MC9S08JE128系列MCU:高效节能的理想之选 在电子设计领域,选择一款合适的微控制器(MCU)对于产品的性能和成本至关重要。Freescale
    的头像 发表于 04-09 14:15 296次阅读

    深入解析MC9S08DZ128系列芯片:特性、数据手册变更及应用指南

    深入解析MC9S08DZ128系列芯片:特性、数据手册变更及应用指南 引言 在电子工程师的日常设计工作中,选择合适的芯片是项目成功的关键。MC9S08DZ128系列芯片凭借其丰富的功能和良好的性能
    的头像 发表于 04-09 13:50 329次阅读

    AD2S1200:12位R/D转换器的卓越性能与应用解析

    AD2S1200:12位R/D转换器的卓越性能与应用解析 在电子工程领域,精确的位置和速度检测至关重要。AD2S1200作为一款完整的12位分辨率跟踪旋转变压器 - 数字转换器,集成了诸多先进功能
    的头像 发表于 04-02 09:15 540次阅读

    AD2S1210:10 - 16位R/D转换器的技术剖析与应用探索

    AD2S1210:10 - 16位R/D转换器的技术剖析与应用探索 在电子工程领域,精确的角度测量和位置反馈至关重要。AD2S1210作为一款功能强大的10 - 16位跟踪旋转变压器 - 数字转换器
    的头像 发表于 04-01 15:35 265次阅读

    深入剖析Cypress S25FL128S/S25FL256S:高性能SPI闪存的卓越之选

    深入剖析Cypress S25FL128S/S25FL256S:高性能SPI闪存的卓越之选 在电子设计的领域中,闪存扮演着至关重要的角色,其性能和特性直接影响着整个系统的运行效率和稳定性。今天
    的头像 发表于 03-30 10:10 577次阅读

    AD2S1210-EP:高分辨率R/D转换器的卓越之选

    AD2S1210-EP:高分辨率R/D转换器的卓越之选 在电子工程师的日常设计工作中,选择一款性能出色的R/D(Resolver-to-Digital)转换器至关重要。今天,我们就来深入探讨一下
    的头像 发表于 03-29 16:05 832次阅读

    AD2S1200:12位R/D转换器的卓越性能与应用解析

    AD2S1200:12位R/D转换器的卓越性能与应用解析 在电子工程师的设计世界里,高精度的转换器是实现精确测量和控制的关键。AD2S1200作为一款12位分辨率的跟踪旋转变压器 - 数字转换器
    的头像 发表于 03-29 15:50 619次阅读

    深入解析MAX8873T/S/R和MAX8874T/S/R低 dropout 线性稳压器

    深入解析MAX8873T/S/R和MAX8874T/S/R低 dropout 线性稳压器 在电子设备的电源管理领域,低 dropout 线性稳压器(LDO)起着至关重要的作用。今天,我
    的头像 发表于 03-22 11:10 623次阅读

    深入剖析MC9S12DT128微控制器:特性、应用与设计要点

    深入剖析MC9S12DT128微控制器:特性、应用与设计要点 在电子工程领域,微控制器是众多项目的核心。MC9S12DT128作为一款功能强大的16位微控制器,在众多应用场景中都有着出色的表现。今天
    的头像 发表于 03-12 17:15 834次阅读

    车载控制芯片怎么选?S912XB128F2CALR对比普通MCU的优势

    汽车电子对可靠性的要求简直到了苛刻的地步。在飞驰的汽车里,一颗小小的MCU故障可能带来严重后果,所以汽车级芯片必须像磐石般可靠。今天咱们聊聊NXP的S912XB128F2CALR这款16位汽车级MCU,它和普通MCU到底有什么本质区别。
    的头像 发表于 12-31 16:29 728次阅读

    ADC128S052:高性能12位A/D转换器的深度解析

      在电子工程师的日常设计中,模拟 - 数字转换器(ADC)是连接现实世界模拟信号与数字系统的关键桥梁。今天,我们将深入探讨德州仪器(TI)的两款明星产品:ADC128S052与ADC128S
    的头像 发表于 11-30 14:53 1257次阅读
    ADC<b class='flag-5'>128S</b>052:高性能12位A/D转换器的深度解析

    STM32H7R3/S3:高性能微控制器的新标杆

    3 MCU是一款高性价比解决方案,采用带有高速外部存储器接口的启动闪存MCU,确保实时就地执行(XiP)功能。此外,该微控制器支持高达WSVGA分辨率的2D GUI,且CPU负载有限,从而为实时任务提供更多资源
    的头像 发表于 10-21 11:39 1429次阅读
    STM32H7<b class='flag-5'>R</b>3/<b class='flag-5'>S</b>3:高性能微控制器的新标杆