flash access problem

Hi Everybody, I am programming amd flash, Am29LV641D. The configuration

is 128 sectors, 64Mbits size(4M*16), sector size:64Kb, 1 bank. The problem is that I cannot access the higher 64 sectors(starting from sector 64 to sector 127 assuming that sector number starts from

0). When I am erasing the 64th sector, the 0th sector is getting erased, when doing the 65th one, the 1st one gets erased...and hence so forth. I have confirmed this wrapping up as when I am coping some data in 127th sector, its being reflected in 63rd sector. can anybody suggest anything to rectify this? How to access the lower 64 sectors. I think that the processor(mips32) is not able to see the 2nd half. Is there anything I can do to make it see the whole flash?? The datasheet for this flash doesnt seem to reflect anything. I am working on bcm4704 chipset(similar to bcm5836). I think the flash address starts from bc000000(although I am not very sure,as I dont have the bcm4704 datasheet, have known this from some other sources). If you feel that this is not correct, please let me know. Except the above problem, everything seems to be working fine.

Thanks and Regards, Sudip

Reply to
sudip05
Loading thread data ...

You may have an address calculation error in your driver: word address and byte address. If you use the byte address to program the flash, you get what you observed. Check the circuit and the driver.

best regards Wolfgang

Reply to
Wolfgang Mües

You should check the static memory controler configuration (in your boot monitor configuration, board init routine, part programmer, ...): you may have a 32 Mb flash declared. Another possibility is that you do not have a full address bus coming to the flash chip (higher address pins not being routed). I'm facing that situation with a custom mips board that only allow 64 Mb flash chips: I need to force the high address bit via some GPIO to access the full 128Mb.

If it's a boot flash, it should be mapped to include the 0xbfc00000 address (the hardwired mips reset vector). If not, it may be mapped almost anywhere. Again, check the static memory controler configuration.

Stephane

--
remove the zero to reply
Reply to
Stéphane Guillon

Hi Stephane, I think I have possibly checked up all the configuration stuff..feel its right there..as per ur bfc00000 is concerned, this address is being mapped to a lareger window of 32 Mbytes starting from bc000000. But still, we tried with bfc00000, it didnt work out. :-(

For Wolfgang comments....although this flash is 4M*16, still are there any possibility of programming it bytewise? I mean to say, is there any way to do bytewise programming? as far as I am concerned, I am not doing any word wise writing on this flash(checked the datasheet)..in fact there is no such controversy as there is only a single mode of writing, that is by word. So, I am not very much sure whether its erasing(during erasing process) or writing during(writing phase) in byte wise or word wise.(hopefully word wise). If there is any specific way to control byte wise programming or word wise for this flash, pls let me know. Another point is that, while programming the flash, we are programming via EPI debugger...while programming the flash, the debugger showed that consecutive mirror sectors were programmed(ie our bootsector starts from bc000000...debugger showed that bc000000 is programmed and bc400000(which is the starting address of the next

4Mb)too. dont know why...for epi debugger, we had selected Am29LV641MH as flash type(4M*16).

Thanks n Regards, sudip

Reply to
sudip05

Hi, I have found the problem...The 8Mb flash is not pin compatible with the socket. :-) thanx everybody for the help.

Regards, sudip

Reply to
sudip05

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.