EmbeddedRelated.com
Forums
Memfault Beyond the Launch

Need help with flash memory control.

Started by GerberMultit00l October 10, 2005
I am a hardware engineer designing an embedded application.  I want to
add up to 1GByte of non-volatile memory.  The first product offering
will require 256MByte but I need room to expand.  The whole assembly
must be extremely small in size.

It appears my only option for a large non-volatile memory space in this
embedded application is NAND flash.  However, the micro I must use does
not have an external memory interface.  It has a SPI buss.  It also has
quite a few general purpose I/o ports.

I can't find SPI based serial memories above 32Mbyte.  This will not
suffice.

A friend recommended we BIT-BANG the memory interface between micro and
NAND flash using general purpose I/O ports.  This sounds complex.  I
haven't hired an embedded programmer yet so do not know what is
possible.  I DO NOT want to design a hardware platform this person will
not be able to work with.

Can anyone lend me some insite about what is involved in creating such
an interface?  I know enough about embedded coding to get me in
trouble.  That is about it.  Just want to start along the right path.

Gerb.

Hi,
And why don't you use a SD or MMC card (SPI) ?

--
---
Yvan
http://www.ybdesign.fr

Pour me r�pondre : http://cerbermail.com/?SrJYCoIx8E




"GerberMultit00l" <gerbermultit00l@yahoo.com> a &#4294967295;crit dans le message de
news: 1128964623.037274.48030@g49g2000cwa.googlegroups.com...
> I am a hardware engineer designing an embedded application. I want to > add up to 1GByte of non-volatile memory. The first product offering > will require 256MByte but I need room to expand. The whole assembly > must be extremely small in size. > > It appears my only option for a large non-volatile memory space in this > embedded application is NAND flash. However, the micro I must use does > not have an external memory interface. It has a SPI buss. It also has > quite a few general purpose I/o ports. > > I can't find SPI based serial memories above 32Mbyte. This will not > suffice. > > A friend recommended we BIT-BANG the memory interface between micro and > NAND flash using general purpose I/O ports. This sounds complex. I > haven't hired an embedded programmer yet so do not know what is > possible. I DO NOT want to design a hardware platform this person will > not be able to work with. > > Can anyone lend me some insite about what is involved in creating such > an interface? I know enough about embedded coding to get me in > trouble. That is about it. Just want to start along the right path. > > Gerb. >
"GerberMultit00l" <gerbermultit00l@yahoo.com> wrote in message 
news:1128964623.037274.48030@g49g2000cwa.googlegroups.com...

> A friend recommended we BIT-BANG the memory interface between micro and > NAND flash using general purpose I/O ports. This sounds complex. I > haven't hired an embedded programmer yet so do not know what is > possible. I DO NOT want to design a hardware platform this person will > not be able to work with.
There is an introduction in here: http://www.semicon.toshiba.co.jp/eng/prd/memory/doc/pdf/nand_applicationguide_e.pdf tim
GerberMultit00l wrote:

> I am a hardware engineer designing an embedded application. I want to > add up to 1GByte of non-volatile memory. The first product offering > will require 256MByte but I need room to expand. The whole assembly > must be extremely small in size. > > It appears my only option for a large non-volatile memory space in this > embedded application is NAND flash. However, the micro I must use does > not have an external memory interface. It has a SPI buss. It also has > quite a few general purpose I/o ports. > > I can't find SPI based serial memories above 32Mbyte. This will not > suffice. > > A friend recommended we BIT-BANG the memory interface between micro and > NAND flash using general purpose I/O ports. This sounds complex. I > haven't hired an embedded programmer yet so do not know what is > possible. I DO NOT want to design a hardware platform this person will > not be able to work with. > > Can anyone lend me some insite about what is involved in creating such > an interface? I know enough about embedded coding to get me in > trouble. That is about it. Just want to start along the right path. > > Gerb.
Gerb, You could use an MMC card socket (or is it a connector?) and use MMC or SD cards. That may be the least expensive way to go and an SPI bus can be used to access them. I've done just that before. Bit-banging a large FLASH chip would require a bunch of IO pins. You might need 8 for data, 2 for control and 28 or more for address. You could still use your small MCU and some serial-in/parallel-out shift registers, but that can be slow, difficult and expensive. Noel
I realize SPI buss is the native interface for MMC cards and that SD
cards are backwards compatible.  This would be a solution.  However, I
ruled out using MMC or SD flash cards for the time being due to cost.
I intend on manufacturing a couple million of these things and have a
slim profit margin.  It is my belief that adding a single NAND flash
chip on board will be much cheaper than adding a card slot and Flash
card.  I may be wrong but it only makes sense that I am right.

