Re: Synth NAND Flash

Rutger Hofman <[email protected]>
Newsgroups gmane.os.ecos.devel
Message-ID <[email protected]>
Simon Kallweit wrote:
> Hi there
> 
> I merged the NAND code from Rutger into my repo and tried to figure out 
> how to write synthetic target support, which in my opinion would be a 
> great addition so we can test future filesystems (UFFS) without a 
> target, do wear-leveling analysis and stuff like that.
> 
> First, I noticed a few things I would like to clear up in front. 
> Currently, the NAND subsystem sits in io/flash_nand which I think is 
> fine. But the devices sit under devs/flash, which is the same location 
> as for NOR flash. I think we should rename this to devs/flash_nand. I 
> already did this in my merge. This would make the distinction between 
> NOR and NAND flash more clearer. I also thought about renaming the whole 
> framework from flash_nand to simply nand. This would also match the API 
> names cyg_nand_xxx better. Are there any objections?

In fact, this is how I started out originally. But Andrew Lunn convinced 
me to do otherwise:

http://ecos.sourceware.org/ml/ecos-discuss/2008-09/msg00172.html

> I started out with eCos in it's default template. I was getting some 
> errors because of the missing ssize_t type. Either we should get rid of 
> it or add something like this to the CDL:
> 
> require CYGBLD_ISO_SSIZE_T_HEADER

My Ubuntu man page says that ssize_t should be defined by sys/types.h; 
requiring CYGPKG_ISOINFRA ought to be good enough.

> Other than that there is a little bit of cleaning up to do, but I think 
> that's all minor stuff.

I'm open for recommendations.

> Next I copied the GPIO nand flash controller to make a synth version and 
> also copied a st-micro NAND chip driver to make a synth version. For 
> now, they are pretty empty skeletons. But I was able to build the NAND 
> subsystems with those dummy drivers. Of course, the test cases don't 
> work. It also occurred to me that the "shell.c" test has quite a few 
> dependencies. I just removed this test for the moment.

Yes, sure, "shell.c" allows a number of operations to be done 
interactively. It is not so much in the vein of automated stress 
testing. It was in fact my testing vehicle for a raw terminal program. 
I'm fine with removing it from the standard test build, but I would be 
sorry to see it go.

> Now for the actual design of the synth driver. I think the best way 
> would be to implement a NAND simulator based on the ONFI specification. 
> Something similar has been done for the MTD framework, but I guess other 
> than for inspiration we're not allowed to use that code. So basically we 
> would simulate the interface to the chip. I guess we don't have to 
> simulate the signal lines. We just need some mechanism for chipselect 
> and reset I guess. The interface will more be along the lines of writing 
> commands, addresses, reading back etc. This means that the simulator 
> will be implemented as a state machine. There is even one described in 
> the ONFI specification for reference.

I never heard of an actual ONFI chip yet. Current chips are usually of 
the regular large-page kind. It might be most practical to make a 
generic regular large-page chip emulator that can be parameterized with 
the Device IDs as enumerated in cyg_nand_chip_id[] in file 
flash_nand/src/chip/io_nand_chip.c .

> I think the basics can be implemented rather quickly. I guess we don't 
> need to simulate multiple concurrent LUNs, or does the framework already 
> support these?

Multiple LUNs is the same as multiple chips, as far as the NAND package 
(or ONFI) is concerned. It should be supported, but it is untested 
because I lacked hardware.

> Well that's about it. I'll try to implement a simple simulator tomorrow 
> and see where I get. I post back some results as soon as I have something.
> 
> Simon

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.