0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + FPGA通信案例

Tronlong创龙科技 ? 来源:Tronlong创龙科技 ? 作者:Tronlong创龙科技 ? 2025-08-19 11:16 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前 言

本文主要介绍基于全志科技T113与FPGA的核间通信案例,适用开发环境如下。

Windows开发环境:Windows 7 64bit、Windows 10 64bit

虚拟机:VMware15.5.5

Linux开发环境:Ubuntu18.04.4 64bit

U-Boot:U-Boot-2018.07

Kernel:Linux-5.4.61、Linux-RT-5.4.61

LinuxSDK:T113_Tina5.0-V1.0(Linux)

无特殊说明情况下,默认基于NAND FLASH配置评估板进行演示,使用USB TO UART0作为调试串口,通过Linux系统启动卡(Micro SD方式)启动系统。

本文档对应案例的测试结果说明如下表所示。

wKgZO2ij6FqANMwBAAAqjXGAjIw667.png

spi_rw案例

案例说明

案例功能:主要演示T113(ARM Cortex-A7)与Spartan-6(FPGA)处理器之间的SPI通信。案例源码位于“4-软件资料Demobase-demosspi_rw”目录下,具体目录结构说明如下。

wKgZO2ij6GGAVew1AAAt7Zd_l6c958.png

ARM端实现SPI Master功能,具体如下:

打开SPI设备节点,如:/dev/spidev1.0。

使用ioctl配置SPI总线,如SPI总线极性和相位、通信速率、数据字长度等。

选择模式为单线模式或双线模式。当SPI总线为双线模式时,发送数据是单线模式,接收数据是双线模式。

发送数据至SPI总线,并从SPI总线读取数据。

打印发送和接收速率。

校验读写数据,然后打印误码率。

FPGA端实现SPI Slave功能,具体如下:

FPGA将SPI Master发送的数据保存至BRAM。

SPI Master发起读数据时,FPGA从BRAM读取数据通过SPI总线传输给SPI Master。

当SPI总线为双线模式,接收数据支持双线模式,而发送数据不支持双线模式。

wKgZO2ij6HGATbB5ABMo4kWpNQQ908.png图?1?ARM端程序流程图

本案例使用的设备树源文件为"driverdtsnandboard.dts"。该设备树源文件基于LinuxSDK开发包内核源码中的board.dts设备树进行修改,具体修改内容如下。

屏蔽reg_usb0_vbus节点GPIO配置,避免引脚复用冲突。

关闭UART1节点,避免引脚复用冲突。

新增SPI总线和spidev驱动配置。生成/dev/spidev1.0节点,为应用层提供SPI的配置和读写数据的接口

wKgZPGij6HyANPNhAACKkfkgdR0711.png图?2

wKgZO2ij6H2AEELuAACxjRlmeVo011.png图?3

wKgZPGij6H2AQijyAAA4aGH2t2o111.png图?4

wKgZO2ij6H2AEELuAACxjRlmeVo011.png图?5

案例测试

硬件连接

由于评估底板拓展接口未预留SPI总线引脚,因此需参考如下方法进行飞线连接,并且应尽可能使用短线连接。

wKgZPGij6K6AXoq9ABEJUR39AxE906.png图?6

1.请根据评估底板丝印将SPI1的测试点TP25(SPI1 MISO)、TP26(SPI1 MOSI)、TP27(SPI1 CLK)、TP28(SPI1 CS)通过飞线引出。

wKgZPGij6OSAHcFrAAW2VaxdbI8104.png图?7

wKgZPGij6PCAFsJyAAIaMJj9lfQ141.png图?8

2.将飞线引出的引脚与创龙科技TL-HSAD-LX采集卡的拓展接口(KJ2)按照下表对应关系进行连接。

wKgZPGij6QmAaFhzAAAOncO5Vh0695.png表?3

3.将评估底板LVDS LCD接口的第26引脚(GND)连接至TL-HSAD-LX采集卡拓展接口(KJ13)的第1引脚,进行共地连接。

wKgZO2ij6RKAAJczAAHvVa8gB48384.png图?9

案例测试

将案例bin目录下的可执行文件spi_rw、"driverkernelnand"目录下的boot.fex镜像文件拷贝至评估板文件系统任意目录下。

评估板上电启动,在评估板文件系统boot.fex文件所在路径下,执行如下命令替换原来的固件,并重启评估板。

Target# dd if=boot.fex of=/dev/mmcblk0p4

Target# sync

Target# reboot

