打印

全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS简介

[复制链接]
273|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
神棍地海棠|  楼主 | 2024-11-18 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全志T113-i是一款双核Cortex-A7国产工业级处理器平台,并内置玄铁C906 RISC-V和HiFi4 DSP双副核心,可流畅运行Linux系统与Qt界面,并已适配OpenWRT系统、Preempt Linux系统。
而其中的RISC-V属于超高能效副核心,标配内存管理单元,可运行RTOS或裸机程序。T113的主核运行Linux(Openwrt或者Preempt Linux)进行人机界面的交互和应用流程,而RISC-V则是后台
英雄,可进行大数据数据采集,或者相关编码器的控制等,降低主核被中断的次数,大大提供了主核的运行效率。那么到底这个双核异构怎么用呢?今天盈鹏飞嵌入式就与你分享。
以盈鹏飞嵌入式SBC-T113主板为例(以T113-i为主控的主板),我们先介绍下主板特性:
产品特性
  • 采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ;
  • 列表内置64-bit XuanTie C906 RISC-V协处理器;
  • 列表支持JPEG/MJPEG视频编码,最大分辨率1080p@60fps;支持多格式1080P@60fps视频解码 (H.265,H.264, MPEG-1/2/4);
  • 列表支持双通道LVDS/MIPI-DSI,分辨率最高1920x1080;
  • 列表支持512-1G Bytes DDR3 SDRAM;
  • 列表支持SPI NAND存储和启动(默认:256MB;可选128MB)或者EMMC启动(默认:4GB,最大32GB);
  • 列表支持四路USB2.0 HOST;
  • 列表支持六路RS232通信;
  • 列表支持双路CAN BUS通信(隔离);
  • 列表支持双路以太网,一路10/100M;一路10/100/1000M;
  • 列表稳定的操作系统的支持,可预装Ubuntu20.04/LINUX 5.4 Preempt/Tina5.0;
  • 列表标准3.5寸主板, 尺寸为:146*102MM;

SBC-T113产品功能图:
1、RTOS系统概述
1.1、概述
全志Tina Linux SDK中包含了RTOS系统,该系统是基于FreeRTOS内核的软件开发包,包含了系统开发用到的内核源码、驱动、工具、组件与应用程序包。通过Makefile脚本和Kconfig配置文件,使得用户可以通过menuconfig进行个性化裁减,编译出一个可以直接烧写到机器上运行的RTOS系统软件。
1.2、系统框图
RTOS 系统框图如图所示,仅从软件的角度来看,从下至上分为内核层、组件层、应用层三个层次。各层次主要内容如下:
  • Kernel:内核层包括 FreeRTOS核心系统、文件系统、网络系统、BSP驱动等。
  • Component:组件层包括控制台、多媒体、功耗管理、OTA、音频系统、显示系统、图像采集等。
  • APP:应用层包括各种应用 demo。



