public inbox for ecos-devel@sourceware.org
 help / color / mirror / Atom feed
From: Ross Younger <wry@ecoscentric.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: "ecos-devel@ecos.sourceware.org" <ecos-devel@ecos.sourceware.org>
Subject: Re: NAND review
Date: Wed, 03 Jun 2009 10:21:00 -0000	[thread overview]
Message-ID: <4A264E85.6030202@ecoscentric.com> (raw)
In-Reply-To: <20090603085115.GA27508@lunn.ch>

Hi Andrew,

Thanks for the summary. If I may comment on a couple of technical points...


> IMHO Ross's partitioning scheme/API is broken. I've tried to trigger
> discussion about this, but there has not been much interest. 

I've been quiet recently as I've been pushing to get YAFFS and RedBoot
integration up to the "complete first cut" stage. This has now happened; I
have successfully loaded and run an eCos application image from a YAFFS
filesystem on NAND flash using RedBoot. (YAFFS is on the BZ ticket; I will
sort out the eCos-v-eCosPro differences and push my [minimal] RedBoot work
to the ticket later today.) Now I've got time to take stock of all the
useful feedback, and figuring out what I do with the partitioning scheme is
one of the major issues!


> [...] This got me a bit
> worried about GPL issues, but there was an interesting comment from
> Ross that an older version of MTD has a more eCos friendly license.

For clarity, this related only to the ECC code in MTD, which I incorporated.
The rest of my code is all fresh.


> Initially i was a bit worried about Rutgers need for dynamic memory
> allocation. [...] However, on
> second thoughts, i don't think this is too big an issue. YAFFS needs
> malloc/free. [...] So in general, redboot is going
> to need malloc/free for supporting file systems, so having the NAND
> library using it is not that bad.

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?


> 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...")


> There was comments from Ross about excessive stack usage blowing his
> target away. This might indicate the immaturity of his code? 

Stack usage by my NAND layer is not a problem on my target in a default eCos
config. It only becomes an issue when you try and use it under minimal
(possibly another vertex case?), when it turns out that the default isn't
big enough. I've fiddled the CDL in my working tree as a stopgap, and my
todo list includes figuring out ways to improve this. (It's only one
particularly stack-greedy function that has caused trouble, which might well
benefit from a bit of algorithmic tuning. Or indeed, if we decide that it's
OK for NAND to require malloc, then I can do a temporary malloc and free.)

Similarly, I found that when RedBoot has CYGPKG_MEMALLOC loaded, its default
heap size isn't big enough to mount even an empty YAFFS filesystem. There's
another stopgap in place, and another todo list entry...


Ross

-- 
Embedded Software Engineer, eCosCentric Limited.
Barnwell House, Barnwell Drive, Cambridge CB5 8UU, UK.
Registered in England no. 4422071.                  www.ecoscentric.com

  reply	other threads:[~2009-06-03 10:21 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-19  8:27 Simon Kallweit
2009-05-19 13:47 ` Ross Younger
2009-05-19 14:17   ` Andrew Lunn
2009-05-20 13:24     ` Bart Veer
2009-05-20 13:34       ` Rutger Hofman
2009-05-20 13:53         ` Andrew Lunn
2009-05-20 13:56           ` Gary Thomas
2009-05-20 14:22             ` Andrew Lunn
2009-05-20 15:22               ` Andrew Lunn
2009-05-20 15:34               ` Bart Veer
2009-05-20 13:58           ` Rutger Hofman
2009-05-20 14:16     ` Ross Younger
2009-05-20 14:21       ` Gary Thomas
2009-05-20 15:25         ` Ross Younger
2009-05-20 15:37           ` Gary Thomas
2009-05-19 16:29 ` Andrew Lunn
2009-06-03  8:51   ` Andrew Lunn
2009-06-03 10:21     ` Ross Younger [this message]
2009-06-03 10:48       ` Andrew Lunn
2009-06-03 11:52         ` Simon Kallweit
2009-06-03 12:26         ` Rutger Hofman
2009-06-03 13:33     ` Jürgen Lambrecht
2009-06-10 17:39     ` Nick Garnett
2009-06-11 11:25       ` Rutger Hofman
2009-06-13 16:31       ` Andrew Lunn
2009-06-18 14:10         ` Nick Garnett
2009-06-19  7:47           ` Andrew Lunn
2009-06-19 14:14             ` Ross Younger
2009-06-19 15:02               ` Andrew Lunn
2009-06-19 16:54               ` Jürgen Lambrecht
2009-06-29 11:09             ` Nick Garnett
2009-06-19  8:07           ` Andrew Lunn
2009-06-19 11:37             ` Daniel Morris
2009-06-19 12:06               ` Andrew Lunn
2009-05-20  1:02 ` Jonathan Larmour
2009-05-20  7:11   ` Simon Kallweit
2009-05-20 11:12     ` Rutger Hofman
2009-05-20 11:29       ` Simon Kallweit
2009-05-20 13:37         ` Rutger Hofman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A264E85.6030202@ecoscentric.com \
    --to=wry@ecoscentric.com \
    --cc=andrew@lunn.ch \
    --cc=ecos-devel@ecos.sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).