红联Linux门户
Linux帮助

关于使用ioremap16读取NOR flash数据的问题

发布时间:2008-08-02 10:34:56来源:红联作者:xs_uestc
我先说明一下情况哈:
我现在是用AT91RM9200读取挂接的一个28F128J3D的norflash 大小为16M,物理地址从0x1000 0000开始
[/size]
[size=4]现在在驱动程序下对读书flash的数据进行测试:代码如下所示:

#define BASE_FLASH (( unsigned long) 0x10640000)
static int __init eth_init(void)
{
volatile unsigned int data;
void * flash_add;
int i;
request_mem_region(BASE_FLASH, 0x18, "flash");
flash_add = ioremap(BASE_FLASH, 0x18);

for(i = 0; i < 12; i++) {
iowrite16(WORD_PROGRAM_COMMAND, flash_add);
iowrite16(0x1234, flash_add + 0x2 * i);
iowrite16(READ_ARRAY_COMMAND,flash_add);
data = ioread16(flash_add + 0x2 * i);
printk("data = %d\n", data);
}

printk("init module\n");
return 0;
}

[/size]
[size=4]现在出现的问题是:

1、如果连续的写flash 只能写两个字节也就是iowrite16()函数只执行了一次;
2、如果在iowrite16()以后执行ioread16()则可以全部写对;
3、用ioread16()读取的数据不对,都是127;
----------------------------------------------------------------------------------------------------------
文章评论

共有 0 条评论