原创 嵌入式ARM端测试手册——全志T3+Logos FPGA开发板(上)

2023-3-1 13:55 818 5 5 分类: MCU/ 嵌入式
前 言

本指导文档适用开发环境:

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

Linux开发环境:Ubuntu18.04.4 64bit

虚拟机:VMware15.5.5

进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装SecureCRT串口调试终端、VMware虚拟机等相关软件。

本文档主要提供开发板的硬件资源测试方法。无特殊说明情况下,默认使用USB TO UART0作为调试串口,使用Linux系统启动卡(Micro SD方式)启动系统,通过路由器与PC机进行网络连接。

本文测试板卡为创龙科技TLT3F-EVM开发板,它是一款基于全志科技T3四核ARM Cortex-A7 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核国产工业开发板,ARM Cortex-A7处理器单元主频高达1.2GHz。评估板由核心板和评估底板组成,核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。

评估板接口资源丰富,引出三路网口、三路USB、双路CAN、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出LVDS LCD、TFT LCD、MIPI LCD、CVBS OUT、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、Mali400 MP2 GPU、1080P@45fps H.264视频硬件编解码,并支持SATA大容量存储接口,方便用户快速进行产品方案评估与技术预研。

系统启动测试

接入电源,并使用Type-C线连接PC机和评估板的USB TO UART0调试串口。打开设备管理器,确认评估板USB TO UART0调试串口对应的COM端口号。

图 1

图 2

打开串口调试终端SecureCRT,选择对应的COM端口号,设置波特率为115200,8N1,无校验位。建立串口连接,如下图所示。

图 3

将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为0(并非拨码开关上文字),此档位将优先从Linux系统启动卡中启动系统。将评估板上电启动,系统将会自动登录root用户,串口终端会打印如下类似启动信息。

图 4

图 5

备注:由于我司提供的Linux系统保留了部分官方驱动配置,且实际未使用到相关驱动的部分功能,因此在内核启动过程中,驱动会打印"OF: no ranges;cannot translate"、"failed to get normal led pin assign"等类似警告信息。此类警告信息不会影响系统的正常运行,请忽略即可。

图 6

核心板LED在系统启动过程中的变化说明如下:

评估板上电后,电源指示灯LED0点亮;随后U-Boot第一阶段启动,LED1点亮;紧接着U-Boot第二阶段启动,LED2点亮;直至内核启动运行时,LED2熄灭,LED1进行心跳闪烁;eMMC进行读写时,LED2闪烁。

图 7
文件传送测试

PC机和评估板之间传送文件的常见方式如下:

  1. 通过Linux系统启动卡、U盘等存储介质方式拷贝。
  2. 通过NFS、TFTP、OpenSSH等网络方式拷贝。
通过Linux系统启动卡

将配套的系统启动卡通过读卡器插至PC机挂载至虚拟机Ubuntu系统,如下图,查询系统启动卡设备节点,其中"/dev/sdb7"为Linux系统启动卡文件系统分区,具体以实际名称为准。

图 8

执行如下命令,将"/dev/sdb7"设备节点挂载至"/mnt/"目录下。

Host# sudo mount /dev/sdb7 /mnt

Host# ls /mnt/

图 9

执行如下命令在Ubuntu中新建文件test0,将test0文件拷贝至评估板文件系统root目录。

Host# touch test0

Host# sudo cp test0 /mnt/root/

图 10

文件拷贝完成后,请执行如下命令卸载设备,并拔出读卡器,从中取出Linux系统启动卡。

Host# sudo umount /dev/sdb7

图 11

将Linux系统启动卡插至评估板Micro SD卡槽,评估板上电启动即可查看root目录下的文件。

Target# ls

图 12
通过OpenSSH

OpenSSH是SSH(Secure Shell)协议的免费开源实现。SSH协议族可用来进行远程控制,或在计算机之间传送文件,评估板文件系统默认已支持SSH库。

在Ubuntu中执行如下命令,查询是否已安装OpenSSH。

Host# ssh -v

图 13

可看到系统已自带OpenSSH。如未安装,请先自行正确安装OpenSSH。

将评估板ETH0 RGMII网口通过网线连接至路由器。在评估板上执行如下命令可自动获取到IP,如下图所示。"-i"用于指定网卡,eth0为网卡名字,请根据实际情况修改。

