mini2440 裸机编程 - norflash

    mini2440开发板上带有2M的norflash,norflash可以像访问普通内存的方式来做读访问(写就要复杂些),norflash还可以在其中直接执行代码。这些在nandflash里面是不可能做到的,norflash还具有掉电信息不丢失的特点。

   Nor Flash 采用了 A1-A22 总共 22 条地址总线和 16 条数据总线与 CPU 连接,请注意地址是从 A1 开始的,这意味着它每次最小的读写单位是 2-byte。由于地址线A0悬空所以norflash只认识偶数的地址线。


   这里仅讲解norflash 的扇区擦除与读写的操作:

扇区擦除的操作顺序是:


对应的代码

int erase_one_sector(uint32 dst)
{
	uint32 destbuf = dst;
   	int  return_status;

	//  Issue the Sector Erase command to 39VF160X
	*sys_address(0x5555) = 0x00AA;     // write data 0x00AA to device addr 0x5555
	*sys_address(0x2AAA) = 0x0055;     // write data 0x0055 to device addr 0x2AAA
	*sys_address(0x5555) = 0x0080;     // write data 0x0080 to device addr 0x5555
	*sys_address(0x5555) = 0x00AA;     // write data 0x00AA to device addr 0x5555
	*sys_address(0x2AAA) = 0x0055;     // write data 0x0055 to device addr 0x2AAA
	*sys_address(destbuf) = 0x0030;    // write data 0x0030 to device sector addr
   	return_status = check_toggle_ready(destbuf);	// wait for TOGGLE bit ready

   	return return_status;
}



写2个字节的操作顺序是


对应的代码:

int program_one_word (uint16 *srcword,   uint32 dst)
{
    uint32 destbuf = dst;
    uint16 *sourcebuf = srcword;
    int return_status;

    *sys_address(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555
    *sys_address(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA
    *sys_address(0x5555) = 0x00A0; // write data 0x00A0 to device addr 0x5555
    *sys_address(destbuf) = *sourcebuf; // transfer the uint16 to destination

    return_status = check_toggle_ready(destbuf); // wait for TOGGLE bit ready

    return return_status;
}


读2个字节的代码

void read_one_word(uint16 *src_word, uint32 dst)
{
    uint32 destbuf = dst;

    *src_word = *(volatile uint16 *)(system_base|destbuf); 
}


  可以看出norflash的读操作可以像访问普通的内存一样来访问,另外正如在开头说过的 norflash 由于把 A0 地址线悬空,因此只能识别偶数的地址请求,因此下面的两个读操作读出来的内容是一样的。

#define	target_addr 0x000010

	read_one_word(&temp[0],target_addr);
	read_one_word(&temp[1],target_addr+1);


使用下面给出的代码测试,并使用openjtag调试可验证上面的推测正确。

http://s.yunio.com/tuwaSd



关于norflash的相关资料可以见下面链接:

http://s.yunio.com/OF!h0b


你可能感兴趣的:(mini2440 裸机编程 - norflash)