0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DshanMCU-R128s2 SDK 架構(gòu)與目錄結(jié)構(gòu)

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

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

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

SDK 架構(gòu)

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

開發(fā) HIFI5 需要 Cadence Xtensa 的 IDE 工具, DSP 的 XCC 工具鏈包。Cadence Xtensa 的授權(quán) License,用于服務(wù)器代碼編譯和 Xplorer 仿真使用。 這些工具需要向 Cadence 申請(qǐng)授權(quán) ,鏈接:[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 層,分別為硬件層、內(nèi)核層、組件層、應(yīng)用層。

  • Hardware。硬件層包括處理器、內(nèi)存、存儲(chǔ)介質(zhì)、無線網(wǎng)卡、總線以及外設(shè)等。
  • Kernel。內(nèi)核層包括FreeRTOS 核心系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、BSP 驅(qū)動(dòng)等。
  • Component。組件層包括控制臺(tái)、多媒體、功耗管理、OTA、音頻系統(tǒng)、顯示系統(tǒng)、圖像采集等。
  • APP。應(yīng)用層包括各種應(yīng)用demo。

SDK 目錄結(jié)構(gòu)

以R128-S2芯片為例,SDK 目錄結(jié)構(gòu)如下,重點(diǎn)目錄進(jìn)行了展開處理

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

R128 SDK 目錄結(jié)構(gòu)如上所示,主要包括如下幾個(gè)關(guān)鍵目錄:

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

lichee/rtos 目錄

lichee/rtos
├── arch        # 處理器架構(gòu)相關(guān)
├── build       # 編譯臨時(shí)文件輸出目錄
├── components  # 組件
├── drivers     # 驅(qū)動(dòng)
├── include
├── kernel      # FreeRTOS內(nèi)核
├── projects    # 方案工程
├── scripts
└── tools       # 工具鏈

lichee/rtos 目錄主要包括arch(架構(gòu)相關(guān))、components(組件)、drivers(驅(qū)動(dòng))、include(頭文件)、kernel(內(nèi)核)、projects(工程)、toos(工具鏈) 幾個(gè)目錄。

arch 目錄

arch 目錄主要放置跟SoC 架構(gòu)相關(guān)的內(nèi)容,每個(gè)SoC 單獨(dú)目錄管理,主要包括跟R128 處理器相關(guān)的ARCH 初始化、中斷處理、異常處理、內(nèi)存映射相關(guān)功能的實(shí)現(xiàn)。

drivers 目錄

drivers 目錄包含R128 所需的外設(shè)驅(qū)動(dòng),主要包括各外設(shè)控制器驅(qū)動(dòng)的具體實(shí)現(xiàn)(rtos?hal 軟連接)以及OSAL 層接口實(shí)現(xiàn)(osal)。

kernel 目錄

kernel 目錄主要包含F(xiàn)reeRTOS 的kernel 源碼,ARMv8M 的portable 源碼以及全志實(shí)現(xiàn)的系統(tǒng)功能相關(guān)代碼。

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

projects 目錄

projects 目錄下的每一個(gè)子目錄代表一個(gè)SoC 類別,每個(gè) SoC 類別下面存放對(duì)應(yīng)的方案,每個(gè)方案都有 m33 與c906 目錄,在這些目錄下面實(shí)現(xiàn)各處理器上第一個(gè)任務(wù),選擇不同的 project 編譯出來的 bin 具有不同功能。每個(gè) project 有獨(dú)立的 FreeRTOSConfig 配置。

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

Tools 目錄

這個(gè)目錄主要包含一些預(yù)編譯好的交叉編譯工具鏈,目前M33 基于GCC 8.3.1 的交叉編譯環(huán)境,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)

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349922
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1020

    瀏覽量

    45694
  • R128
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    93
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    全志R128 SDK架構(gòu)目錄結(jié)構(gòu)

    R128-S2芯片為例,SDK 目錄結(jié)構(gòu)如下,重點(diǎn)目錄進(jìn)行了展開處理 code">.├── board# 板級(jí)配置
    發(fā)表于 01-05 10:05

    DshanMCU-R128s2全志R128視頻教程

    基于DShanMCU-R128S2_DevKit的入門教程
    的頭像 發(fā)表于 12-26 14:05 ?548次閱讀

    DshanMCU-R128s2 R128 模組

    R128-S2-N16R16 R128-S2 Arm Cortex-M33 C906 RISC-V HIFI5 DSP 1MByte 8Mbyte 8Mbyte 16M NOR Flash 2 Audio
    的頭像 發(fā)表于 12-26 11:11 ?963次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> <b class='flag-5'>R128</b> 模組

    DshanMCU-R128s2芯片手冊(cè)與資料

    : Xplorer Software (SDK) Download Xtensa Xplorer 授權(quán)申請(qǐng): Cadence Tensilica Offerings Xtensa Xplorer 試用申請(qǐng): request an evaluation license 其余手冊(cè)將在
    的頭像 發(fā)表于 12-26 11:02 ?729次閱讀

    DshanMCU-R128s2芯片參數(shù)

    MB LS PSRAM R128 S2)/8 channels (R128 S3) - One LEDC used to control the external intellige
    的頭像 發(fā)表于 12-26 10:57 ?1016次閱讀

    DshanMCU-R128s2硬件設(shè)計(jì)參考

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

    DshanMCU-R128s2術(shù)語表

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

    DshanMCU-R128s2硬件設(shè)計(jì)指南

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

    DshanMCU-R128s2啟動(dòng)與資源劃分

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

    DshanMCU-R128s2 配置引腳復(fù)用

    解析 sys_config.fex 的驅(qū)動(dòng)配置位于 licheertos-componentsawsys_config_script 中。 對(duì)于配置引腳復(fù)用,只需要修改 boardr128s2{PROJECT}configsys_config.fex 文件即可。 GPIO描述
    的頭像 發(fā)表于 12-22 17:36 ?605次閱讀

    DshanMCU-R128s2 Hello World!

    載入方案選擇 r128s2_module_c906 $ source envsetup.sh $ lunch_rtos 1 編輯程序 打開你喜歡的編輯器,修改文件: lichee/rtos
    的頭像 發(fā)表于 12-22 17:24 ?554次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> Hello World!

    DshanMCU-R128s2 SDK 入門

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

    DshanMCU-R128s2 R128 EVT 開發(fā)套件

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

    DshanMCU-R128s2 R128 DevKit 開發(fā)板

    針對(duì) R128 模組,百問科技推出了 R128 DevKit 開發(fā)板作為快速開發(fā)評(píng)估工具。 特性: 板載 R128-S2-N16R16 模組 板載 2.4G RF 陶瓷天線 板載 USB Type
    的頭像 發(fā)表于 12-22 12:02 ?567次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> <b class='flag-5'>R128</b> DevKit 開發(fā)板

    DshanMCU-R128s2芯片簡介

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