Target# udhcpc -i eth0

图 14

执行如下命令可查询IP地址。本次查询到的IP地址是192.168.0.87。

Target# ifconfig

图 15

使用OpenSSH从PC机传送文件至评估板

执行如下命令在Ubuntu中新建文件test1,并使用OpenSSH命令将test1文件拷贝至评估板文件系统根目录。

Host# touch test1 //新建文件

Host# scp test1 root@192.168.0.87:/

图 16

如出现提示"Are you sure you want to continue connecting (yes/no)?",请输入:yes。

在评估板上执行如下命令可看到从PC机拷贝过来的文件,如下图所示。

Target# ls /

图 17

  1. 使用OpenSSH从评估板传送文件至PC机

执行如下命令在评估板文件系统根目录新建一个测试文件test2。

Target# cd /

Target# touch test2 //新建文件

图 18

在Ubuntu上执行如下OpenSSH命令将评估板测试文件test2拷贝至PC机"/home/tronlong/"目录下。如传输的是文件夹,请在scp后面添加参数"-r"。

Host# sudo scp root@192.168.0.87:/test2 /home/tronlong/

Host# ls

图 19

  1. 使用OpenSSH登录到评估板文件系统

在Ubuntu执行如下命令可通过OpenSSH登录评估板文件系统。

Host# sudo ssh root@192.168.0.87

图 20

如需退出登录,请执行exit或者logout命令。

LED测试

评估底板LED1、LED2与GPIO对应关系如下表所示,系统启动后默认点亮。

表 1

LED1

LED2

PB4

PB10

进入评估板文件系统,执行如下命令逐盏熄灭、点亮LED。

Target# echo 0 > /sys/class/leds/user-led0/brightness //控制LED1灭

Target# echo 1 > /sys/class/leds/user-led0/brightness //控制LED1亮

Target# echo 0 > /sys/class/leds/user-led1/brightness //控制LED2灭

Target# echo 1 > /sys/class/leds/user-led1/brightness //控制LED2亮

图 21

按键测试

评估底板包含3个用户按键:USER0(KEY3)、USER1(KEY4)、USER2(KEY5)。进入评估板文件系统,执行如下命令查看用户按键对应的事件号。其中USER0(KEY3)和USER1(KEY4)对应的按键事件号为event1,USER2(KEY5)对应的按键事件号为event5。

Target# cat /proc/bus/input/devices

图 22

执行如下命令,分别按下USER0(KEY3)和USER1(KEY4)进行按键测试,可看到如下打印信息,其中"0094"表示USER0(KEY3),"0095"表示USER1(KEY4),按"Ctrl + C"可终止测试命令。

Target# od -x /dev/input/event1

图 23

执行如下命令,按下USER2(KEY5)进行按键测试,可看到如下打印信息,"00ca"表示USER2(KEY5),按"Ctrl + C"可终止测试命令。

Target# od -x /dev/input/event5

图 24
时钟设置测试

Linux系统中分系统时钟(软件时钟)和RTC时钟(硬件时钟),系统时钟掉电即会消失,RTC时钟在安装电池的情况下会长期运行。

如需使用外部RTC时钟,请先安装RTC电池。如下为时钟相关的常用命令。

查看系统时钟

Target# date

图 25

查看RTC时钟

Target# hwclock -u

图 26

设置系统时间

Target# date -s "2023-01-01 8:30:00" //设置时间:2023年1月1日8点30分00秒

Target# date

同步系统时钟至RTC时钟

Target# hwclock --systohc -u

Target# hwclock -u

同步系统和RTC的时钟

执行指令后,系统会同步RTC时钟作为系统时钟。

Target# hwclock --hctosys -u

图 29
DDR读写测试

DDR读写速度受实际情况影响,测试速率以具体情况为准,如下测试数据仅供参考。

DDR读速度测试

进入评估板系统,执行如下命令对DDR进行读速度测试。

Target# bw_mem 100M rd

图 30

测试从DDR中读取100MByte数据,可看到本次测试的读速度为1205.46MB/s。

DDR写速度测试

进入评估板系统,执行如下命令对DDR进行写速度测试。

Target# bw_mem 100M wr

图 31

测试写入100MByte数据至DDR中,可看到本次测试的写速度为560.64MB/s。

DDR拷贝速度测试

进入评估板系统,执行如下命令对DDR进行拷贝速度测试。

Target# bw_mem 100M cp

图 32

测试拷贝100MByte数据至DDR中,可看到本次测试的拷贝速度为281.57MB/s。

Micro SD接口读写测试

本小节使用SanDisk品牌、128GByte容量的Micro SD卡来测试评估板Micro SD接口性能。请参考《Linux系统启动卡制作及系统固化》文档将其制作成Linux系统启动卡再进行测试。不同的Micro SD卡以及不同的测试方法,对Micro SD接口测试结果将造成一定差异。

请先取出Linux系统启动卡,根据底板丝印将启动方式选择拨码开关拨为0,将评估板上电,系统将从eMMC启动,再将Linux系统启动卡插入评估板Micro SD卡槽。进入评估板文件系统执行如下命令查看Micro SD卡信息。

Target# fdisk -l

图 33

Micro SD接口写速度测试

进入评估板系统,执行如下命令测试Micro SD接口写速度。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# mkdir -p /run/media/mmcblk1p7

Target# mount /dev/mmcblk1p7 /run/media/mmcblk1p7

Target# time dd if=/dev/zero of=/run/media/mmcblk1p7/test bs=1024K count=500

time命令有计时作用,dd用于复制,从if(input file)文件读出,写到of(output file)指定的文件,bs是每次写块的大小,count是读写块的数量。

"if=/dev/zero"不产生IO,即不断输出数据,可用来测试纯写速度。

图 34

此处一共写500MByte测试数据至Micro SD卡的test文件,可看到本次测试的Micro SD接口写速度约为:500MB/28.169s = 17.733MB/s。

Micro SD接口读速度测试

执行如下命令测试Micro SD接口读速度。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# time dd if=/run/media/mmcblk1p7/test of=/dev/null bs=1024K

"of=/dev/null"不产生IO,即不断接收数据,可用来测试纯读速度。

图 35

此处从test文件一共读出500MByte的数据,可看到本次测试的Micro SD接口读速度约为:500MB/27.727s = 18.032MB/s。

eMMC读写测试

将Linux系统启动卡插入评估板Micro SD卡槽,评估板上电启动完成后,执行如下命令查看信息。

Target# fdisk -l

图 36

eMMC写速度测试

执行如下命令对eMMC设备进行写速度测试。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# mkdir -p /run/media/mmcblk0p7

Target# mount /dev/mmcblk0p7 /run/media/mmcblk0p7

Target# time dd if=/dev/zero of=/run/media/mmcblk0p7/test bs=1024K count=500

图 37

此处一共写500MByte测试数据至eMMC设备,可看到本次测试的eMMC设备写速度约为500MB/12.301s = 40.647MB/s。

(2)eMMC读速度测试

执行如下命令对eMMC设备进行读速度测试。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# time dd if=/run/media/mmcblk0p7/test of=/dev/null bs=1024K

图 38

此处从eMMC设备中一共读出500MByte数据,可看到本次测试的eMMC设备读速度约为500MB/12.617 = 39.629MB/s

SPI FLASH读写测试

本小节对SPI FLASH的MTD0分区进行读写速度测试。SPI FLASH由ARM端和FPGA端共同控制,因此在测试之前,需停止FPGA端控制,并配置SPI总线工作模式,使SPI与SPI FLASH通信。

执行如下命令,停止FPGA端控制,然后安装SPI FLASH驱动。

Target# echo 68 > /sys/class/gpio/export

Target# echo out > /sys/class/gpio/gpio68/direction

Target# echo 0 > /sys/class/gpio/gpio68/value //停止FPGA的控制

Target# echo 69 > /sys/class/gpio/export

Target# echo out > /sys/class/gpio/gpio69/direction

Target# echo 1 > /sys/class/gpio/gpio69/value //使能SPI与SPI FLASH通信

Target# depmod -a

Target# modprobe m25p80

图 39

执行如下命令,查看FLASH分区如下图所示。

Target# cat /proc/mtd

图 40

执行如下命令,拷贝文件至该分区,测试分区功能是否正常。

Target# time dd if=/CameraUI of=/dev/mtd0

图 41

SPI FLASH写速度测试

