完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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 申请授权SDK 软件框架 R128 软件框架如上图所示,一共4 层,分别为硬件层、内核层、组件层、应用层。
code">.├── 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_editorR128 SDK 目录结构如上所示,主要包括如下几个关键目录:
arch 目录arch 目录主要放置跟SoC 架构相关的内容,每个SoC 单独目录管理,主要包括跟R128 处理器相关的ARCH 初始化、中断处理、异常处理、内存映射相关功能的实现。 drivers 目录drivers 目录包含R128 所需的外设驱动,主要包括各外设控制器驱动的具体实现(rtos‑hal 软连接)以及OSAL 层接口实现(osal)。 kernel 目录kernel 目录主要包含FreeRTOS 的kernel 源码,ARMv8M 的portable 源码以及全志实现的系统功能相关代码。 code">.├── FreeRTOS│ ├── Makefile│ └── Source├── FreeRTOS-orig│ ├── License│ ├── Makefile│ └── Source├── Kconfig├── Makefile├── objects.mk└── Posix ├── CMakeLists.txt ├── include ├── Makefile └── sourceprojects 目录projects 目录下的每一个子目录代表一个SoC 类别,每个 SoC 类别下面存放对应的方案,每个方案都有 m33 与c906 目录,在这些目录下面实现各处理器上第一个任务,选择不同的 project 编译出来的 bin 具有不同功能。每个 project 有独立的 FreeRTOSConfig 配置。 code">.├── 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 编译器 code">Using built-in specs.COLLECT_GCC=./arm-none-eabi-gccCOLLECT_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-wrapperTarget: arm-none-eabiConfigured 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=rmprofileThread model: singlegcc version 8.3.1 20190703 (release) [gcc-8-branch revision 273027] (GNU Tools for Arm Embedded Processors 8-2019-q3-update)C906 RISC-V 编译器 code">Using built-in specs.COLLECT_GCC=./riscv64-unknown-elf-gccCOLLECT_LTO_WRAPPER=/R128-FreeRTOS/lichee/rtos/tools/riscv64-elf-x86_64-20201104/bin/../libexec/gcc/riscv64-unknown-elf/8.4.0/lto-wrapperTarget: riscv64-unknown-elfConfigured 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: singlegcc version 8.4.0 (T-HEAD RISCV Tools V1.10.2 B20201104) |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2588 浏览 0 评论
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
2546 浏览 0 评论
1243 浏览 0 评论
1383 浏览 0 评论
1192 浏览 0 评论
【开源硬件大赛】基于全志V853设计的全功能BTB学习开发板
3430浏览 8评论
3078浏览 5评论
1853浏览 4评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
87540浏览 3评论
3591浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 13:35 , Processed in 0.508624 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号