[U-Boot] [PATCH 1/2 v2] cramfs: make cramfs usable on non NOR flash

Heiko Schocher hs at denx.de
Thu Jan 28 12:02:48 CET 2010


Hello Wolfgang,

Wolfgang Denk wrote:
> In message <4B613D24.7060604 at denx.de> you wrote:
[...]
>>> What about systems that have both NOR _and_ NAND?
>> Are there such systems, with cramfs support? Actual cramfs support
>> in mainline is only for NOR devices ...
> 
> Yes, but I understand that you want to also support cramfs when not
> stored in NOR.
> 
> With your code I can read files from a cramfs image stored in RAM
> (when there is nor NOR flash), _or_ I can read it from NOR flash.
> Right?

No. This should work also!

Accessing a cramfs through a nor, the "cramfs_load()" is used,
as in ./common/cmd_jffs2.c, and if reading a file which resists
in RAM "cramfsload" command is used for reading the file.

> But what about reading from files a cramfs image stored in RAM  on  a
> system  that  _has_  NOR flash? And being able to read files a cramfs
> image stored in NOR as well? It seems your code cannot do this.

in fs/cramfs/cramfs.c

#define PART_OFFSET(x)  (x->offset + flash_info[x->dev->id->num].start[0])

and in common/cmd_cramfs.c

part.offset = addr - flash_info[id.num].start[0];

so, flash_info[id.num].start[0] is not really used, if using
cramfsload, so it should be possible to load a file out
of a cramfs, wherever the cramfs resides ... Nevertheless,
flash_info_t is defined or not, also, using "cramfs_load()"
on a NOR flash works, because there is no change.

My Patch is only necessary, because, if a board have no NOR flash,
flash_info_t is not defined.

> I understand that the suggested patch is an improvement over the
> existing state (it adds the capability to read cramfs in RAM on
> NOR-les systems), but I think this restriction ("on NOR-less
> systems") should be lifted as well.
> 
> In other words: I think, the decision whether to use
> 
> 	part.offset = addr - flash_info[id.num].start[0];
> or
> 	part.offset = addr;
> 
> should be made at run time (based on the location of the image - in

but on a board without NOR flash, you have no flash_info_t
defined, which results in a compilerror.

bye
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list