<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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
    +關注

    關注

    146

    文章

    16016

    瀏覽量

    343617
  • R128
    +關注

    關注

    0

    文章

    41

    瀏覽量

    28
收藏 人收藏

    評論

    相關推薦

    DshanMCU-R128s2全志R128視頻教程

    基于DShanMCU-R128S2_DevKit的入門教程
    的頭像 發表于 12-26 14:05 ?226次閱讀

    DshanMCU-R128s2 R128 模組

    R128 模組 針對 R128 芯片,百問科技提供推出了一種型號模塊,如下表所示 型號 SoC CPU0 CPU1 DSP SRAM LS-PSRAM HS-PSRAM Flash DAC
    的頭像 發表于 12-26 11:11 ?362次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> R<b class='flag-5'>128</b> 模組

    DshanMCU-R128s2芯片參數

    Star MCU , up to 192 MHz - Memories - 1MB SRAM - SiP 8 MB/16 MB Flash - 8 MB H S PSRAM in R128
    的頭像 發表于 12-26 10:57 ?426次閱讀

    DshanMCU-R128s2硬件設計參考

    R128 DevKit 開發板 硬件工程開源地址:https://oshwhub.com/gloomyghost/r128-module 電路圖
    的頭像 發表于 12-26 09:46 ?496次閱讀

    DshanMCU-R128s2術語表

    RISC-V 架構的 64 位元處理器單元 HIFI5 Cadence 推出的 Cadence Tensilica HiFi 5 DSP 32 位處理器單元 R128 全志推出的一款包含
    的頭像 發表于 12-25 10:07 ?248次閱讀

    DshanMCU-R128s2硬件設計指南

    原理圖設計 硬件系統框圖 R128是一顆專為“音視頻解碼”而打造的全新高集成度 SoC,主要應用于智能物聯和專用語音交互處理解決方案。 單片集成 MCU+RISCV+DSP+CODEC+WIFI
    的頭像 發表于 12-25 09:41 ?400次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b>硬件設計指南

    DshanMCU-R128s2 Hello World!

    本文將介紹使用 R128 開發板從串口輸出 Hello World 的方式介紹 SDK 軟件開發流程。 載入方案 我們使用的開發板是 R128-Devkit,需要開發 C906 核心的應用程序,所以
    的頭像 發表于 12-22 17:24 ?281次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> Hello World!

    DshanMCU-R128s2 SDK 架構與目錄結構

    的開發流程。 SDK 架構 R128 包含 3 個核,需要編譯 M33+C906+HIFI5 共3 個核的鏡像。啟動時同時運行三個 RTOS 系統。其中 M33 與 C906 使用的是 FreeRTOS
    的頭像 發表于 12-22 15:57 ?286次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> SDK 架構與目錄結構

    DshanMCU-R128s2 R128 EVT 開發套件

    針對 R128 模組,百問科技推出了 R128 EVT 開發套件作為快速開發評估工具。
    的頭像 發表于 12-22 15:16 ?348次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> R<b class='flag-5'>128</b> EVT 開發套件

    DshanMCU-R128s2 燒寫固件

    編譯系統源碼后,打包后生成的系統文件稱之為固件。固件一般為.img格式。把固件下載到開發板或者產品上的過程稱之為 燒寫固件 。
    的頭像 發表于 12-22 15:08 ?630次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> 燒寫固件

    DshanMCU-R128s2 R128 DevKit 開發板

    3 路 MIC,2 路 LINEOUT 板厚 1.6MM,引出郵票孔 資源下載 硬件工程開源地址:[https://oshwhub.com/gloomyghost/r128-module] 電路圖
    的頭像 發表于 12-22 12:02 ?244次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> R<b class='flag-5'>128</b> DevKit 開發板

    DshanMCU-R128s2芯片簡介

    DshanMCU-R128s2芯片簡介
    的頭像 發表于 12-22 09:55 ?383次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b>芯片簡介

    小時候畫在手腕上的表,我用全志R128讓他真正動了起來

    /100ask_r128_demos/releases/tag/v0.0.1 燒寫固件到DShanMCU-R128s2-DevKit在新窗口打開后開機會自動啟動NWatch任務,如果沒有自動
    發表于 11-09 17:03

    基于DShanMCU-R128s2-DevKit開發智能手表

    本項目基于DShanMCU-R128s2-DevKit開發,用意是提供一個綜合的示例進行學習參考。
    的頭像 發表于 11-01 15:32 ?428次閱讀
    基于<b class='flag-5'>DShanMCU-R128</b>s2-DevKit開發智能手表

    DshanMCU-R128s2-DEVKIT應用開發案例

    本文章為DshanMCU-R128s2-DEVKIT應用開發案例,本文案例(點亮一顆 LED 燈)代碼可以到全志在線-在線文檔或者復制鏈接前往下載。
    的頭像 發表于 09-28 16:26 ?552次閱讀
    <b class='flag-5'>DshanMCU-R128</b>s2-DEVKIT應用開發案例
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>