FAQ
5 FAQ
1、问:sd 卡和 wifi 经常出现 retry:start 等打印的原因和原理;
答:出现这种情况是因为 sdio 通信失败了,一般是数据 crc 校验错误;对于这种错误主要怀疑,
硬件信号受到干扰;而这个 retry 机制是通过重发改变相位等方法来规避单次通信失败;在通信
无法回复的情况下,会出现大量的 retrylog,此时请检查硬件信号,供电等关键信息。
5.1 调试方法
5.1.1 调试工具
5.1.2 调试节点
5.1.2.1 1. 寄存器信息
linux5.4 内核
a.sdc2
(1).sdc2 gpio 寄存器信息
cat /sys/devices/platform/soc@2900000/4022000.sdmmc/sunxi_dump_gpio_register
(2).sdc2 ccmu 寄存器信息
cat /sys/devices/platform/soc@2900000/4022000.sdmmc/sunxi_dump_ccmu_register
(3).sdc2 host 寄存器信息
cat /sys/devices/platform/soc@2900000/4022000.sdmmc/sunxi_dump_host_register
b.sdc0
(1).sdc0 gpio 寄存器信息
cat /sys/devices/platform/soc@2900000/4020000.sdmmc/sunxi_dump_gpio_register
(2).sdc0 ccmu 寄存器信息
cat /sys/devices/platform/soc@2900000/4020000.sdmmc/sunxi_dump_ccmu_register
(3).sdc0 host 寄存器信息
cat /sys/devices/platform/soc@2900000/4020000.sdmmc/sunxi_dump_host_register
(4)手动扫描卡接口
echo 1 > /sys/devices/platform/soc@2900000/4020000.sdmmc/sunxi_insert
c.sdc1
(1).sdc1 gpio 寄存器信息
cat /sys/devices/platform/soc@2900000/4021000.sdmmc/sunxi_dump_gpio_register
(2).sdc1 ccmu 寄存器信息
cat /sys/devices/platform/soc@2900000/4021000.sdmmc/sunxi_dump_ccmu_register
(3).sdc1 host 寄存器信息
cat /sys/devices/platform/soc@2900000/4021000.sdmmc/sunxi_dump_host_register
linux4.9 内核
a.sdc2
(1).sdc2 gpio 寄存器信息
cat /sys/devices/platform/soc/sdc2/sunxi_dump_gpio_register
(2).sdc2 ccmu 寄存器信息
cat /sys/devices/platform/soc/sdc2/sunxi_dump_ccmu_register
(3).sdc2 host 寄存器信息
cat /sys/devices/platform/soc/sdc2/sunxi_dump_host_register
b.sdc0
(1).sdc0 gpio 寄存器信息
cat /sys/devices/platform/soc/sdc0/sunxi_dump_gpio_register
(2).sdc0 ccmu 寄存器信息
cat /sys/devices/platform/soc/sdc0/sunxi_dump_ccmu_register
(3).sdc0 host 寄存器信息
cat /sys/devices/platform/soc/sdc0/sunxi_dump_host_register
(4)手动扫描卡接口
echo 1 > /sys/devices/platform/soc/sdc0/sunxi_insert
c.sdc1
(1).sdc1 gpio 寄存器信息
cat /sys/devices/platform/soc/sdc1/sunxi_dump_gpio_register
(2).sdc1 ccmu 寄存器信息
cat /sys/devices/platform/soc/sdc1/sunxi_dump_ccmu_register
(3).sdc1 host 寄存器信息
cat /sys/devices/platform/soc/sdc1/sunxi_dump_host_register
5.1.2.2 2.emmc 信息
(1)获取路径:cd /sys/block/mmcblk0/device. 这里包含了大部分的 emmc 信息
block ffu_capable preferred_erase_size cid fwrev prv cmdq_en hwrev raw_rpmb_size_mult csd life_time rca date manfid rel_sectors driver mmcblk0rpmb rev dsr name serial enhanced_area_offset ocr subsystem enhanced_area_size oemid type enhanced_rpmb_supported power uevent erase_size pre_eol_info
(2)cat 需要的信息,
例如获取寿命信息
cat life_time
cat pre_eol_info
获取 emmc 名字
cat namd
获取生产日期
cat data
获取唯一识别码
cat cid
获取制造商 id
cat manfid
5.1.2.3 3、性能验证节点
该节点主要是用来记录底层存储的读写性能,该节点记录的数据不参含调度以及文件系统的影响。
为了描述方便,这里设定 base 目录这一概念,其中 X 代表控制器号;
内核 linux4.9 base=/sys/devices/platform/soc/sdcX
内核 linux5.4 base=/sys/devices/platform/soc@2900000/402X000.sdmmc
(1) 开始测量:echo 1 > /$base/sunxi_host_perf
(2) 进行读写操作
(3) 获取测试结果:cat /$base/sunxi_host_perf
图 5-1: sunxi_host_perf
(4) 速度计算:1073741824byte/105978400us = 9.66MB/s
(5) 清除测量数据:echo 0 > /$base/sunxi_host_perf
动态设置
以下动态设置的节点均于 base 目录下:
sunxi_host_perf 总开关,打开后下面设置才有效
sunxi_host_filter_w_sector:单笔数据传输的数据大于等于这个数据量,
sunxi_host_filter_w_speed 才生效,单位是扇区
sunxi_host_filter_w_speed:速度低于这个值就打印出来,单位是 B/S
参考
echo 20971520 > /$base/sunxi_host_filter_w_speed
echo 8 > /$base/sunxi_host_filter_w_sector
echo 1 > /$base/sunxi_host_perf
效果
20190322_17:24:37.207 [ 64.922940] c=25,a=0x 3fc00,bs= 2560,t= 105463us,sp=12136KB/s
20190322_17:24:37.586 [ 65.301113] c=25,a=0x 43800,bs= 2560,t= 92740us,sp=13802KB/s
20190322_17:24:37.829 [ 65.544155] c=25,a=0x 46000,bs= 2560,t= 94162us,sp=13593KB/s
20190322_17:24:37.967 [ 65.682744] c=25,a=0x 47400,bs= 2560,t= 77371us,sp=16543KB/s
20190322_17:24:38.041 [ 65.755126] c=25,a=0x 47e00,bs= 2560,t= 64860us,sp=19734KB/s
开机默认启动
在 dts 或者 sysconfig.fex 里面加入下面配置
per_enable:总开关,打开后下面设置才有效
fiter_sector :传输的数据大于等于这个数据量,
fiter_speed 才生效,单位是扇区
fiter_speed:速度低于这个值就打印出来,单位是 B/S
参考
图 5-2: sysconfig 性能测试配置
效果
20190322_17:24:37.207 [ 64.922940] c=25,a=0x 3fc00,bs= 2560,t= 105463us,sp=12136KB/s
20190322_17:24:37.586 [ 65.301113] c=25,a=0x 43800,bs= 2560,t= 92740us,sp=13802KB/s
20190322_17:24:37.829 [ 65.544155] c=25,a=0x 46000,bs= 2560,t= 94162us,sp=13593KB/s
20190322_17:24:37.967 [ 65.682744] c=25,a=0x 47400,bs= 2560,t= 77371us,sp=16543KB/s
20190322_17:24:38.041 [ 65.755126] c=25,a=0x 47e00,bs= 2560,t= 64860us,sp=19734KB/s
5.2 常见问题
参考《MMC 量产问题快速排查指南》《eMMC 硬件排查指南》