韩大卫@吉林师范大学
2015.1.27.
转载请表明出处
*********************************************
uboot 和linux 下flash 的写入速度不一样, 主要原因是两者使用的延迟最小延时时间不一样. linux比较大. 原因如下:
flash 芯片手册中有两个重要的时间参数:
第一个是一般的块写入超时时间, 记为time-ty, 第二个是最大的块写入超时时间, 记为time-max.
假设有两个CFI nor flash 芯片, A 的time-ty 为10, B 的time-ty 为8 ; A, B 的time-max 都为2.
下面会看到, 在uboot 下, A, B 的flash 写入速度差异很小. 但在linux 下, A和B的flash 写入时间有很大的差异. 假设时钟均稳定.
uboot中的算法:
1,先得出超时时间 info->buffer_write_tout :
info->buffer_write_tout = (((1 << time-ty) * (1 << time-max)) + 999) / 1000;
A的flash : time-ty = 10, time-max = 2, 计算得