向nor flash发送命令

问题描述 投票:0回答:1

在我的嵌入式目标中,NOR flash 在一些带有状态、设备信息、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;

不起作用。仍然读取普通内存而不是芯片id。

使用

lseek
read
读取 /dev/mem 返回 0..所以猜测这种方式也行不通。

这个领域的新手,所以欢迎所有帮助。

谢谢

c linux embedded
1个回答
0
投票

为什么使用强制转换为 (int *)?变量映射的类型是什么,int*? sizeof(int) == 4,所以map[0x555]表示内存中的map[0x555*4 bytes]。使用转换为 (unsigned char *) 或 (uint8_t)。

可能是某个地方出现了错误。

© www.soinside.com 2019 - 2024. All rights reserved.