wKgZO2ij6UCAbiZdAAAdjqext38482.png图?10

评估板重启后,执行如下命令查看新生成的spidev设备节点。

Target# ls /dev/spidev1.0

wKgZPGij6n6AD9sMAAAJDaYmIcc198.png图?11

执行如下命令查询程序命令参数。

Target# ./spi_rw -h

wKgZPGij6qmALwXQAABUlbkb5fY659.png图?12

1.单线模式

TL-HSAD-LX采集卡上电启动,加载运行案例"bram_spibin"目录下的程序可执行文件,bram_spi程序支持SPI单线模式。

2.功能测试

执行如下命令运行程序,ARM通过SPI总线写入2KByte随机数据至FPGA BRAM,然后读出数据、进行数据校验,同时打印SPI总线读写速率和误码率,如下图所示。

Target# ./spi_rw -d /dev/spidev1.0 -s 5000000 -OH -m 1 -S 2048 -c 2

参数解析:

-d:设置设备节点;

-s:设置通信时钟频率(Hz);

-O:时钟极性反转(CPOL=1);

-H:下降沿采集数据(CPHA=1);

-m:选择模式传输模式(1表示单线模式。2表示双线模式);

-S:设置传输数据大小,单位为Byte;

-c:循环传输数据包的次数。

wKgZPGij6r2AVp8xAAAte0LkRBE322.png图?13

本次测试指定SPI总线通信时钟频率为5MHz,则SPI单线模式理论通信速率为:(5000000/1024/1024/8)MB/s ≈ 0.596MB/s。从上图可知,本次实测SPI单线模式写速率为0.559MB/s,读速率为0.559MB/s,误码率为0.0%。

备注:由于本案例硬件采用飞线方式进行连接,因此若设置SPI总线通信时钟频率超过10MHz,可能会出现误码现象。

1.性能测试

执行如下命令运行程序,测试SPI单线模式的最高通信带宽。ARM通过SPI总线写入随机数据至FPGA BRAM,然后读出数据、进行数据校验,循环100次,同时打印SPI总线读写速率和误码率,如下图所示。

Target# ./spi_rw -d /dev/spidev1.0 -s 100000000 -OH -m 1 -S 1048576 -c 100

wKgZO2ij6tWARKWHAAAxi8cEq_4729.png图?14

根据官方数据手册(如下图),SPI总线通信时钟频率理论值最大为100MHz。本次测试设置SPI总线通信时钟频率为最大值100MHz,则SPI单线模式理论速率为:(100000000/1024/1024/8)MB/s ≈ 11.92MB/s。从上图可知,在100MHz下实测SPI单线模式写速率为:11.371MB/s,SPI单线模式读速率为:11.371MB/s。

备注:由于本次测试受限于飞线连接方式,因此在100MHz通信时钟频率下测得误码率过高,测试结果仅供参考。

wKgZPGij6uKAROGyAAKzRmdsD5E889.png图?15

同时测得CPU的占用率约为4.6%,如下图所示。

wKgZPGij6umAbc6XAAGQ1XaLvzI737.png图?16

2.双线模式

TL-HSAD-LX采集卡上电启动,加载运行案例"bram_spi_dualbin"目录下的程序可执行文件,bram_spi_dual程序支持SPI双线模式。

3.功能测试

执行如下命令运行程序,ARM通过SPI总线写入2KByte随机数据至FPGA BRAM,然后读出数据、进行数据校验,同时打印SPI总线读写速率和误码率,如下图所示。

Target# ./spi_rw -d /dev/spidev1.0 -s 5000000 -OH -m 2-S 2048 -c 1

参数解析:

-d:设置设备节点;

-s:设置通信时钟频率(Hz);

-O:时钟极性反转(CPOL=1);

-H:下降沿采集数据(CPHA=1);

-m:选择模式传输模式(1表示单线模式。2表示双线模式);

-S:设置传输数据大小,单位为Byte;

-c:循环传输数据包的次数。

wKgZO2ij6vyAGEtSAAAq0igxONM947.png图?17

本次测试指定SPI总线通信时钟频率为5MHz,则SPI双线模式理论通信速率为:(5000000/1024/1024/4)MB/s ≈1.192MB/s。从上图可知,本次实测SPI双线模式写速率为0.559MB/s,读速率为1.104MB/s,误码率为0.0%。

备注:由于本案例硬件采用飞线方式进行连接,因此若设置SPI总线通信时钟频率超过10MHz,可能会出现误码现象。

4.性能测试

