目标板式270的,原来用的板子上的flash是intel的E28F128J3,现在的flash是AMD的S29GL128N,用了两片,单片16M.进行如下id号的执行语句
typedef unsigned short U16;
typedef unsigned int U32;
#include "norflash.h"
#define out_l(v, a) (*(volatile U16 *)(a) = (v))
#define in_l(a) (*(volatile U16 *)(a))
#define ROM_BASE (U16) 0x0
#define ROM_BASE1 (U16) 0x0555
#define ROM_BASE2 (U16) 0x02aa
int ChkNorFlash(void)
{
U16 id;
out_l(0xaa, ROM_BASE1);
out_l(0x55, ROM_BASE2);
out_l(0x90, ROM_BASE1);
id = in_l(ROM_BASE);
printf("NOR Flash Man. ID is 0x%x\n", id);
}
不知道怎么弄得输出的是基址上的二进制镜像的代码,不是flash的id号
原来开发板上的intel的代码为
int ChkNorFlash(void)
{
U16 id;
out_l(0x90, ROM_BASE1);
id = in_l(ROM_BASE);
printf("NOR Flash Man. ID is 0x%x\n", id);
}
是因为之前的寄存器配置的问题吗?
------解决方案--------------------
我感觉 第一是看看你的flash是否写保护 第二是看你的程序是否完全符合flash的读写时序