T536主板的TF卡的使用与性能测试-盈鹏飞嵌入式

CoM-T536产品特性:

  • 采用Allwinner公司Cortex-A55四核T536处理器,最高速度为1.6GHZ;
  • 支持2TOPS NPU,仅特定型号支持;
  • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
  • 支持1-4G Bytes LPDDR4 SDRAM;
  • 支持EMMC 4G-64G大容量电子盘,可启动;或支持SPI NAND启动;
  • 支持双通道LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI显示, 分辨率最高1920x1020@60fps;
  • 支持PCIE2.1;支持最多17路UART;支持四路CANFD;支持双路千兆以太网;
  • 稳定的操作系统的支持,可预装LINUX 5.10/Ubuntu 20.04
  • 邮票孔198POS设计, 尺寸为:53.5*45MM

CoM-T536功能图:

image

STK-T536评估板功能图:

image

3.6、Micro SD卡数据存储

MicroSD Card,原名 Trans-flash Card(TF卡),MicroSD卡是一种极细小的快闪存储器卡。MicroSD卡相比标准SD卡,外形上更加小巧,是SD卡类型中尺寸最小的一种SD卡。尽管MicroSD卡的外形大小及接口形状与原来的SD卡有所不同,但接口规范保持不变,确保了兼容性。截止目前为止,Micro SD卡有如下几种类型:
image

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卡身材越来越小、容量越来越大、速度越来越快、规格标识越来越透明。但是当看到卡的时候,还是让人眼花缭乱。同时,主控制器的SD卡接口符合哪个一个标准,这也决定了卡读写的速度。以下是T536规格书中针对于TF卡接口的描述:
The SMHC0 controls the devices that comply with the protocol Secure Digital Memory (SD mem-version 3.0)
image

image

从这个信息可以看出来,T536的SD接口符合SD 3.0的标准,因此最高的性能是SDR mode 200Mhz。根据这个链接上的信息和以下关于读写速度的对应表,基本可以判断T536读的速度超过SDR104MB/s。
image

下表是速度等级标识(Speed Class)
备注:代表持续稳定的最低写入速度(即视频文件最低写入速度)。

image

以下是本次测试用卡的实际图片,可以看到它是一个来自SANDISK品牌,容量为32GB的卡,它符合的标准是SDHC(UHS-I)标准,写速度等级是10MB/s。
image

1) 插入TF卡后的终端信息如下:

点击查看代码
[   98.106177] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 0Hz bm PP pm OFF vdd 0 width 1 timing LEGACY(SDR12) dt B
[  134.648748] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 0Hz bm PP pm UP vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.661771] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: no vqmmc,Check if there is regulator
[  134.683661] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.697207] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.718599] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.732019] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.743742] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.757162] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.768396] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.781983] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.794233] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.808682] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.875697] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 0Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.888733] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: no vqmmc,Check if there is regulator
[  134.910676] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 1 timing LEGACY(SDR12) dt B
[  134.924324] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.942299] mmc0: host does not support reading read-only switch, assuming write-enable
[  134.951919] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 4 timing LEGACY(SDR12) dt B
[  134.965331] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.975741] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 400000Hz bm PP pm ON vdd 23 width 4 timing UHS-SDR104 dt B
[  134.988840] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  134.997620] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: sdc set ios:clk 150000000Hz bm PP pm ON vdd 23 width 4 timing UHS-SDR104 dt B
[  135.011088] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: used kernel tuning, delay = 32
[  135.019846] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: start tuning, tuning clk = 150000000  opcode=19
[  135.030260] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: ----speed mode = 6
[  135.077811] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: tuning section:
[  135.077820] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: [0-10|11]
[  135.085230] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: [16-53|38]
[  135.092057] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: [60-63|4]
[  135.098967] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]:
[  135.111611] sunxi:sunxi_mmc_host-4020000.sdmmc:[INFO]: tuning result: 16 - 53,  best: 35
[  135.120701] mmc0: new ultra high speed SDR104 SDHC card at address 5048
[  135.129432] mmcblk0: mmc0:5048 SD32G 29.7 GiB
[  135.137163]  mmcblk0: p1 p2

