CS创世SD NAND与MicroSD谁更快?
开篇说明
在嵌入式开发与应用过程中,总是会涉及到数据存储的问题,例如以下几个场景:
用于设备开机参数配置的数十个Byte的配置数据,这些数据可以存储在MCU内部的Flash或者EEPROM中,也可以存储在片外,诸如AT24Cxx,BL24Cxx这类EEPROM芯片中。
系统显示设备所需要的字库,图片,或者设备在运行过程中产生的数据记录文件,这些文件通常是以MB为单位计算的,这些数据一般存储在片外,诸如W25Qxx这类NOR Flash芯片中,也有可能会存储在直插SD卡,贴片SD 卡这类 NAND Flash中。如果记录的是图像或者音频数据的话,本地存储的最佳选择,就是直插SD卡,SD NAND这类 NAND Flash。
上述几类存储芯片根据各种容量的不同,定位和功能特点都有差异,这里做一个简单的讨论。
(1)常见的外部存储芯片介绍(1.1)EEPROM芯片
EEPROM芯片相对于其他储存器件,具有以下几个特点。
可编程性:EEPROM芯片可以通过编程,将数据写入指定的地址,这使得EEPROM芯片在应用中非常灵活。
易擦除性:EEPROM芯片可以通过高压擦除操作,将存储的数据擦除,并重置EEPROM芯片。
低功耗性:EEPROM芯片仅在写和擦除操作时需要大量的能量,而在读取过程中仅需极小的能量,这使得EEPROM芯片节省了许多电能。
高可靠性:EEPROM芯片的数据存储在非挥发性存储介质中,即使在断电或者掉电的情况下,数据仍然可以得到保存。
常用的EEPROM芯片如下图所示:
(1.2)NOR Flash芯片
NOR Flash(也称为NOR型闪存)是一种非易失性存储器,常用于嵌入式系统和存储设备中。NOR Flash是一种闪存类型,可以用于存储程序代码、固件、操作系统以及其他数据。
与NAND Flash相比,NOR Flash具有较低的存储密度和较高的成本,但具有较快的读取速度、较低的读取延迟和较好的随机访问性能。这使得NOR Flash适合用作执行代码和存储需要低延迟和高可靠性的关键数据的应用程序,所以常在需要片外储存代码的应用场景中,见到NOR Flash芯片。
市面上常见的NOR FLASH芯片如下所示:
(1.3)3.SD NAND芯片
事实上,我们常见的SD卡,也属于一种芯片,它和贴片SD卡一样,都使用SD 协议,SD NAND是储存卡的延伸及强化版本,使用的标准芯片封装工艺使其可以轻松过回流焊,可直接贴片,又名贴片式TF卡、SD Flash,除此之外其他物理抗性也比普通SD卡强得多,其内部集成高性能的闪存控制器及SLC架构的闪存,兼容 SD 协议,满足客户小型化、差异化、高可靠性的设计需求。
对于一些要求严苛的场景,比如要求小尺寸存储,IP6xf防水,数据自纠错,温度范围宽等参数,贴片式SD卡比直插SD卡更能胜任这个角色,目前,基于ST、TI、NXP、MTK、RK、芯唐、全志 等平台,贴片SD卡已经覆盖了工业、车载、医疗、电力、通信和消费类领域的诸多产品之中。
市面上常见的SD NAND芯片,主要是雷龙代理的CS创世 SD NAND应用最广泛,如下图所示:
(2)存储芯片性能的评估标准读取速度:指的是从存储器中读取数据所需的时间。通常以延迟(访问时间)来衡量,延迟越低,读取速度越快。
写入速度:指的是将数据写入存储器的速度。与读取速度类似,写入速度也可以通过延迟来衡量。
存储容量:表示存储器能够存储的数据量。通常以位、字节、千字节(KB)、兆字节(MB)、千兆字节(GB)或更大单位来衡量。
数据可靠性:指存储器中数据的稳定性和可靠性。一个良好的存储器应该能够正确地保存和检索数据,避免数据丢失或损坏。
能耗效率:衡量存储器在执行读写操作时的能耗。较低的能耗可以帮助节省能源和延长设备电池寿命。
接下来我们用MicroSD卡和CS创世 SD NAND做对比,基于公司开发的工业模拟量参数采集器的数字主板,来测试双方的相关性能,设备图片如下:
MicroSD卡采用金士顿的32GB卡,贴片SD卡采用CS创世 512MB容量的SD NAND,如下图所示:
为了适配SD卡槽,所以雷龙会为样品免费提供转接板,更为方便地插入SD卡槽,可在不改变原有PCB布局的情况下进行调试。
(3)CS 创世SD NAND的产品介绍深圳市雷龙发展有限公司创立于2008年,专注NAND Flash 市场13年,其代理的 CS创世 SD NAND产品,具有以下特点:
CS创世为全球首家推出SD NAND产品的公司。
尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8封装。
标准SDIO接口,兼容SPI/SD接口,兼容各大MCU平台,可替代普通TF卡/SD卡。
尺寸6x8mm毫米,内置SLC晶圆擦写寿命10万次,通过1万次随机掉电测试耐高低温,支持工业级温度-40°~+85°,机贴手贴都非常方便。
速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)标准的SD 2.0协议使得用户可以直接移植标准驱动代码,省去了驱动代码编程环节。支持TF卡启动的SOC都可以用SD NAND,提供STM32参考例程及原厂技术支持。
主流容量:128MB/512MB/2GB/4GB/8GB,比TF卡稳定,比eMMC便宜,样品免费试用。
如果需要过IPvx防水,又因为开口式的SD卡槽,无法达到指定防水指标的产品,可以考虑采用CS创世 SD NAND。
可以直接采用回流焊,贴片在PCB上,传统的MisroSD卡因为要和卡槽进行机械接触,卡槽容易老化,触点也容易氧化变形,无法长时间在户外以及暴露环境使用,基于这项优势,CS创世 SD NAND涉及的应用领域广泛,比如:医疗设备,粉尘以及高温下的工业控制,户外安防,户外通信,网络设备,IPC,执法记录仪,可视对讲,门禁考勤,平板电脑,汽车电子,电力设备等。
雷龙发展有限公司官网为:雷龙发展有限公司
(4)SD NAND对比和测试项目基于STM32L4R5的某政府项目产品(无外壳)平台上,利用虚拟U盘功能,在没有DMA和FIFO优化的前提下,分别测试MicroSD卡和CS创世 SD NAND的读写速度。
(4.1)基于STM32L4R5的产品平台测试
平台如下所示:
插入MicroSD卡时(背面)
插入贴片SD卡+转接板时
然后使用TypeC数据线将设备与电脑连接,由于产品实现了虚拟U盘的功能,所以会在电脑上识别出对应存储器容量大小的U盘,虚拟U盘的具体实现程序可以参考网络上的相关例程,这里不赘述。
测试CS创世 SD NAND的数据读写功能
这里采用PC端文件传输的功能,来测试其数据读写速度,插入转接板后,PC端识别出如下U盘信息
这里我们传输30MB字节的数据包,来查看STM32L4R5对SD NAND的数据读写能力。
向SD NAND传输30MB数据包:
可以观察到,STM32L4R5写SD NAND的速度在350~785KB/s之间。
测试MicroSD卡的数据读写功能
这里采用PC端文件传输的功能,来测试其数据读写速度,插入MicroSD卡后,PC端识别出如下U盘信息
这里我们传输30MB字节的数据包,来查看STM32L4R5对MicroSD的数据读写能力。向 MicroSD传输30MB数据包:
可以观察到,同一平台下,MicroSD卡的写速度在355~446KB/s之间,低于CS创世SD NAND的350~785KB/s范围。
(5)结尾总结总体上而言,除了在容量上有些许劣势之外,CS创世 SD NAND在安装方式上,具有传统SD卡所没有的抗腐蚀,抗干扰能力,在读写速度上,比传统SD卡快50%左右。SD NAND存储芯片的应用还有很多,这里只是作以简单的介绍,希望它对您在这方面的应用能带来一些帮助。
全志T113-i开发板——评估板测试手册(1)
希望这些能对想要学习嵌入式、进入嵌入式行业和那些刚学习嵌入式不久的朋友有所帮助。 如果你是在嵌入式开发阶段或者正在选型阶段,遇到了什么需求、问题以及经验感想,欢迎在评论区和大家分享!本文测试内容包含系统启动测试、文件传送测试、LED测试、按键测试、按键测试、时钟设置测试、DDR读写测试等。
前 言
本文档适用开发环境:
Windows开发环境:Windows 7 64bit、Windows 10 64bit
虚拟机:VMware15.5.5
Linux开发环境:Ubuntu18.04.4 64bit
LinuxSDK:T113-i_V1.0(Linux)
U-Boot:U-Boot-2018.05
Kernel:Linux-5.4.61、Linux-RT-5.4.61
无特殊说明情况下,本文默认基于NAND FLASH配置评估板进行测试。默认使用USB TO UART0作为调试串口,使用Linux系统启动卡(SD启动模式)启动系统,并将评估板通过路由器与PC机进行网络连接。
测试板卡为创龙科技的TLT113-EVM,它是一款基于全志科技T113-i双核ARM Cortex-A7 + 玄铁C906 RISC-V + HiFi4 DSP异构多核处理器设计的国产工业评估板,ARM Cortex-A7处理器单元主频高达1.2GHz。评估板由核心板和评估底板组成,核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
进行本文档操作前,请先按照《调试工具安装》、《Linux开发环境搭建》相关文档,安装SecureCRT串口调试终端、VMware虚拟机、Ubuntu系统等相关软件。
对于NAND FLASH配置评估板,Linux系统启动卡、NAND FLASH分区说明如下表所示。
表 1
设备名称
设备分区
分区说明
Linux系统启动卡
/dev/mmcblk0p1
boot-resource分区,存放bootlogo等资源
/dev/mmcblk0p2
env分区,存放U-Boot环境变量env.fex
/dev/mmcblk0p3
env-redund分区,存放U-Boot环境变量env.fex
/dev/mmcblk0p4
boot分区,存放内核镜像boot.fex
/dev/mmcblk0p5
rootfs分区,存放文件系统镜像rootfs.fex
/dev/mmcblk0p6
dsp0分区,存放DSP镜像dsp0.fex
/dev/mmcblk0p7
private分区,暂未使用
/dev/mmcblk0p8
UDISK分区,储存介质剩余未使用空间
NAND FLASH
/dev/mtdblock0
boot0分区,存放SPL镜像(只读分区)
/dev/mtdblock1
uboot分区,存放U-Boot镜像(只读分区)
/dev/mtdblock2
secure_storage分区(只读分区)
/dev/mtdblock3
sys分区,mtdblock4~mtdblock12分区基于mtdblock3分出
/dev/mtdblock4
mbr分区,存放sunxi_mbr.fex镜像
/dev/mtdblock5
boot-resource分区,存放bootlogo等资源(只读分区)
/dev/mtdblock6
env分区,存放U-Boot环境变量env.fex
/dev/mtdblock7
env-redund分区,存放U-Boot环境变量env.fex
/dev/mtdblock8
boot分区,存放内核镜像boot.fex
/dev/mtdblock9
rootfs分区,存放文件系统镜像rootfs.fex(请勿直接对"/dev/mtdblock9"设备节点进行写操作,否则会损坏文件系统)
/dev/mtdblock10
dsp0分区,存放DSP镜像dsp0.fex
/dev/mtdblock11
private分区,暂未使用
/dev/mtdblock12
UDISK分区,储存介质剩余未使用空间
对于eMMC配置评估板,Linux系统启动卡、eMMC分区说明如下表所示。
备注:eMMC配置评估板的Linux系统启动卡的设备分区为mmcblk1pX,但NAND FLASH配置评估板的Linux系统启动卡的设备分区为mmcblk0pX。
表 2
设备名称
设备分区
分区说明
Linux系统启动卡
/dev/mmcblk1p1
boot-resource分区,存放bootlogo等资源
/dev/mmcblk1p2
env分区,存放U-Boot环境变量env.fex
/dev/mmcblk1p3
env-redund分区,存放U-Boot环境变量env.fex
/dev/mmcblk1p4
boot分区,存放内核镜像boot.fex
/dev/mmcblk1p5
文件系统分区,存放文件系统镜像rootfs.fex
/dev/mmcblk1p6
dsp0分区,存放DSP镜像dsp0.fex
/dev/mmcblk1p7
private分区,暂未使用
/dev/mmcblk1p8
储存介质剩余未使用空间
eMMC
/dev/mmcblk0p1
boot-resource分区,存放bootlogo等资源
/dev/mmcblk0p2
env分区,存放U-Boot环境变量env.fex
/dev/mmcblk0p3
env-redund分区,存放U-Boot环境变量env.fex
/dev/mmcblk0p4
boot分区,存放内核镜像boot.fex
/dev/mmcblk0p5
文件系统分区,存放文件系统镜像rootfs.fex
/dev/mmcblk0p6
dsp0分区,存放DSP镜像dsp0.fex
/dev/mmcblk0p7
private分区,暂未使用
/dev/mmcblk0p8
储存介质剩余未使用空间
评估板快速测试
系统启动测试
评估板接入电源,并使用Type-C线连接PC机和评估板USB TO UART0调试串口。打开设备管理器,确认评估板USB TO UART0调试串口对应的COM端口号。
图 1
图 2
打开串口调试终端SecureCRT,选择对应的COM端口号,设置波特率为115200,8N1,无校验位。建立串口连接,如下图所示。
图 3
将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板SW2拨码开关旁丝印(并非拨码开关上文字),将拨码开关拨为0,使能Micro SD功能。将评估板上电启动,系统将会自动登录root用户,串口终端会打印如下类似启动信息。
图 4
图 5
核心板LED在系统启动过程中的变化说明如下:
评估板上电后,电源指示灯LED0点亮;随后SPL阶段启动,LED1点亮;紧接着U-Boot启动,LED2点亮;直至内核启动运行时,LED2熄灭,LED1进行心跳闪烁;NAND FLASH或eMMC进行读写时,LED2闪烁。
图 6
备注:如需从NAND FLASH或eMMC启动评估板,请参考《Linux系统启动卡制作及系统固化》文档固化Linux系统至NAND FLASH或eMMC。
文件传送测试
PC机和评估板之间传送文件的常见方式如下:
通过Linux系统启动卡、U盘等存储介质方式拷贝。通过NFS、TFTP、OpenSSH等网络方式拷贝。通过Linux系统启动卡
将配套的系统启动卡通过读卡器插至PC机挂载至虚拟机Ubuntu系统,如下图,查询系统启动卡设备节点,其中"/dev/sdb5"为Linux系统启动卡文件系统分区,具体以实际名称为准。
图 7
执行如下命令,将"/dev/sdb5"设备节点挂载至"/mnt/"目录下。
Host# sudo mount /dev/sdb5 /mnt
Host# ls /mnt/
图 8
执行如下命令在Ubuntu系统中创建文件test0,并将test0文件拷贝至Linux系统启动卡文件系统root目录。
Host# touch test0
Host# sudo cp test0 /mnt/root/
图 9
文件拷贝完成后,请执行如下命令卸载设备,并拔出读卡器,从中取出Linux系统启动卡。
Target# sudo umount /dev/sdb5
图 10
将Linux系统启动卡插至评估板Micro SD卡槽,评估板上电启动即可查看root目录下的文件。
Target# ls
图 11
通过OpenSSH
OpenSSH是SSH(Secure Shell)协议的免费开源实现。SSH协议族可用来进行远程控制,或在计算机之间传送文件,评估板文件系统默认已支持SSH库。
在Ubuntu系统中执行如下命令,查询是否已安装OpenSSH。由下图可见系统已自带OpenSSH。如未安装,请先自行正确安装OpenSSH。
Host# ssh -v
图 12
将评估板ETH0(RGMII)网口通过路由器与PC机进行网络连接。执行如下命令可自动获取到评估板IP地址,"-i"用于指定网卡,eth0为网卡名字,请根据实际情况修改。
Target# udhcpc -i eth0
图 13
执行如下命令可查询评估板网卡IP地址。本次查询到的IP地址是192.168.0.30。
Target# ifconfig
图 14
使用OpenSSH从PC机传送文件至评估板
执行如下命令在Ubuntu系统中创建文件test1,并使用OpenSSH命令将test1文件拷贝至评估板文件系统根目录。
Host# touch test1
Host# scp test1 root@192.168.0.30:/
图 15
若出现提示"Are you sure you want to continue connecting (yes/no)?",请输入:yes。
在评估板文件系统执行如下命令,可看到从Ubuntu拷贝过来的文件,如下图所示。
Target# ls /
图 16
使用OpenSSH从评估板传送文件至PC机
执行如下命令,在评估板文件系统根目录创建文件test2。
Target# cd /
Target# touch test2
图 17
在Ubuntu系统执行如下命令,将评估板文件系统根目录下的test2文件拷贝至Ubuntu系统"/home/tronlong/"目录下。若传输内容为文件夹,请在scp后面添加参数"-r"。
Host# sudo scp root@192.168.0.30:/test2 /home/tronlong/
Host# ls
图 18
使用OpenSSH登录到评估板文件系统
在Ubuntu系统执行如下命令可通过OpenSSH登录评估板文件系统。
Host# sudo ssh root@192.168.0.30
图 19
如需退出登录,请执行exit或者logout命令。
LED测试
进入评估板文件系统,执行如下命令熄灭、点亮LED1。
Target# echo 0 > /sys/class/leds/user-led0/brightness //熄灭LED1
Target# echo 1 > /sys/class/leds/user-led0/brightness //点亮LED1
图 20
按键测试
评估底板包含1个CPU RESET(KEY0)按键,1个USB0 UPGRADE(KEY1)按键,1个USER(KEY2)用户输入按键。
CPU RESET(KEY0)按键测试
按下CPU RESET(KEY0)按键后,评估板系统将重新启动,说明按键功能正常。
USB0 UPGRADE(KEY1)按键测试
参考《Linux系统启动卡制作及系统固化》文档步骤,可固化Linux系统至NAND FLASH并正常启动,说明按键功能正常。
USER(KEY2)用户输入按键测试
进入评估板文件系统,执行如下命令,查看用户按键对应的事件号为event0。
Target# cat /proc/bus/input/devices
图 21
执行如下命令,按下KEY2按键进行测试,串口调试终端将会打印如下类似信息。其中"0094"表示KEY2按键,按"Ctrl + C"可终止测试命令。
Target# od -x /dev/input/event0
图 22
时钟设置测试
Linux系统中分系统时钟(软件时钟)和RTC时钟(硬件时钟),系统时钟掉电即会消失,RTC时钟在安装电池的情况下会长期运行。
如需使用外部RTC时钟,请将ML2032(3V可充)或CR2032(3V不可充)电池安装至RTC纽扣电池座。
备注:使用CR2032不可充电电池时,请勿将跳线帽插入J1接口。
如下为时钟相关的常用命令。
查看系统时钟Target# date
图 23
查看RTC时钟
Target# hwclock -u
图 24
设置系统时间
Target# date -s "2023-01-10 16:15:00" //设置时间:2023年1月10日16点15分00秒
Target# date
图 25
同步系统时钟至RTC时钟
Target# hwclock --systohc -u
Target# hwclock -u
图 26
同步系统和RTC的时钟
执行如下命令后,系统将同步RTC时钟作为系统时钟。
Target# hwclock --hctosys -u
图 27
DDR读写测试
本小节使用文件系统自带内存读写工具测试DDR读写性能。DDR读写速度受测试方法和实际情况影响,如下测试数据仅供参考。
DDR读速度测试
进入评估板系统,执行如下命令对DDR进行读速度测试。"-P"参数指定CPU核心数量。
Target# bw_mem -P 2 30M frd
图 28
测试从DDR中读取30MByte数据,可看到本次测试的读速度为1925.47MB/s。
DDR写速度测试
进入评估板系统,执行如下命令对DDR进行写速度测试。
Target# bw_mem -P 2 30M fwr
图 29
测试写入30MByte数据至DDR,可看到本次测试的写速度为659.99MB/s。
DDR拷贝速度测试
进入评估板系统,执行如下命令对DDR进行拷贝速度测试。
Target# stream -M 30M -P 2
图 30
测试拷贝30MByte数据至DDR中,可看到本次测试的拷贝速度为2179.35MB/s。
Micro SD接口读写测试
本小节使用SanDisk公司、128GByte容量的Micro SD卡来测试评估板Micro SD接口性能。请参考《Linux系统启动卡制作及系统固化》文档将其制作成Linux系统启动卡,再进行测试。不同的Micro SD卡以及不同的测试方法,对Micro SD接口测试结果将造成一定差异。
请将Linux系统启动卡插至评估板Micro SD卡槽,评估板上电,进入评估板文件系统执行如下命令查看Linux系统启动卡信息。
Target# fdisk -l
图 31
执行如下命令,对Linux系统启动卡mmcblk0p8分区(剩余未使用空间)进行格式化,请提前做好数据备份。
备注:若使用eMMC配置评估板,则Linux系统启动卡对应设备分区为mmcblk1p8(剩余未使用空间),请注意区分。
Target# mkfs.ext4 /dev/mmcblk0p8
图 32
执行如下命令,创建目录并对分区进行挂载。
Target# mkdir -p /run/media/mmcblk0p8
Target# mount /dev/mmcblk0p8 /run/media/mmcblk0p8
图 33
Micro SD接口写速度测试
进入评估板系统,执行如下命令测试Micro SD接口写速度。
Target# echo 3 > /proc/sys/vm/drop_caches
Target# time dd if=/dev/zero of=/run/media/mmcblk0p8/test bs=1024K count=100 conv=fsync
time命令有计时作用,dd用于复制,从if(input file)文件读出,写到of(output file)指定的文件,bs是每次写块的大小,count是读写块的数量。
"if=/dev/zero"不产生IO,即不断输出数据,可用来测试纯写速度。
图 34
此处一共写100MByte测试数据至Linux系统启动卡的test文件,可看到本次测试的Micro SD接口写速度约为:100MByte / 4.85s ≈ 20.62MB/s。
Micro SD接口读速度测试
执行如下命令测试Micro SD接口读速度。
Target# echo 3 > /proc/sys/vm/drop_caches
Target# time dd if=/run/media/mmcblk0p8/test of=/dev/null bs=1024K
"of=/dev/null"不产生IO,即不断接收数据,可用来测试纯读速度。
图 35
此处从test文件一共读出100MByte的数据,可看到本次测试的Micro SD接口读速度约为:100MByte / 4.92s ≈ 20.33MB/s。
测试完成后,执行如下命令卸载挂载分区。
Target# umount /run/media/mmcblk0p8/
Target# rm -r /run/media/mmcblk0p8
图 36
更多案例测试详情说明,欢迎关注Tronlong创龙科技获取,也可以在评论区留言,感谢你的支持。
相关问答
汽车电子龙头股排名?车...第二名,韦尔股份。公司在汽车CIS市场份额居全球第二,2018年市场份额为22%,仅次于安森美的36%,并且相比安森美,公司拥有大小像素结合技术,智能汽车加速...
汽车电子四大巨头?国内汽车电子行业技术水平有些已经超过世界水平,目前国内有五家。第一名,紫光国微。公司自主研发的THD89系列产品是国内最高安全等级芯片,在原有通过AEC-Q10...
汽车电子龙头排名?汽车芯片股票龙头排名2021汽车芯片股票龙头股名单第一名,紫光国微。公司自主研发的THD89系列产品是国内最高安全等级芯片,在原有通过AEC-Q100车规级认证的...
诸位老表,请回答,放心RK3128联系方式,RK3128如何挑选??[回答]本文档主要介绍RockchipRK3399软件开发指南,旨在帮助工程师更快上手RK3399的开发的开发及调试。瑞芯微Rockchip刷机(固件升级)工具,可以刷Rock...