国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—RISC-V案例开发手册(下)

电子说

1.4w人已加入

描述

uart_echo案例


案例功能

实现RS485 UART1串口的回显功能。RISC-V核心等待RS485 UART1串口输入字符,再通过RS485 UART1串口终端回显输入的字符。
 

RISC-V图 23

案例测试

在U-Boot命令行执行如下命令,关闭设备树UART1和UART2配置。

备注:此修改方法重启评估板后会失效。

Target# fdt set /soc/uart@2500400 status disabled

Target# fdt set /soc/uart@2500800 status disabled

Target# boot

RISC-V图 24

将本案例bin目录下的可执行文件amp_rv0.bin拷贝至评估板系统的"/lib/firmware/"目录下,执行如下命令,启动RISC-V核心并加载工程镜像。

Target# echo amp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware //指定加载的工程镜像

Target# echo start > /sys/class/remoteproc/remoteproc1/state //启用RISC-V核心并加载工程镜像

RISC-V图 25

RISC-V核心启动后将自动运行程序,在串口调试终端输入字符后按回车,RS485 UART1串口终端将会对输入字符进行回显,并打印如下类似信息。

RISC-V图 26

RS232 UART2调试串口终端将会打印如下类似信息。

RISC-V图 27

执行如下命令,关闭RISC-V核心,程序将停止运行。

Target# echo stop > /sys/class/remoteproc/remoteproc1/state

RISC-V图 28

案例编译

请将案例src文件夹拷贝至Ubuntu工作目录下,执行如下命令,更换sys_config.fex文件,添加RS485 UART1支持。

备注:由于实现RS485 UART1串口的回显功能需要修改sys_config.fex文件,添加RS485 UART1支持。我司提供的sys_config.fex已添加RS485 UART1支持,详情请查看“关键代码”小节。

Host# cd /home/tronlong/T113/tina5.0_v1.0/rtos/

Host# cp board/t113_i_c906/evb1_auto/configs/sys_config.fex board/t113_i_c906/evb1_auto/configs/sys_config-back.fex

Host# cp /home/tronlong/Demo/risc-v-demos/uart_echo/src/sys_config.fex board/t113_i_c906/evb1_auto/configs/sys_config.fex

RISC-V图 29

修改完成后,请根据工程编译、程序固化步骤生成工程镜像。

关键代码

1.UART1初始化,创建线程,开始线程。

RISC-V图 30 main.c

2.设置串口波特率为115200,数据位为8位,1位停止位,无奇偶校验,并关闭流控制。

RISC-V图 31 main.c

3.串口任务。

RISC-V图 32 main.c

4.添加RS485 UART1支持。

RISC-V图 33 sys_config.fex

spi_rw案例

案例功能

主要演示T113-i(RISC-V)与Spartan-6(FPGA)处理器之间的SPI通信。案例源码位于“4-软件资料Demorisc-v-demosspi_rw”目录下。

RISC-V实现SPI Master功能,具体如下:

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

选择模式为单线模式。

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

打印发送和接收速率。

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

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

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

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

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

RISC-V图 34 RISC-V程序流程图

案例测试

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

RISC-V图 35

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

RISC-V图 36

RISC-V图 37

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

RISC-V

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

RISC-V图 38

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

评估板上电启动,在U-Boot命令行执行如下命令,关闭UART1节点并删除usb0_vbus节点GPIO配置。

备注:此修改方法重启评估板后会失效。

Target# fdt set /soc/uart@2500400 status disabled

Target# fdt rm /usb0-vbus gpio

Target# boot

RISC-V图 39

将本案例bin目录下的可执行文件amp_rv0.bin拷贝至评估板系统的"/lib/firmware/"目录下,执行如下命令,启动RISC-V核心并加载工程镜像。

Target# echo amp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware //指定加载的工程镜像

Target# echo start > /sys/class/remoteproc/remoteproc1/state //启用RISC-V核心并加载工程镜像

RISC-V图 40

RISC-V核心启动后将自动运行RISC-V程序,RS232 UART2串口终端将会打印如下类似信息。

RISC-V图 41

在RS232 UART2串口终端,点击回车键,执行如下命令查询程序命令参数。

Target# spi_rw -h

RISC-V图 42

功能测试

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

Target# spi_rw -s 5000000 -OH -m 1 -S 2048 -c 2

参数解析:

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

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

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

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

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

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

RISC-V图 43

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

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

案例编译

将案例src源码目录拷贝至Ubuntu工作目录下,进入源码目录。执行如下命令,拷贝src源码目录下的spi_rw文件夹到LinuxSDK目录"rtos/lichee/rtos-hal/hal/test/"下。

Target# cd /home/tronlong/T113/tina5.0_v1.0/rtos/

Target# cp -r /home/tronlong/Demo/risc-v-demos/spi_rw/src/spi_rw/ lichee/rtos-hal/hal/test/

RISC-V图 44

执行如下命令,修改LinuxSDK目录"rtos/lichee/rtos-hal/hal/test/"下的Makefile。

Target# vi lichee/rtos-hal/hal/test/Makefile

RISC-V图 45

添加如下内容:

obj-y += spi_rw/ //编译完成后请将该内容注释,否则可能影响其他案例编译

RISC-V图 46

执行如下命令,备份并更换位于案例src源码目录下的sys_config.fex文件,添加SPI1支持。

备注:我司提供的sys_config.fex已添加SPI1支持,详情请查看“关键代码”小节。

Host# cp board/t113_i_c906/evb1_auto/configs/sys_config.fex board/t113_i_c906/evb1_auto/configs/sys_config-back.fex

Host# cp /home/tronlong/Demo/risc-v-demos/spi_rw/src/sys_config.fex board/t113_i_c906/evb1_auto/configs/sys_config.fex

RISC-V图 47

修改完成后,请根据工程编译、程序固化步骤生成工程镜像。

RISC-V关键代码

1.单线模式。

RISC-V图 48 spi_rw.c

2.配置SPI总线。

RISC-V图 49 spi_rw.c

3.SPI传输功能实现。

RISC-V图 50 spi_rw.c

4.添加SPI1支持。

RISC-V图 51 sys_config.fex


审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分