This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Re: Flash device interface
- From: Roland Caßebohm <roland dot cassebohm at visionsystems dot de>
- To: Savin Zlobec <savin at elatec dot si>
- Cc: ecos-discuss at sources dot redhat dot com
- Date: Fri, 7 Nov 2003 17:02:00 +0100
- Subject: Re: [ECOS] Re: Flash device interface
- References: <3FAA644A.40600@elatec.si>
On Donnerstag, 6. November 2003 16:10, Savin Zlobec wrote:
> Roland Caßebohm wrote:
> >On Dienstag, 4. November 2003 16:57, Roland Caßebohm wrote:
> >> Hi again,
> >>
> >> I'm just trying to use the flash device interface (/dev/flash1)
> >> for accessing flash, but if I write to flash with write() I get
> >> an "I/O error".
> >>
> >> The problem seems to be, that flashiodev_bwrite() does not erase
> >> the region before programming it. I also think about a possibility
> >> to write regions, which are not block aligned.
> >>
> >> Maybe the function calls flash_erase() and flash_program() block
> >> by block and for the first and the last block which are not block
> >> aligned, it first makes a copy of the current flash content,
> >> replaces the to be written data in this copy and programs the copy
> >> back.
> >>
> >> I also want to use flash_read() instead of directly read the flash.
> >> Then it should work with flashes with indirect access too.
> >>
> >> Any suggestions?
> >
> >In the attached patch I have made such a change, but as I have written
> >in an other mail the devfs which is used by this layer doesn't support
> >lseek() and fstat(). That's why it is even with this changes not
> >possible to use a flash image like a file.
> >
> >But at least erasing the flash before writing it should be done,
> >else the flash content would be corrupted.
>
> [ ... ]
>
> I don't think this is a way to go if you want to have byte access to
> your flash.
> You have a read/modify/erase/write cycle if your data is not block
> alligned for every write -
> a lot of work if you want to change just a byte of two, not to mention
> the limited amount of
> times you can do that with one flash chip.
>
> Using my block library should give you much better results.
> It caches the blocks for you and writes only when block gets thrown out
> of cache or you
> request it. Beside that you have byte access and block access functions
> and the cache size and
> block size are configurable. You can write a simple filesystem on top of
> that wich suits your needs,
> and this is really simple if all what you need is file like access to
> your flash region.
>
This sounds very good, but I'm afraid I have no time anymore for this.
Maybe in the future I will go on.
But one thing still interests me, does anybody ever used the flash device
interface (flashiodev.c) with real flash? I think it just can't work,
because in the write function the flash would not be erased before
programming.
Thanks for your suggestion,
Roland
--
___________________________________________________
VS Vision Systems GmbH, Industrial Image Processing
Dipl.-Ing. Roland Caßebohm
Aspelohe 27A, D-22848 Norderstedt, Germany
http://www.visionsystems.de
___________________________________________________
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss