Thanks Daryl. The address is in the range of 0x7800.0000 - 0x78FF.FFFF.
This is a 16MB address space that can be accessed over a 32 bit bus width.
The lower 16 bits interfaces with the first 8MB chip while the upper 16
interfaces with the second 8MB.
While looking at the flash filesystem headers, I came across the f3s_dbase
structure which contains a variable called “chip_inter” /* interleave for
chips on bus */.
I am wondering what this chip_inter means and whether it applies to my case.
“Daryl Low” <firstname.lastname@example.org> wrote in message
Now, if the physical address of both chips are contiguous… the
auto-probe will figure it all out for you. If not, just tweak the “page”
routine so it looks like:
uint8_t *page (f3s_socket_t *socket, uint32_t flags, uint32_t offset,
if (offset < 8MB) return (window1 + offset);
else if (offset < 16MB) return (window2 + offset - 8MB);
errno = ERANGE;
If this is a custom driver, you can even hard-wire the addresses
(easiest way but sloppy). Don’t forget to make the socket “open” routine
allocate both windows.
A “nicer” way is to find somewhere to hold the pointer to the second
window, or make socket->address point to an array of window pointers or
something. You get the picture.
We have two similar 8 MB AMD am29LV flash on our board, each with a 16
bus width, which we would like to have appear as a single array of 16
Ultimately, the goal is that there is a single mount point for the
MB block and is available as a filesystem. I am looking for the
possible way in which we can accomodate this.
Looking at the AMD mtd libraries that come with the 6.1 BSPs, with a
tweak, I should be able to use the am29f100s service routines for each
the 8MB part however, I am not sure how to address the two devices as a
single array. Do I need to write a layer on top of the service
that calls these routine twice (in serial) to act on each of the two
devices ? Also, I am not looking for data redundancy between the two
devices so I guess I can’t serially issue two read/write commands to
the devices and have both of them read/write the same data.
Would appreciate any feedback I can get. We are using QNX 6.1 for our