<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 SDK 架構與目錄結構

嵌入式Linux那些事 ? 來源:嵌入式Linux那些事 ? 作者:嵌入式Linux那些事 ? 2023-12-22 15:57 ? 次閱讀

R128 S2 是全志提供的一款 M33(ARM)+C906(RISCV-64)+HIFI5(Xtensa) 三核異構 SoC,同時芯片內部 SIP 有 1M SRAM、8M LSPSRAM、8M HSPSRAM 以及 16M NORFLASH。

本文檔作為 R128 FreeRTOS SDK 開發指南,旨在幫助軟件開發工程師、技術支持工程師快速上手,熟悉 R128 FreeRTOS SDK 的開發流程。

SDK 架構

R128 包含 3 個核,需要編譯 M33+C906+HIFI5 共3 個核的鏡像。啟動時同時運行三個 RTOS 系統。其中 M33 與 C906 使用的是 FreeRTOS v10.4.3,從 [https://www.freertos.org/RTOS.html] 獲取,HIFI5 使用的 FreeRTOS 是根據Cadence Support 的推薦的 [https://github.com/foss?xtensa/amazon?freertos](tag:v1.7?xtensa)版本

開發 HIFI5 需要 Cadence Xtensa 的 IDE 工具, DSP 的 XCC 工具鏈包。Cadence Xtensa 的授權 License,用于服務器代碼編譯和 Xplorer 仿真使用。 這些工具需要向 Cadence 申請授權 ,鏈接:[https://www.cadence.com/en_US/home/tools/ip/tensilica-ip/technologies.html],Xplorer 下載鏈接:[https://www.cadence.com/en_US/home/tools/ip/tensilica-ip/sdk-download.html]

SDK 軟件框架

image1

R128 軟件框架如上圖所示,一共4 層,分別為硬件層、內核層、組件層、應用層。

  • Hardware。硬件層包括處理器、內存、存儲介質、無線網卡、總線以及外設等。
  • Kernel。內核層包括FreeRTOS 核心系統、文件系統、網絡系統、BSP 驅動等。
  • Component。組件層包括控制臺、多媒體、功耗管理、OTA、音頻系統、顯示系統、圖像采集等。
  • APP。應用層包括各種應用demo。

SDK 目錄結構

以R128-S2芯片為例,SDK 目錄結構如下,重點目錄進行了展開處理

.
├── board               # 板級配置目錄
│   ├── common          # 公共板級配置目錄
│   │   ├── configs     # 公共板級配置
│   │   └── data        # 公共數據
│   │       ├── reserve # Wi-Fi & BT 固件
│   │       ├── secret  # 公共安全區
│   │       └── UDISK   # 公共 UDISK 分區
│   └── r128s2          # R128 S2 芯片配置目錄
│       ├── 86panel     # R128 S2 86面板開發板 板級配置目錄
│       │   ├── bin     # 86面板開發板固件,引導等bin
│       │   ├── configs # 86面板開發板配置文件,引腳復用,分區表等配置文件
│       │   │   └── ota # 86面板開發板配置文件,OTA相關配置文件
│       │   └── data    # 86面板開發板數據
│       │       ├── reserve
│       │       ├── secret
│       │       └── UDISK
│       └── module      # R128 S2 Module 模塊板級配置目錄
│           ├── bin     # R128 S2 Module 固件,引導等bin
│           ├── configs # R128 S2 Module 配置文件,引腳復用,分區表等配置文件
│           │   └── ota # R128 S2 Module 配置文件,OTA相關配置文件
│           └── data    # R128 S2 Module 數據
│               ├── reserve
│               ├── secret
│               └── UDISK
├── lichee              # 系統源碼目錄
│   ├── brandy-2.0      # 啟動相關目錄
│   │   ├── tools       # U-Boot 使用的工具鏈
│   │   └── u-boot-2018 # U-Boot 啟動代碼
│   ├── rtos            # M33/C906 FreeRTOS 系統、組件、應用
│   │   ├── arch        # 處理器架構相關代碼
│   │   │   ├── arm     # ARM 處理器初始化、中斷處理、異常處理、內存映射相關功能的實現
│   │   │   │   ├── armv8m
│   │   │   │   └── common
│   │   │   ├── common
│   │   │   └── risc-v  # RISC-V 處理器初始化、中斷處理、異常處理、內存映射相關功能的實現
│   │   │       ├── c906
│   │   │       ├── common
│   │   │       ├── includes
│   │   │       └── sun20iw2p1
│   │   ├── build       # 編譯臨時文件輸出目錄
│   │   ├── components  # 應用組件,libc、多媒體、lvgl
│   │   │   ├── aw      # Allwinner 提供的組件
│   │   │   │   ├── blkpart
│   │   │   │   ├── bluetooth
│   │   │   │   ├── ...
│   │   │   │   └── wireless_video
│   │   │   ├── common - > ../../rtos-components
│   │   │   └── thirdparty # 第三方提供的組件
│   │   │       ├── common
│   │   │       ├── console
│   │   │       ├── ...
│   │   │       └── vfs
│   │   ├── drivers     # RTOS 驅動
│   │   │   ├── drv
│   │   │   │   ├── bluetooth
│   │   │   │   ├── ...
│   │   │   │   └── wireless
│   │   │   ├── osal
│   │   │   │   └── src
│   │   │   └── rtos-hal - > ../../rtos-hal/
│   │   ├── include     # RTOS 頭文件目錄
│   │   │   ├── arch    # 架構相關頭文件
│   │   │   │   ├── arm
│   │   │   │   └── riscv
│   │   │   ├── drivers # 驅動相關頭文件
│   │   │   ├── FreeRTOS_POSIX
│   │   │   ├── ...
│   │   │   └── sys
│   │   ├── kernel      # FreeRTOS 內核
│   │   ├── projects    # 方案工程目錄,后文有詳細介紹
│   │   ├── scripts     # 編譯腳手架腳本
│   │   └── tools       # RTOS 使用的工具鏈
│   ├── rtos-components # 公共應用組件,libc、多媒體、lvgl等
│   │   ├── aw          # Allwinner 提供的公共應用組件
│   │   └── thirdparty  # 第三方提供的公共應用組件
│   └── rtos-hal        # RTOS HAL驅動
│       ├── hal         # HAL 驅動
│       ├── include     # HAL 頭文件
│       └── tools       # HAL 相關工具
├── out                 # 打包輸出的臨時文件與最終鏡像文件
│   └── r128s2
│       └── pro
└── tools               # 用于存放打包相關的腳本、工具
├── image-file
├── scripts
├── tool
│   └── cppcheck
├── win-tools
└── xradio-tools
├── data
├── HcidumpXr
├── NLink
├── NTest
└── sdd_editor

R128 SDK 目錄結構如上所示,主要包括如下幾個關鍵目錄:

  • board:板級配置目錄,用于存放芯片方案的配置文件,主要包括 env 配置、分區表配置、
    sys_config.fex 引腳復用配置等。
  • lichee/brandy?2.0:主要存放uboot 等代碼。
  • lichee/rtos:存放 M33/C906 FreeRTOS 系統、組件、應用。
  • lichee/rtos?components:公共組件目錄。
  • lichee/rtos?hal:HAL BSP 驅動目錄。用于存放各種驅動代碼。
  • out:用于保存打包時輸出的臨時文件與最終鏡像文件。打包時自動生成此目錄。
  • tools:工具目錄,用于存放打包相關的腳本、工具等。

lichee/rtos 目錄

lichee/rtos
├── arch        # 處理器架構相關
├── build       # 編譯臨時文件輸出目錄
├── components  # 組件
├── drivers     # 驅動
├── include
├── kernel      # FreeRTOS內核
├── projects    # 方案工程
├── scripts
└── tools       # 工具鏈

lichee/rtos 目錄主要包括arch(架構相關)、components(組件)、drivers(驅動)、include(頭文件)、kernel(內核)、projects(工程)、toos(工具鏈) 幾個目錄。

arch 目錄

arch 目錄主要放置跟SoC 架構相關的內容,每個SoC 單獨目錄管理,主要包括跟R128 處理器相關的ARCH 初始化、中斷處理、異常處理、內存映射相關功能的實現。

drivers 目錄

drivers 目錄包含R128 所需的外設驅動,主要包括各外設控制器驅動的具體實現(rtos?hal 軟連接)以及OSAL 層接口實現(osal)。

kernel 目錄

kernel 目錄主要包含FreeRTOS 的kernel 源碼,ARMv8M 的portable 源碼以及全志實現的系統功能相關代碼。

.
├── FreeRTOS
│   ├── Makefile
│   └── Source
├── FreeRTOS-orig
│   ├── License
│   ├── Makefile
│   └── Source
├── Kconfig
├── Makefile
├── objects.mk
└── Posix
├── CMakeLists.txt
├── include
├── Makefile
└── source

projects 目錄

projects 目錄下的每一個子目錄代表一個SoC 類別,每個 SoC 類別下面存放對應的方案,每個方案都有 m33 與c906 目錄,在這些目錄下面實現各處理器上第一個任務,選擇不同的 project 編譯出來的 bin 具有不同功能。每個 project 有獨立的 FreeRTOSConfig 配置。

.
├── config.h                       # 公共配置頭文件
├── Kconfig                        # Kconfig 引索文件
├── Makefile                       # Makefile
├── objects.mk                     # Makefile 構建腳本
└── r128s2                         # R128 S2 平臺方案
├── bt.lds.S                   # 藍牙協議棧等鏈接腳本
├── Makefile                   # Makefile 構建腳本
├── 86panel_c906               # 86panel 方案 C906 RISC-V 核相關文件
│   ├── defconfig              # 軟件包配置文件
│   ├── freertos.lds.S         # 鏈接腳本
│   ├── Kconfig                # Kconfig 引索文件
│   ├── Makefile               # Makefile 構建腳本
│   └── src                    # 86panel 方案 C906 RISC-V 核相關源碼
│       ├── alsa_config.c      # alsa 框架插件配置文件
│       ├── assert.c           # 斷言處理
│       ├── card_default.c     # 聲卡配置文件
│       ├── FreeRTOSConfig.h   # FreeRTOS 配置文件
│       ├── hooks.c            # FreeRTOS 相關鉤子函數配置
│       └── main.c             # FreeRTOS 程序入口
├── wlan.lds.S                 # WiFi 鏈接文件
└── xip.lds.S                  # xip 鏈接文件

Tools 目錄

這個目錄主要包含一些預編譯好的交叉編譯工具鏈,目前M33 基于GCC 8.3.1 的交叉編譯環境,C906 基于GCC 8.4.0 的交叉編譯器。

M33 編譯器
Using built-in specs.
COLLECT_GCC=./arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/R128-FreeRTOS/lichee/rtos/tools/gcc-arm-none-eabi-8-2019-q3-update/bin/../lib/gcc/arm-none-eabi/8.3.1/lto-wrapper
Target: arm-none-eabi
Configured with: /tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/src/gcc/configure --target=arm-none-eabi --prefix=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native --libexecdir=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/lib --infodir=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi --build=x86_64-linux-gnu --host=x86_64-linux-gnu --with-gmp=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/build-native/host-libs/usr --with-mpfr=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/build-native/host-libs/usr --with-mpc=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/build-native/host-libs/usr --with-isl=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/build-native/host-libs/usr --with-libelf=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for Arm Embedded Processors 8-2019-q3-update' --with-multilib-list=rmprofile
Thread model: single
gcc version 8.3.1 20190703 (release) [gcc-8-branch revision 273027] (GNU Tools for Arm Embedded Processors 8-2019-q3-update)
C906 RISC-V 編譯器
Using built-in specs.
COLLECT_GCC=./riscv64-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/R128-FreeRTOS/lichee/rtos/tools/riscv64-elf-x86_64-20201104/bin/../libexec/gcc/riscv64-unknown-elf/8.4.0/lto-wrapper
Target: riscv64-unknown-elf
Configured with: /ldhome/software/toolsbuild/slave/workspace/riscv64_build_elf_x86_64/build/../source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --with-mpc=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_elf_x86_64/lib-for-gcc-x86_64-linux/ --with-mpfr=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_elf_x86_64/lib-for-gcc-x86_64-linux/ --with-gmp=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_elf_x86_64/lib-for-gcc-x86_64-linux/ --prefix=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_elf_x86_64/install --disable-shared --disable-threads --enable-languages=c,c++ --with-system-zlib --enable-tls --enable-libgcctf --with-newlib --with-sysroot=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_elf_x86_64/install/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --src=../../source/riscv/riscv-gcc --with-pkgversion='T-HEAD RISCV Tools V1.10.2 B20201104' --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-Os  -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-Os  -mcmodel=medany' CC=gcc CXX=g++
Thread model: single
gcc version 8.4.0 (T-HEAD RISCV Tools V1.10.2 B20201104)

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16016

    瀏覽量

    343617
  • SDK
    SDK
    +關注

    關注

    3

    文章

    966

    瀏覽量

    44696
  • R128
    +關注

    關注

    0

    文章

    41

    瀏覽量

    28
收藏 人收藏

    評論

    相關推薦

    全志R128 SDK架構目錄結構

    R128-S2芯片為例,SDK 目錄結構如下,重點目錄進行了展開處理 code"&gt;.├── board# 板級配置
    發表于 01-05 10:05

    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芯片手冊與資料

    : Xplorer Software (SDK) Download Xtensa Xplorer 授權申請: Cadence Tensilica Offerings Xtensa Xplorer 試用申請: request an evaluation license 其余手冊將在R
    的頭像 發表于 12-26 11:02 ?306次閱讀

    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啟動與資源劃分

    下面簡單介紹一下 R128 方案的資源劃分與啟動流程。 資源劃分 CPU 資源劃分 這只是默認配置方案,CPU 資源劃分可以按照需求任意修改 CPU 功能說明 M33 控制核。運行 WI-FI/BT
    的頭像 發表于 12-22 17:46 ?285次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b>啟動與資源劃分

    DshanMCU-R128s2 Hello World!

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

    DshanMCU-R128s2 SDK 入門

    本章介紹基礎的SDK編譯,打包等操作,方便快速上手 SDK 開發。
    的頭像 發表于 12-22 15:40 ?298次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> <b class='flag-5'>SDK</b> 入門

    DshanMCU-R128s2芯片簡介

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

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

    ——NWatch,并把他移植到了R128開發板上。 項目簡介 本項目基于ZakKemble的開源項目NWatch,與原作者的NWatch不一樣的是,作者將其移植到DShanMCU-R128s2
    發表于 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>