进入评估板系统,执行如下命令对SPI FLASH进行写速度测试。

Target# time dd if=/dev/zero of=/dev/mtd0 bs=1024K count=8

图 42

测试写入8MByte数据至SPI FLASH的MTD0分区下,可看到本次测试的SPI FLASH写速度约为:8MByte/19.248s = 0.415MB/s。

SPI FLASH读速度测试

重启评估板,进入评估板系统,执行如下命令对SPI FLASH进行读速度测试。

Target# time dd if=/dev/mtd0 of=/dev/null bs=1024K

图 43

测试从SPI FLASH的MTD0分区读取8MByte数据,可看到本次测试的SPI FLASH读速度约为:8MByte/1.382s = 5.788MB/s。

SATA接口测试

本章节使用三星品牌、120GByte容量的SATA接口SSD固态硬盘(以下简称“SATA硬盘”)并划分一个FAT32格式20GByte容量的分区测试SATA接口。请将SATA硬盘通过数据线连接至评估底板SATA接口。

进入评估板文件系统,执行如下命令可查询到SATA硬盘设备节点为sda1,容量为20GByte。挂载多个存储设备时,挂载名可能会变更,请以实际查询为准。

Target# fdisk -l

Target# df -h

图 44
图 45

写速度测试

执行如下命令,测试SATA接口写速度。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# time dd if=/dev/zero of=/mnt/usb/sda1/test bs=1024K count=1000

图 46

此处一共写1000MByte测试数据至SATA硬盘,可看到本次测试的SATA接口写速度约为1000MB/30.119s = 33.201MB/s。

读速度测试

执行如下命令,测试SATA接口读速度。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# time dd if=/mnt/usb/sda1/test of=/dev/null bs=1024K

图 47

此处从SATA硬盘中一共读出1000MByte的数据,可看到本次测试的SATA接口读速度为1000MB/5.326s = 187.758MB/s。

USB接口读写测试USB HOST模式测试

本章节进行USB HOST模式读写测试,使用SanDisk品牌、FAT32格式、16GByte容量的U盘,支持USB3.0/2.0。不同品牌、格式或容量的U盘,测试结果会有所差别。

请通过Type-C转接头将U盘与评估板USB0 OTG接口连接,或直接将U盘与评估板USB1 HOST(双层)任意一个HOST接口连接。如下测试以USB1 HOST接口为例,其余接口方法一致,将U盘插至评估板USB1 HOST接口后,出现如下打印信息,可以从中看到U盘大小、挂载名等,如下图所示。出现如下信息说明正确识别到设备。

图 48

执行如下命令可查询挂载路径。挂载名和挂载路径请以实际查询为准,如下图所示。

Target# df -h

图 49

备注:USB0 OTG默认是DEVICE模式,测试USB HOST模式时,需将USB0 OTG修改为USB HOST模式。请执行如下命令,修改adb.sh文件,在文件最后一行添加内容"cat /sys/bus/platform/devices/usbc0.2/usb_host"。

Target# vim /adb.sh

图 50
图 51

写速度测试

执行如下命令,测试USB接口写速度。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# time dd if=/dev/zero of=/mnt/usb/sda1/test bs=1024K count=200

图 52

此处一共写200MByte测试数据至U盘,可看到本次测试的USB接口写速度约为:200MB/15.218s = 13.142MB/s。

读速度测试

执行如下命令,测试USB接口读速度。

Target# echo 3 > /proc/sys/vm/drop_caches

Target# time dd if=/mnt/usb/sda1/test of=/dev/null bs=1024K

图 53

此处从USB接口读取200MByte数据,可看到本次测试的USB接口读速度约为200MB/12.617s = 15.851MB/s。

USB DEVICE模式测试

本小节测试仅支持USB0 OTG接口,USB0 OTG默认是DEVICE模式,请通过Type-C线将PC机与评估板的USB0 OTG(CON17)接口进行连接。

执行如下指令,将系统boot-resource分区(mmcblk1p2)虚拟化为U盘,PC机将识别该U盘。

Target# echo /dev/mmcblk1p2 > /sys/class/android_usb/f_mass_storage/lun/file

Target# cat /sys/bus/platform/devices/usbc0.2/otg_role //查看当前USB模式

图 54

图 55