2、RTOS SDK目录结构
rtos├──board        #包含各SoC板级配置目录│└──mr527_e906        #mr527_e906板级配置目录│└──t113_s3p_c906        #t113_s3p_c906板级配置目录│└──t113_s4_c906        #t113_s4_c906板级配置目录│└──t113_s4p_c906        #t113_s4p_c906板级配置目录│└──XXX        #XXX平台板级配置目录├──envsetup.sh        #SDK环境初始化脚本├──lichee│├──dsp        #DSP FreeRTOS系统│├──rtos        #C906/E906FreeRTOS系统│├──rtos components#FreeRTOS公共组件│└──rtos hal        #BSP驱动└──tools        #打包相关工具脚本目录
所使用RTOS SDK目录结构如上所示,主要包括如下几个关键目录:
board:板级配置目录,用于存放芯片方案的配置文件,主要包括系统配置文件sys_config.fex等。
lichee/dsp:存放DSPFreeRTOS系统、组件、应用。
lichee/rtos:存放E906FreeRTOS系统、组件、应用。
lichee/rtos components:公共组件目录,lichee/dsp与lichee/rtos都可以使用该组件。
lichee/rtos hal:BSP驱动目录,用于存放各种驱动代码。对lichee/dsp与lichee/rtos通用。
tools:工具目录,用于存放编译打包相关的脚本、工具等。
下面对lichee/rtos、lichee/rtos hal目录进行详细说明。lichee/dsp目录与lichee/rtos目录类似,此处不做介绍。
2.1、lichee/rtos目录
├──arch        #处理器架构相关├──build        #编译临时文件输出目录├──components        #组件├──drivers#驱动├──include#头文件├──kernel#FreeRTOS内核#方案工程├──projects├──scripts└──tools#工具链
lichee/rtos目录主要包括arch(架构相关)、components(组件)、drivers(驱动)、include(头文件)、kernel(内核)、projects(工程)、toos(工具链)等目录,下面对常用重要目录分别进行介绍。
2.1.1、arch目录
arch目录主要放置跟SoC架构相关的内容,每个SoC单独目录管理,主要包括跟risc v架构相关的ARCH初始化、中断处理、异常处理、内存映射相关功能的实现。
lichee/rtos/arch/├──common└──risc v├──arch.mk├──c906├──common├──e906├──includes├──Kconfig├──Makefile├──sun55iw3p1└──sun8iw20p1
2.1.2、components目录
components 目录包含 allwinner 和第三方的组件。
lichee/rtos/components/├──aw│├──blkpart│├──bluetooth│├──csi│├──devfs│├──healthd│├──......│├──watchpoint│└──wireless_video├──common >../../rtos components└──thirdparty├──common├──console├──cplusplus├──elmfat├──finsh_cli├──......└──vfs
2.1.3、drivers目录
drivers目录包含所需的外设驱动,主要包括各外设控制器驱动的具体实现(hal软连接)以及OSAL层接口(osal)。
lichee/rtos/drivers/├──drv├─ CPUfreq        #POSIX头文件├──leds├── uart├──.....├── wireless├─hal ->.../../rtos-hal/└──osal
2.1.4、include 目录
include 目录统一管理各模块提供的数据结构定义及函数声明。
lichee/rtos/include/ ├── arch # 架构相关头文件 ├── FreeRTOS_POSIX # POSIX头文件 ├── ...... └── vsprintf.h
2.1.5、kernel目录
kernel目录主要包含FreeRTOS的kernel源码,全志实现的系统功能相关代码。
lichee/rtos/kernel/├──FreeRTOS orig│└──Source└──Posix
2.1.6 projects 目录
projects目录下的每一个子目录代表一个project,实现main入口,选择不同的project编译出来的bin具有不同功能,每个project有独立的FreeRTOSConfig配置。例如t113-s4,其对应于t113_s4_c906子目录,这个子目录下面根据应用的不同建立不同的应用配置,如下有evb1_auto应用和evb1_auto_fastboot_video应用。
rtos/lichee/rtos/projects/t113_s4_c906/├── evb1_auto│   ├── defconfig│   ├── defconfig_org│   ├── freertos.lds.S│   ├── Kconfig│   ├── Makefile│   └── src│       ├── alsa_config.c│       ├── assert.c│       ├── card_default.c│       ├── FreeRTOSConfig.h│       ├── hooks.c│       └── main.c├── evb1_auto_fastboot_video│   ├── defconfig│   ├── freertos.lds.S│   ├── Kconfig│   ├── Makefile│   └── src│       ├── alsa_config.c│       ├── assert.c│       ├── card_default.c│       ├── FreeRTOSConfig.h│       ├── hooks.c│       └── main.c└── Makefile
2.1.7、tools目录
这个目录主要包含一些预编译好的交叉编译工具链。
xxx@xxx:lichee/rtos/tools$ ls -altotal 663248drwxrwxr-x  3 ping ping      4096 Oct 21 14:28 .drwxrwxr-x 13 ping ping      4096 Oct 21 16:02 ..-rw-rw-r--  1 ping ping 103333888 Jan  8  2024 gcc-arm-melis-eabi-8-2019-q3-update-linux.tar.bz2-rw-rw-r--  1 ping ping 106566166 Jan  8  2024 gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2-rwxrwxr-x  1 ping ping 137020992 Jan  8  2024 gcc-arm-none-eabi-8-2019-q3-update-win32.zipdrwxr-xr-x  9 ping ping      4096 Oct 21 14:29 riscv64-elf-x86_64-20201104-rwxrwxr-x  1 ping ping 164604965 Jan  8  2024 riscv64-elf-x86_64-20201104.tar.gz-rwxrwxr-x  1 ping ping 167614189 Jan  8  2024 Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gzxxx@xxx:lichee/rtos/tools$
目前risc v基于GCC8.4.0的交叉编译器。
xxx@xxx:lichee/rtos/tools$./riscv64-elf-x86_64-20201104/bin/riscv64-unknown-elf-gcc -vUsing built-in specs.COLLECT_GCC=./riscv64-elf-x86_64-20201104/bin/riscv64-unknown-elf-gccCOLLECT_LTO_WRAPPER=/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/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)
2.2、lichee/rtos hal目录
lichee/rtos hal目录为BSP驱动目录,用于存放各种驱动代码。lichee/rtos/drivers目录下的rtos hal子目录软链接到该目录,下面对该目录进行介绍。
lichee/rtos hal├──hal        #BSP驱动代码├──include        #驱动相关头文件└──tools
lichee/rtos hal目录主要包括hal(BSP驱动代码)、include(驱动相关头文件)等目录,下面分别对其进行介绍。
2.2.1、hal目录
hal目录主要包含各外设驱动代码以及驱动测试代码,source子目录为驱动代码,test子目录为驱动测试代码
lichee/rtos hal/hal├──Makefile├──source│├──ccmu│├──gpio│├──......│├──uart│└──watchdog└──test├──ccmu├──gpio├──......├──uart└──watchdog
2.2.2、include目录
include目录主要包含驱动相关头文件以及系统相关接口头文件。
lichee/rtos hal/include├──hal│├──aw alsa lib│├──aw_common.h│├──......│├──sunxi_hal_usb.h│├──sunxi_hal_watchdog.h│└──video└──osal├──hal_atomic.h├──hal_cache.h├──......├──hal_waitqueue.h└──hal_workqueue.h

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

290

帖子

1

粉丝