TI中文支持网
TI专业的中文技术问题搜集分享网站

AM3352: 使用了32Gb的NANDFLASH后擦除速度慢

Part Number:AM3352

操作系统 linux 3.2.0

文件系统:  UBIFS

NANDFLASH:  MT29F32G08ABAAA.

运行了一段时间后,偶尔系统会运行非常慢,CPU占用率达到100%.  经调试发现,系统变慢时, 是由于执行了数据删除操作后ubi_bgt0d 在后台执行NANDFLASH擦除引起的, 擦除操作本身很快,但擦除后会去有调用 ubi_check_all_ff(), 对于我们的NANDFLASH, 擦除块大小为1MB,   此函数需要用320毫秒才能完成 。 

问题:

1.  有什么办法可以加快NANDFLASH的读速度

2. AM3352对NANDFLASH的读写是否可以用DMA方式? 我试着用NAND_OMAP_PREFETCH_DMA 和 NAND_OMAP_PREFETCH_IRQ, 但都无法工作:代码如下:

static void evm_nand_init(int evm_id, int profile)
{
struct omap_nand_platform_data *pdata;
struct gpmc_devices_info gpmc_device[2] = {
{ NULL, 0 },
{ NULL, 0 },
};

setup_pin_mux(nand_pin_mux);
pdata = omap_nand_init(am335x_nand_partitions_128k,
ARRAY_SIZE(am335x_nand_partitions_128k), 0, 0,
&am335x_nand_timings);
if (!pdata)
return;
pdata->ecc_opt =OMAP_ECC_BCH8_CODE_HW;
pdata->elm_used = true;
// pdata->xfer_type = NAND_OMAP_PREFETCH_IRQ;
gpmc_device[0].pdata = pdata;
gpmc_device[0].flag = GPMC_DEVICE_NAND;

omap_init_gpmc(gpmc_device, sizeof(gpmc_device));
omap_init_elm();
}

Nancy Wang:

可以使用DMA, 利用DMA是可以降低cpu负载和提高性能,具体可阅读以下NAND章节Transfer Modes部分的内容。

http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components/Kernel/Kernel_Drivers/Storage/NAND.html

DMA使能部分晚一些再给您回复。

,

Nancy Wang:

DMA部分的配置我帮您升级到了英文论坛,请查看回复并跟进。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1035731/am3352-gpmc-dma-configuration

,

johnson lu:

我看了相关文档,说是用DMA方式后,CPU占用率会降低,但读写速度会降低10%~20%, 这点无法接受。决定代码时还是不启用ubi_check_all_ff 来解决此问题

,

Nancy Wang:

好的,感谢分享!

赞(0)
未经允许不得转载:TI中文支持网 » AM3352: 使用了32Gb的NANDFLASH后擦除速度慢
分享到: 更多 (0)