SBC-T113产品特性:
• 采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ;
• 内置64位玄铁C906 RISC-V CPU和 DSP,提供高效的计算能力;
• 支持1080P 视频编码,多格式1080P 60fps视频解码 (H.265,H.264, MPEG-1/2/4)
• 支持LVDS/MIPI-DSI,分辨率最高1920x1080;
• 支持512-1G Bytes DDR3 SDRAM;
• 支持SPI NAND启动和存储(256MB默认;512MB可选);可选EMMC启动和存储( 4G默认;8GB可选);
• 支持4路USB2.0 HOST和1路OTG,1路I2C,6路UART(RS232), 1路PWM(应用于背光)
• 支持双路CAN BUS通信
• 支持双路以太网,一路10/100M;一路10/100/1000M;
• 标准3.5寸主板, 尺寸为:146*102MM
SBC-T113功能评估图:
以下为Micro SD 卡数据存储:
MicroSDCard,原名Trans-flash Card(TF卡),MicroSD卡是一种极细小的快闪存储器卡。MicroSD卡相比标准SD卡,外形上更加小巧,是SD卡类型中尺寸最小的一种SD卡。尽管MicroSD卡的外形大小及接口形状与原来的SD卡有所不同,但接口规范保持不变,确保了兼容性。截止目前为止,Micro SD卡有如下几种类型:
类型实际图片存储容量说明
2000年(V1.01):SD卡横空出世,初始版本总线带宽为12.5MB/s,文件系统为FAT12/16,容量上限为2GB。
▲2004年(V1.10):推出高速总线,带宽翻倍至25MB/s。
▲2005年(V1.20):microSD卡魔童降世,身材更苗条,生态更广阔。
2006年(V2.00):推出SDHC标准,文件系统更新为FAT32,容量上限提升至32GB,并首次发布速度等级标识(Class 2、Class 4、Class 6)。
▲2009年(V3.00):推出SDXC标准,文件系统更新为exFAT,容量上限提升至2TB,并拓展速度等级至Class 10。
▲2010年(V3.01):推出UHS-I总线,带宽飙升至104MB/s,并发布UHS速度等级标识U1。
▲2011年(V4.00):推出UHS-II总线,带宽提升两倍至312MB/s。
▲2013年(V4.20):拓展UHS速度等级至U3。
▲2016年(V5.00):发布视频速度等级标识(V6、V10、V30、V60、V90)。
▲2016年(V5.10):发布应用效能等级标识A1,关注随机读写性能。
▲2017年(V6.00):推出UHS-III总线,带宽翻倍至624MB/s,并拓展应用效能等级至A2,还发布低电压信号标识LV(然而并未推广)。
▲2018年(V7.00):推出SDUC标准,容量上限提升至128TB,同时推出吊炸天的SD Express总线,带宽提升至985MB/s。
▲2019年(V7.10):microSD卡引入SD Express总线。
二十年来,SDA让SD卡身材越来越小、容量越来越大、速度越来越快、规格标识越来越透明。但是当看到卡的时候,还是让人眼花缭乱。同时,这里还有一个疑问,T113-i(主控制器)的SD卡接口符合哪个一个标准呢?到底T113-i(主控制器)的对TF卡的读写性能如何?本处通过两点来判断,一点是T113-i的TF卡接口符合什么标准,另外一点是TF卡到底实现了什么读写性能,只有两者搭配起来才能做最后判断。以下是T113-i的规格书中针对于TF卡接口的描述:
The SMHC0 controls the devices that comply with the protocol SecureDigital Memory (SD mem-version 3.0)
从这个信息可以看出来,T113-i的SD接口符合SD3.0的标准,但是因为T113-i供电给SD接口的IO是3.3V(因处理器设计原因无法适配1.8V),因此最高的性能是DDR mode 50Mhz。那根据https://zhuanlan.zhihu.com/p/118686845这个链接上的信息和以下关于读写速度的对应表,基本可以明确的是T113-i大概读写的速度是10MB/s。
以下是本次测试用卡的实际图片,可以看到它是一个来自SANDISK品牌,容量为32GB的卡,它符合的标准是SDHC(UHS-I)标准,速度等级是10MB/s。
1)插入TF卡后的终端信息
root@T113-Embfly:/embfly_test#
[14564.155110] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 0Hz bm PP pm UPvdd 21 width 1 timing LEGACY(SDR12) dt B
[14564.166378] sunxi-mmc 4020000.sdmmc: no vqmmc,Check if there isregulator
[14564.186534] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 400000Hz bm PP pmON vdd 21 width 1 timing LEGACY(SDR12) dt B
[14564.210798] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 400000Hz bm PP pmON vdd 21 width 1 timing LEGACY(SDR12) dt B
[14564.225428] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 400000Hz bm PP pmON vdd 21 width 1 timing LEGACY(SDR12) dt B
[14564.239348] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 400000Hz bm PP pmON vdd 21 width 1 timing LEGACY(SDR12) dt B
[14564.253988] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 400000Hz bm PP pmON vdd 21 width 1 timing LEGACY(SDR12) dt B
[14564.353251] mmc1: host does not support reading read-only switch,assuming write-enable
[14564.364816] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 400000Hz bm PP pmON vdd 21 width 1 timing SD-HS(SDR25) dt B
[14564.376547] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 50000000Hz bm PPpm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
[14564.388423] sunxi-mmc 4020000.sdmmc: sdc set ios:clk 50000000Hz bm PPpm ON vdd 21 width 4 timing SD-HS(SDR25) dt B
[14564.400216] mmc1: new high speed SDHC card at address 5048
[14564.407618] mmcblk1: mmc1:5048 SD32G 29.7 GiB
[14564.418198] mmcblk1: p1
[14564.580538] FAT-fs (mmcblk1p1): Volume was not properly unmounted.Some data may be corrupt. Please run fsck.
可以看到“mmc1: new high speed SDHC card at address 5048”信息,这个信息表示这张卡是一张高速的SDHC的卡。另外看到的信息是“mmcblk1: mmc1:5048 SD32G
29.7 GiB”,这个信息表示它的容量是29.7GiB,其实它是一张标称32GB的卡(为什么容量少,用户可自行baidu)。
2)查看TF卡容量
通过fdisk-l命令可以查询到TF卡分区信息及容量:
root@T113-Embfly:/]# fdisk -l
Disk /dev/mmcblk1: 29.8 GiB, 31927042048 bytes, 62357504 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 8192 62357503 62349312 29.7G cW95 FAT32 (LBA)
3)通过df -h命令可以查询到TF卡挂载情况:
root@T113-Embfly:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 991.9M 315.6M 660.3M 32% /
tmpfs 233.7M 0 233.7M 0% /dev/shm
tmpfs 242.9M 72.0K 242.9M 0% /tmp
tmpfs 242.9M 172.0K 242.8M 0% /run
devtmpfs 233.7M 0 233.7M 0% /dev
/dev/mmcblk0p5 991.9M 315.6M 660.3M 32% /run/media/mmcblk0p5
/dev/mmcblk1p1 29.7G 1.6G 28.1G 6% /run/media/mmcblk1p1
/dev/mmcblk0p1 127.7M 4.5M 123.2M 4% /run/media/mmcblk0p1
从以上信息可以看到TF卡已经自动挂载到/run/media/mmcblk1p1目录。
4)一般是通过dd+time指令来判断TF卡的性能。因此先通过dd --help命令查看dd指令支持的相关参数。从以下信息中可以看到,该Linux系统的dd指令所带的参数中,只有设置conv=fsync这个参数时,写文件才是不带缓冲的写入,那么写入一个文件的时间才是可信赖的。
root@T113-Tronlong:/run/media/mmcblk1p1# dd --help
BusyBox v1.29.3 (2024-02-03 17:43:05 CST) multi-call binary.
Usage: dd [if=FILE] [of=FILE] [ibs=N] [obs=N] [bs=N] [count=N] [skip=N]
[seek=N][conv=notrunc|noerror|sync|fsync] [iflag=skip_bytes|fullblock]
Copy a file with converting and formatting
if=FILE Read from FILE instead of stdin
of=FILE Write to FILE instead of stdout
bs=N Read and write N bytes at a time
ibs=N Read N bytes at a time
obs=N Write N bytes at a time
count=N Copy only N input blocks
skip=N Skip N input blocks
seek=N Skip N output blocks
conv=notrunc Don't truncate output file
conv=noerror Continue after read errors
conv=sync Pad blocks with zeros
conv=fsync Physically write data out beforefinishing
conv=swab Swap every pair of bytes
iflag=skip_bytes skip=N is in bytes
iflag=fullblock Read fullblocks
status=noxfer Suppress rate output
status=none Suppress all output
5) TF卡的性能测试
性能测试主要测试linux系统下往TF卡中写入文件的速度和从TF卡中读文件的速度,当测试往TF卡写入文件时,要先进入到TF卡的挂载目录。
[if !supportLists]l [endif]写文件测试
root@T113-Embfly:/run/media/mmcblk1p1#time dd if=/dev/zero of=test_write bs=1M count=100 conv=fsync
100+0 records in
100+0 records out
real 0m6.490s
user 0m0.001s
sys 0m1.212s
root@T113-Embfly:/run/media/mmcblk1p1#
从信息上可以看到,写入100MB的数据,实际用时为6.49s,通过计算得出写磁盘速度为15.4MB/s(该数据仅供参考)。
[if !supportLists]l [endif]读文件测试(把文件读到内存)
root@T113-Embfly:/run/media/mmcblk1p1#echo 3 > /proc/sys/vm/drop_caches
[ 3165.661585] sh(1554): drop_caches: 3
root@T113-Embfly:/run/media/mmcblk1p1#
root@T113-Embfly:/run/media/mmcblk1p1# time dd if=tempfile of=/dev/null bs=1M
100+0 records in
100+0 records out
real 0m4.439s
user 0m0.000s
sys 0m0.345s
root@T113-Embfly:/run/media/mmcblk1p1# time dd if=tempfile of=/dev/null bs=1M
100+0 records in
100+0 records out
real 0m0.237s
user 0m0.000s
sys 0m0.238s
root@T113-Tronlong:/run/media/mmcblk1p1#
从以下信息得知,通过“echo 3 > /proc/sys/vm/drop_caches“指令清除缓存后,从SD卡读数据tempfile(这个文件是在测试写文件速度时建立的100M的文件)用时4.439s,经过计算得出来的速度是22MB/s;第二次再运行“time dd if=tempfile of=/dev/nullbs=1M”指令时,实际上因第一次运行该指令时已经将数据读的是缓冲区,因此第二次执行读的速度要比第一次快。