可以看到“mmc0: new ultra high speed SDR104 SDHC card at address 5048”信息,这个信息表示这张卡是一张高速的超高速卡。另外看到的信息是“mmcblk0: mmc0:5048 SD32G 29.7 GiB”,这个信息表示它的容量是29.7GiB,其实它是一张标称32GB的卡(容量少的原因用户可自行baidu)。
2)查看TF卡容量
通过fdisk-l命令可以查询到TF卡分区信息及容量:

点击查看代码
root@T536-embfly:~# fdisk -l
Disk /dev/mmcblk0: 29.73 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/mmcblk0p1       8192 62357503 62349312 29.7G  c W95 FAT32 (LBA)

从以上信息可得知该TF卡只有一个分区。如果是两个分区,还应该存在/dev/mmcblk0p2节点,依次类推。
3)可通过df -h命令可以查询到TF卡挂载情况:

点击查看代码
root@T536-embfly:/# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 1.9G    601.9M      1.3G  31% /
tmpfs                   972.3M         0    972.3M   0% /dev/shm
tmpfs                   974.7M    268.0K    974.5M   0% /tmp
tmpfs                   974.7M    352.0K    974.4M   0% /run
devtmpfs                972.3M         0    972.3M   0% /dev
/dev/mmcblk2p1          127.7M      5.3M    122.4M   4% /media/mmcblk2p1
/dev/mmcblk2p6            5.0G      4.0K      5.0G   0% /media/mmcblk2p6
cgroup                  974.7M         0    974.7M   0% /sys/fs/cgroup
/dev/root                 1.9G    601.9M      1.3G  31% /var/lib/docker
/dev/mmcblk0p1           29.7G      2.1G     27.6G   7% /media/mmcblk0p1

从以上信息可以看到TF卡已经自动挂载到/media/mmcblk0p1目录。
4) TF卡的性能测试
性能测试主要测试linux系统下往TF卡中写入文件的速度和从TF卡中读文件的速度,当测试往TF卡写入文件时,要先进入TF卡的挂载目录。
备注:一般是通过dd+time指令来判断TF卡的性能。可先通过dd --help命令查看dd指令支持的相关参数。

  • 写文件测试
    Target# time dd if=/dev/zero of=tempfile bs=1M count=100 conv=fsync //写入100M数据
点击查看代码
root@T536-embfly:/media/mmcblk0p1$
0 conv=fsync2x:/media/mmcblk0p1$ time dd if=/dev/zero of=tempfile bs=1M count=100
100+0 records in
100+0 records out

real    0m6.369s
user    0m0.000s
sys     0m1.261s
root@T536-embfly:/media/mmcblk0p1$

从信息上可以看到,写入100MB的数据,实际用时为6.369s,通过计算得出写磁盘速度为15.7MB/s(该数据仅供参考)。

  • 读文件测试(把文件读到内存),测试指令如下:
    Target# echo 3 > /proc/sys/vm/drop_caches //清除缓存
    Target# time dd if=tempfile of=/dev/null bs=1M //读100MB数据,tempfile是刚刚写入的
点击查看代码
root@T536-embfly:/media/mmcblk0p1$ echo 3 > /proc/sys/vm/drop_caches
[  409.963972] sh (536): drop_caches: 3
root@T536-embfly:/media/mmcblk0p1$  time  dd if=tempfile of=/dev/null bs=1M
100+0 records in
100+0 records out

real    0m1.538s
user    0m0.000s
sys     0m0.149s
root@T536-embfly:/media/mmcblk0p1$

从以下信息得知,通过“echo 3 > /proc/sys/vm/drop_caches“指令清除缓存后,从SD卡读数据tempfile(这个文件是在测试写文件速度时建立的100M的文件)用时1.538s,经过计算得出来的速度是65MB/s,该数据仅供参考。

posted @ 2026-04-17 15:55  embfly168  阅读(28)  评论(0)    收藏  举报