Re: NAND review

Rutger Hofman <[email protected]>
Newsgroups gmane.os.ecos.devel
Message-ID <[email protected]>
Andrew Lunn wrote:
>> The philosophical question for us all is whether NAND on its own should be
>> allowed to use malloc, given that a NAND array will probably always be used
>> in conjunction with a log-structured filesystem which will chew up
>> comparatively large amounts of RAM (and, of course, RAM is forever getting
>> cheaper). Is this a corner or even N-dimensional vertex case; will it
>> necessarily always be the case that a device with NAND flash will have
>> enough RAM to support it? Do boards with NAND but not much RAM exist, and if
>> so do we care about them?
> 
> The answer is yes. Simon, could you describe your board. From what i
> understand you don't have much RAM. 

As I didn't want to tie the NAND user to malloc, I designed in a 
pluggable allocator. Often, the application can calculate beforehand how 
much memory is needed: 1) BBT, which depends on the NAND size; 2) 
per-thread space for the error handling. If there is no threaded kernel, 
it would be just the BBT which can be allocated statically by the 
application/platform.

>>> Rutgers API allows reading/writing less than a page, eg just a few
>>> bytes. Ross's API is page based. I don't know if this is an advantage
>>> or a disadvantage. 
>> This is a tough one to call. I went for simplicity and a tight mapping to
>> the hardware. One could argue that providing a bytewise API might encourage
>> programmers unfamiliar with NAND flash to use it in a bytewise manner and
>> risk prematurely wearing out their chips. (I believe MTD has something along
>> these lines. "If it looks like a hammer...")

The number of writes to a page between erases is often severely limited, 
like 2 or 4. Therefore bytewise writes are not really an option.

> That is what i was thinking. Bytewise read makes more sense than
> writing. Also, if the underlying chipset does not support bytewise
> reading/writing, you end up needing a page buffer low down in the
> stack, rather up in the application where it might be reusable for
> other things when memory is tight.

The file systems I took a look at read/write a complete page. NAND chips 
all support byte/word addressing, though. Like Andrew and Ross, I am not 
completely certain which is the best way to go. Limiting reads and 
writes to complete pages would make the code a little bit simpler in one 
or two places.

Rutger
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.