在我的嵌入式目标中,NOR闪存在一些命令之后覆盖了地址映射,包括状态、设备信息、cfi信息等。
要读取我使用的普通地址:
map= (int *)(mmap(0,SECTOR_SIZE*NUM_SECTORS,PROT_READ|PROT_WRITE,MAP_SHARED,_fdmem,NOR_FLASH_PHYS));
printf("Location 0x0 , data %x\n",map[0]);
要切换到覆盖模式,我必须执行一些写操作:
ID (Autoselect) Entry 555 AA 2AA 55 555 90
(芯片是S29GL128S)但是:
map[0x555]=0xAA;
map[0x2AA]=0x55;
map[0x555]=0x90;
work.Still不读取正常内存,而不是芯片id。
读/dev/mem和读返回0..so猜测那样写也行不通。
在这一领域的纽比和c..so所有的帮助都是欢迎的。
谢谢
发布于 2014-11-18 16:16:01
为什么要使用强制转换为(int *)?变量映射的类型是什么,int*?sizeof(int) == 4,所以map0x555表示内存中的map0x555*4字节。使用强制转换为(unsigned char *)或(uint8_t)。
也许错误在那里的某个地方。
https://stackoverflow.com/questions/26984103
复制相似问题