执行如下命令运行程序,测试SPI双线模式的最高通信带宽。ARM通过SPI总线写入随机数据至FPGA BRAM,然后读出数据、进行数据校验,循环100次,同时打印SPI总线读写速率和误码率,如下图所示。

Target# ./spi_rw -d /dev/spidev1.0 -s 100000000 -OH -m 2-S 1048576 -c 100

wKgZPGij6waAQ_mKAAAvhlAGlZc875.png图?18

根据官方数据手册(如下图),SPI总线通信时钟频率理论值最大为100MHz。本次测试设置SPI总线通信时钟频率为最大值100MHz,则SPI双线模式理论速率为:(100000000/1024/1024/4)MB/s ≈23.84MB/s。从上图可知,在100MHz下实测SPI双线模式写速率为:11.676MB/s,SPI双线模式读速率为:22.591MB/s。

备注:由于本次测试受限于飞线连接方式,因此在100MHz通信时钟频率下测得误码率过高,测试结果仅供参考。

wKgZPGij6uKAROGyAAKzRmdsD5E889.png图?19

同时测得CPU的占用率约为5.3%,如下图所示。

wKgZO2ij6zKAFIuuAAFqKOgUmyg151.png图?20

案例编译

ARM端设备树编译

将案例"driverdtsnand"目录下board.dts设备树拷贝至LinuxSDK开发包内核源码"device/config/chips/t113_i/configs/tlt113-evm-nand/linux-5.4/"目录下。

wKgZO2ij6z6AXt8EAABmvQeptBk332.png图?21

请按照《Linux系统使用手册》文档编译Linux内核、设备树等,并重新执行"./build.sh pack"命令,将会在"tools/pack/out/"目录下生成新的boot.fex镜像文件。将其拷贝至评估板文件系统进行固化,评估板重启后将会加载新的设备树文件,生成"/dev/spidev1.0"设备节点。

wKgZO2ij612AQjpzAAJOqAztIsQ459.png图?22

ARM端程序编译

将案例src源码目录拷贝至Ubuntu工作目录下,进入源码目录,执行如下命令修改Makefile配置文件,LICHEE_DIR路径修改为LinuxSDK开发包实际路径,将LICHEE_OUT_SYS路径修改为buildroot实际路径。

Host# vi Makefile

wKgZO2ij62SAAk_4AABX2cWZVoc385.png图?23

修改内容如下:

LICHEE_DIR := /home/tronlong/T113/tina5.0_v1.0 //指定LinuxSDK包安装路径

LICHEE_OUT_SYS = $(LICHEE_DIR)/out/t113_i/tlt113-evm-nand/buildroot/buildroot //指定buildroot实际路径

备注:若为eMMC配置评估板,请将路径"tlt113-evm-nand"修改为"tlt113-evm-emmc"。

wKgZO2ij7FmAAyaiAAC_6mXYouI497.png图?24

修改完成,继续执行如下命令,使用LinuxSDK开发包目录下的编译器进行案例编译,编译完成将会在同一个目录下生成可执行程序。

Host# make clean

Host# make

wKgZPGij7GSAQsYaAADLhkZe6s0920.png图?25

ARM端程序关键代码

1.打开SPI设备,分配读写缓冲区。

wKgZO2ij7GyAQ59WAABAQJmDY4w274.png图?26

2.配置SPI总线。

wKgZPGij7IOAChiXAADqOtNmk8k205.png图?27

3.SPI读写速率测试功能实现。

wKgZO2ij7IyATbAkAACvne5VmYU950.png图?28

4.单线模式。

