This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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();
}