在uboot1.1中, at91rm9200 操作flash 的 flash.c :
#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00005555<<1)))
#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00002AAA<<1)))
#define IDENT_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x0000555<<1)))
#define IDENT_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x0000AAA<<1)))
IDENT_FLASH_ADDR 检查 flash ID ,MEM_FLASH_ADDR erase/write flash.
am29lv160db 的 datasheet 上的命令: 0x 555 /0x2aa
我是问题:
1) 什么时候addr 要<<1,为什么在一些烧写的例子是不用的?
(2) 什么时候 要用MEM_FLASH_ADDR 为什么它与datasheet 上的不一样?