The NAND flash interface requires 15 lines.  I have over 50 general
purpose I/O ports available.  I don't think that will be a problem.

My key concern is with software overhead.  In a ideal situation you
would just write data to a register and supply a memory address.  The
memory controller module would take over from there.  But, this device
does not have an external memory controller (not that one would work
with NAND flash anyway).  Here, the memory controller needs to be
created in software.  I'm not to sure what is involved with that.

Now that you know this, any more ideas?

Gerrrb

If you need 256Mbyte now and 1Gbyte in the future then you will have to
use Flash memory. This means that you'll have to implement the
interface and state machines needed to control the flash. Writing to
flash is a relatively slow operation as you can see from any datasheet.
Also, the largest flash chips available now are 4Gbit, and they
probably cost a fortune.

Have you thought about cracking open an iPOD and using the hard disk !

Ken

www.claymore-electronic.co.uk

Good app note.  Thank you.

Gerrb

Cracking open iPods is not an option for the volume of devices I wish
to manufacture.  Plus, it might get a little costly....

Gerrrb

In article <1128972038.423269.89520@g43g2000cwa.googlegroups.com>, 
gerbermultit00l@yahoo.com says...
> I realize SPI buss is the native interface for MMC cards and that SD > cards are backwards compatible.
I don't think so. The standard mode for MMC is a serial mode but not SPI, the cards have to be placed in SPI mode first. IIRC SPI support was even supposed to be optional.
> This would be a solution. However, I > ruled out using MMC or SD flash cards for the time being due to cost. > I intend on manufacturing a couple million of these things and have a > slim profit margin. It is my belief that adding a single NAND flash > chip on board will be much cheaper than adding a card slot and Flash > card. I may be wrong but it only makes sense that I am right.
You probably are right but if you really are planning on manufacturing in the millions I'd check the quantity breaks on each. Robert
"GerberMultit00l" <gerbermultit00l@yahoo.com> wrote in message
news:1128972038.423269.89520@g43g2000cwa.googlegroups.com...
> I realize SPI buss is the native interface for MMC cards and that SD > cards are backwards compatible. This would be a solution. However, I > ruled out using MMC or SD flash cards for the time being due to cost. > I intend on manufacturing a couple million of these things and have a > slim profit margin. It is my belief that adding a single NAND flash > chip on board will be much cheaper than adding a card slot and Flash > card. I may be wrong but it only makes sense that I am right. > > The NAND flash interface requires 15 lines. I have over 50 general > purpose I/O ports available. I don't think that will be a problem. > > My key concern is with software overhead. In a ideal situation you > would just write data to a register and supply a memory address. The > memory controller module would take over from there. But, this device > does not have an external memory controller (not that one would work > with NAND flash anyway). Here, the memory controller needs to be > created in software. I'm not to sure what is involved with that. > > Now that you know this, any more ideas? > > Gerrrb >
Sounds like some kind of logging application? Why so much storage space? How fast will data need to be written to the flash? How will you retrieve the data from the flash? Serial comms? I think you should use an SD / MMC card for the following reasons: * The card implements all the logic needed to manage the flash memory, has wear levelling and provides and easy interface. This will make life easier for the embedded engineer. * You can change the memory capacity of the device by changing the card instead of soldering more flash chips. Your software can then easily know how much memory is available. * An SD card can be removed and placed in a card reader, allowing easy transfer of data to a pc. * 1GB cards could be had for pretty cheap in bulk. Ross

Memfault Beyond the Launch