wKgZPGij7JOAaJaHAAE5vAOqZD8183.png图?29


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1646

    文章

    22107

    浏览量

    621123
  • Cortex
    +关注

    关注

    2

    文章

    204

    浏览量

    47536
  • 开发板
    +关注

    关注

    25

    文章

    5787

    浏览量

    106677
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    国产T113-i Cortex-A7@1.2GHz 工业开发板ARM + DSP、RISC-V通信开发案例

    本文档主要介绍T113-i处理器的ARM + DSP、RISC-V通信开发案例,演示T113-i
    的头像 发表于 08-18 14:03 ?77次阅读
    <b class='flag-5'>国产</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>双</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工业</b><b class='flag-5'>开发板</b>—<b class='flag-5'>ARM</b> + DSP、RISC-V<b class='flag-5'>核</b>间<b class='flag-5'>通信</b><b class='flag-5'>开发</b>案例

    国产T113-i Cortex-A7@1.2GHz 工业开发板—RISC-V案例开发手册(上)

    本文档主要介绍T113-i处理器的RISC-V案例开发,演示RISC-V核心RTOS案例的编译与加载方法。适用开发环境如下。
    的头像 发表于 08-13 11:34 ?376次阅读
    <b class='flag-5'>国产</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>双</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工业</b><b class='flag-5'>开发板</b>—RISC-V案例<b class='flag-5'>开发</b>手册(上)

    国产T113-i Cortex-A7@1.2GHz 工业开发板—DSP案例开发手册

    本文档主要介绍T113-i处理器的HiFi4 DSP核心开发案例,演示HiFi4 DSP核心RTOS案例的工程编译、程序固化和工程调试的方法。适用开发环境如下。
    的头像 发表于 08-12 11:37 ?131次阅读
    <b class='flag-5'>国产</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>双</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工业</b><b class='flag-5'>开发板</b>—DSP案例<b class='flag-5'>开发</b>手册

    国产T113-i Cortex-A7@1.2GHz 工业开发板—物联网模块开发案例(上)

    本文档主要介绍基于TLT113-EVM评估的物联网模块开发案例。
    的头像 发表于 08-07 14:47 ?126次阅读
    <b class='flag-5'>国产</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>双</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工业</b><b class='flag-5'>开发板</b>—物联网模块<b class='flag-5'>开发</b>案例(上)

    【创龙TLT113-MiniEVM开发板试用体验】开箱评测

    T113-iCortex-A7@1.2GHz + 玄铁C906 RISC-V@1
    发表于 08-05 19:59

    国产T113-i Cortex-A7@1.2GHz 工业开发板—MQTT通信协议案例

    、Linux-RT-5.4.61 本文主要介绍创龙科技TLT113-EVM评估基于MQTT通信协议开发案例,主要包括mqtt_client案例和mqtt_sinewave_pub案例
    的头像 发表于 07-31 14:34 ?189次阅读
    <b class='flag-5'>国产</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>双</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工业</b><b class='flag-5'>开发板</b>—MQTT<b class='flag-5'>通信</b>协议案例

    国产T113-i Cortex-A7@1.2GHz 工业开发板—LVGL应用开发案例

    本文主要演示基于TLT113-EVM评估的LVGL官方案例以及应用开发案例
    的头像 发表于 07-29 10:06 ?189次阅读
    <b class='flag-5'>国产</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b>  <b class='flag-5'>双</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工业</b><b class='flag-5'>开发板</b>—LVGL应用<b class='flag-5'>开发</b>案例

    国产开发板—米尔T113-i如何实现ARM+RISC-V+DSP协同计算?

    、实时性要求差异大,单一架构无法满足所有需求。因此米尔推出MYD-YT113i开发板(基于T113-i)来应对这一市场需求。 米尔基于
    发表于 03-21 16:50

    【正点原子】T113-i开发板资料震撼来袭!异开发、工控设计方案!

    、高可靠性、低成本和丰富的接口资源,适用于嵌入式系统开发T113-i芯片框架 一、T113IS开发板介绍 1、高性价比主控
    发表于 03-13 15:37

    哇!5.2秒进入应用界面!Linux快速启动方案分享,基于T113-i国产平台

    T113-i国产平台优势 T113-i处理器可运行Linux操作系统、Qt炫酷图形界面,并可支持1080P高清视频编解码、4G大数据
    发表于 01-23 09:53

    T113-S3开发板网络通信

    电子EVM-T113-S3是一款基于T113-S3ARMCortex-
    的头像 发表于 12-26 08:32 ?1352次阅读
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113</b>-S3<b class='flag-5'>开发板</b>网络<b class='flag-5'>通信</b>

    国产RISC-V案例分享,基于T113-i异构多核平台!

    RISC-V核心优势T113-i是一款Cortex-A7@1.2GHz
    发表于 10-29 09:47

    基于T113-i多核异构处理器的全国产嵌入式核心简介

    嵌入式核心。ECK30系列核心可广泛应用于工业控制、HMI、IoT等领域。 公司的T113-i
    的头像 发表于 10-25 13:40 ?1217次阅读

    国产RISC-V基于T113-i异构多核平台

    T113-i是一款Cortex-A7@1.2GHz
    发表于 10-10 22:08

    哇!0.8秒启动!Linux快速启动方案分享,T113-i国产平台!

    本文主要介绍基于创龙科技TLT113-EVM评估(基于T113-i)的系统快速启动方案,适用开发
    发表于 08-22 11:54