将U盘中的图片bootlogo.bmp拷贝至PC机中,在PC机查看图片是否正常显示,接着再把图片从电脑拷贝至U盘。

图 56

PC机可正常识别boot-resource分区虚拟化的U盘,并能正常查看boot-resource分区文件与正常读写,说明USB DEVICE功能正常。

串口测试TTL UART6、TTL UART7串口

使用TTL转Micro USB模块,将评估板的TTL UART6(CON7)或TTL UART7(CON8)串口连接至PC机的USB接口。本小节以TTL UART6(CON7)串口为例(设备节点为:ttyS6)进行演示。如需测试TTL UART7(CON8)串口,请将设备节点修改为ttyS7。

打开设备管理器,本次测试中调试串口USB TO UART0端口号为COM9,TTL UART6串口的端口号为COM4,如下图所示。

图 57

打开串口调试终端,COM4、COM9波特率设为115200,8N1,无校验位,并建立串口连接,如下图所示。

图 58

发送测试

进入评估板文件系统,执行如下命令,设置TTL UART6串口。

Target# stty -F /dev/ttyS6 ispeed 115200 ospeed 115200 cs8 //设置串口波特率

Target# echo tronlong > /dev/ttyS6

图 59

图 60

接收测试

执行如下命令,由调试串口向TTL UART6串口发送数据,TTL UART6串口对应的串口调试终端将显示接收到的数据,按"Ctrl + C"可终止测试命令。

Target# cat /dev/ttyS6 //等待接收UART6串口数据

图 61

图 62
RS232 UART3串口

使用RS232交叉串口母母线、USB转RS232公头串口线,将评估板的RS232 UART3串口连接至PC机的USB接口。

打开设备管理器,本次测试中调试串口USB TO UART0端口号为COM9,RS232 UART3串口的端口号为COM12,如下图所示。

图 63

打开串口调试终端,COM9、COM12波特率设为115200,8N1,无校验位,并建立串口连接,如下图所示。

图 64

发送测试

进入评估板文件系统,执行如下命令,由调试串口向RS232 UART3串口发送数据,RS232 UART3串口对应的串口调试终端将显示接收到的数据。

Target# stty -F /dev/ttyS3 ispeed 115200 ospeed 115200 cs8 //设置串口波特率

Target# echo tronlong > /dev/ttyS3

图 65

图 66

接收测试

执行如下命令,并在RS232 UART3串口输入数据,调试串口对应的串口调试终端将显示接收到的数据,按"Ctrl + C"可终止测试命令。

Target# cat /dev/ttyS3 //等待接收RS232 UART3串口数据

图 67

图 68
RS485 UART4、RS485 UART5串口

使用RS232转RS485模块、USB转RS232公头串口线,将评估板的RS485 UART4或RS485 UART5串口连接至PC机的USB接口。

RS232转RS485模块与评估板RS485串口连接方法如下:

  1. RS232转RS485模块485+端子,连接评估板RS485串口A端子。
  2. RS232转RS485模块485-端子,连接评估板RS485串口B端子。
  3. RS232转RS485模块GND端子,连接评估板RS485串口GND1端子。

本章节以RS485 UART4串口(设备节点为:ttyS4)为例进行演示。如需测试RS485 UART5串口,请将设备节点修改为ttyS5。

打开设备管理器,本次测试中调试串口USB TO UART0端口号为COM9,RS485 UART4串口的端口号为COM12,如下图所示。

图 69

打开串口调试终端,COM9、COM12波特率设为115200,8N1,无校验位,并建立串口连接,如下图所示。

图 70

发送测试

进入评估板文件系统,执行如下命令进行调试串口与RS485 UART4串口互发数据。RS485 UART4串口测试步骤、现象与RS232串口类似。

Target# stty -F /dev/ttyS4 ispeed 115200 ospeed 115200 cs8 //设置波特率

Target# echo tronlong > /dev/ttyS4 //向RS485 UART4串口发送数据

图 71
图 72

接收测试

执行如下命令,并在RS458 UART4串口输入数据,调试串口对应的串口调试终端将显示接收到的数据,按"Ctrl + C"可终止测试命令。

Target# cat /dev/ttyS4 //等待接收RS485 UART4串口数据

图 73

图 74

作者: Tronlong, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3881012.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条