如何确定运行eCos操作系统的设备使用的SPI Flash的系统内存地址?例如,show flash命令返回以下信息:
Flash Device Information:
CFI Compliant: no
Command Set: Generic SPI Flash
Device/Bus Width: x16
Little Word Endian: no
Fast Bulk Erase: no
Multibyte Write: 256 bytes max
Phys base address: 0xbadf1a5
Uncached Virt addr: 0x1badf1a5
Cached Virt addr: 0x2badf1a5
Number of blocks: 129
Total size: 8388608 bytes, 8 Mbytes
Current mode: Read Array
Device Size: 8388608, Write buffer: 256, Busy bit:
Size Device Device Region
Block kB Address Offset Offset Region Allocation
----- ---- ---------- ----------- --------- -----------------
0 32 0x1badf1a5 0 0 Bootloader (32768 bytes)
1 32 0x1bae71a5 32768 ??? {unassigned}
2 64 0x1baef1a5 65536 0 Permanent NonVol (65536 bytes)
3 64 0x1baff1a5 131072 0 Image1
4 64 0x1bb0f1a5 196608 65536 Image1
5 64 0x1bb1f1a5 262144 131072 Image1
6 64 0x1bb2f1a5 327680 196608 Image1
7 64 0x1bb3f1a5 393216 262144 Image1
.. .. ........
127 64 0x1c2bf1a5 8257536 4063232 Image2 (4128768 bytes)
128 64 0x1c2cf1a5 8323072 0 Dynamic NonVol (65536 bytes)
但这些地址似乎不是内存位置的实际地址。因为当我尝试readmem命令时,它总是返回错误。例如,有一个readmem命令示例:
readmem -s 4 -n 64 0x80001234 -- Reads 64 bytes as 32-bit values.
当我尝试时,readmem -s 4 -n 16384 0x1baef1a5它总是返回错误:(ERROR - Address对于上表中的任何地址)。所以我假设这些地址不是实际的闪存地址。我认为这是因为处理器的内存控制器将闪存地址空间映射到系统地址空间。Flash word-size 与 system word-size 不同。如何找到系统内存地址来读取SPI Flash?