本帖最后由 ぉ沙皮狗的忧伤 于 2021-3-15 17:38 编辑
一、将启动方式改flash启动,并将文件系统存放至emmc中
1、烧录程序到flash中
2、emmc中创建分区
使用fdisk打开emmc设备,在我这里emmc在dev下面的设备名是mmcblk0,而tf卡在dev下面的设备名是mmcblk1
在命令行输入fdisk /dev/mmcblk0
- a 可启动标志的切换
- b 编辑“bsd disklabel”
- c 切换dos兼容性标志
- d 删除分区
- l 列出已知的分区类型
- n 添加新的分区
- o 创建一个新的空DOS分区表
- p 打印分区表
- q 退出,不保存更改
- s 创建一个新的空的Sun disklabel
- t 不要更改分区的系统id
- u 改变显示/进入单位
- v 检查分区表
- w 将表写入磁盘并退出
- x 额外的功能(仅限专家)
复制代码
先去打印分区表,创建一个大小2G的分区和一个6G分区,完成创建之后w保存
若想删除分区输入d就行,选择分区号,然后保存w
创建的那两个分区就出现了,p1分区存放boot包,p2分区存放文件系统
boot分区p1格式化成fat32格式,文件系统分区格式化成ext4分区
挂载/dev/mmcblk0p2分区到/mnt目录在
拷贝tf的boot分区中的rootfs.tar.gz到emmc的第二个分区中,并解压
断电,在boot界面倒计时进入boot菜单,烧录boot包到QSPI中
断电,拔出SD卡,将启动拨码开关拨到QSPI启动,在上电,在boot界面倒计时是敲回车进入boot菜单,按“q”进入命令行,
输入pri打印环境变量,在其中找到加载文件系统的方式,先找到qspiboot在其中找到mmc_rootfs_args,在mmc_rootfs_args中找到加载root的地方
由于我们的文件系统放在/dev/mmcblk0p2的分区中,所有要在环境变量里面对其进行修改,set修改后使用saveenv保存,使用pri打印一下并确认
断电重启
二、编写测试脚本
1、先将tf卡格式化成ext4格式,因为我们板卡无法判断tf卡是mmcblk0设备还是mmcblk1设备,所有我们在脚本里面手动指定,剩下的可以仔细看脚本
- #!/bin/sh
-
- #手动指定
- SD_name=/dev/mmcblk1p1
- SD_file=1.txt
-
- #获取SD卡大小
- SD_size=`df -h | grep $SD_name | awk '{print $2}' | awk -F"." '{print $1}'`
-
-
-
- #获取挂载文件宮录
- mount_file=`mount | grep $SD_name | awk '{print $3}'`
-
- while [ "1" == "1" ]
- do
-
- #新建指定大小的文件
- truncate -s 1000M $SD_file
-
-
- #测试读写速度
- touch $mount_file/abc.txt
- echo "write speed test"
- #date
- sync
- time dd bs=1M count=1000 if=/dev/zero of=$mount_file/abc.txt
- echo "read speed test"
-
- echo 3 > /proc/sys/vm/drop_caches
-
- #date
- sync
- time dd bs=1M count=1000 of=/dev/zero if=$mount_file/abc.txt
- rm $mount_file/abc.txt
-
- echo 3 > /proc/sys/vm/drop_caches
-
- echo write file
- #从SD卡读写文件,查看是否出错
- #每次拷贝大小为1G的数据到SD卡中,例如16G的SD卡就考16次
- for i in `seq 1 $SD_size`
- do
- cp ./1.txt $mount_file/$i.txt
- echo write $i.txt
- echo 3 > /proc/sys/vm/drop_caches
- sync
- done
-
- echo read file
- #将SD卡中的数据读出来
- for i in `seq 1 $SD_size`
- do
- mv $mount_file/$i.txt ./
- echo read $i.txt
-
- echo 3 > /proc/sys/vm/drop_caches
-
- rm ./*.txt
- sync
- done
-
- sleep 3
- done
复制代码
三、执行脚本并测试 由于为了更方便演示,故测试大小有1000M改为100M
使用dd测试读写速度,先判断tf卡实际内存大小,创建一个大小1000M的1.txt文件,例如16Gtf卡,实际内存大小是14.6G,故将1.txt拷贝14次到tf卡中,在读出来,并查看内核是否出现系统性的错误,若想做的更准确,则只需要在拷贝1.txt到tf卡之前记录一下md5值,拷过去读出来,对比md5值是否一致,不一致读写出错,可以私聊我,底下交流交流
代码在附件中
|