Andy,

I think I will have to think about this a little more, I really like the
idea of a updatable system, but I am really concerned with the painfully
long boot times I am observing! (I would like to reduce my 20 second
boot to around 3-5 seconds)

I (and I am sure everyone else here) would like to hear of your NOR
partitioning adventures.

Shame there is no real news regarding a wiki to store all this useful
stuff on :(

Regards,

Andrew

On Wed, 2007-04-11 at 03:30 -0700, Andy Ngo wrote:
> Hi Andrew,
>  
> Which ever method (ramdisk vs NOR JFFS2) you want to use depends
> on your needs.  A ramdisk filesystem is obviously faster than NOR
> JFFS2
> since it resides in RAM; if you need your embedded system to run
> very efficiently, it's better to use the ramdisk method.  The con of
> a ramdisk system is, of course, everything is volatile and you
> lose everything in the ramdisk once you power it off; also it's harder
> to update software on a ramdisk system since you have re-create the 
> ramdisk with the updated software and re-image the whole ramdisk.gz
> into flash.  The NOR JFFS2 method is just the opposite; it's slower
> than
> a ramdisk (on the order of 3???) but it's a non-volatile system so
> changes
> to the filesystem are saved after power off; hence it's easier to
> update software on a NOR JFFS2; also it leaves you more RAM to work
> with.
>  
> I guess a better method would be a hybrid where both the ramdisk and
> NOR JFFS2 are used.  Just have both a ramdisk MTD partition and
> a NOR JFFS2 partition in flash; the system would boot up loading
> the ramdisk image from flash to RAM, run from it, and is able
> to save data on the mounted NOR JFFS2 partition.   What do you think?
> Hey, I may have to give this a try =)
>  
> Regards,
> Andy
>  
>  
>  
> 
> 
> ----- Original Message ----
> From: Andrew Armstrong <[EMAIL PROTECTED]>
> To: Andy Ngo <[EMAIL PROTECTED]>
> Sent: Wednesday, April 11, 2007 12:18:14 AM
> Subject: Re: NOR flash file system on Davinci
> 
> Hi Andy,
> 
> Glad to hear you are solving some of these difficult issues! I have a
> question for you, I feel you are probably the most experienced to
> answer
> it!
> 
> I am currently working on a project where we are using NOR, we intend
> to
> use a 32mb variant (apparently you can wire up some extra address
> lines
> somewhere - still to be looked it!)
> 
> Basically as per usual we intend our kernel and OS image to reside in
> NOR to be copied into DDR as is normally the case. The problem is I
> cannot decide whether to use the route described as in SPRAAH2 or set
> the whole thing up as a JFFS2 as you have.
> 
> The latter may offer some flexibility, but in terms of setting up both
> routes are tedious. Do you have an opinion?
> 
> 
> Regards,
> 
> Andrew
> 
> On Wed, 2007-04-11 at 00:55 -0700, Andy Ngo wrote:
> > Note also that the default NOR flash memory controller setting in
> the
> > current
> > DVEVM configuration (u-boot) is NOT optimal (everything is set at
> max
> > timeout, wait states, etc).  Hence the performance on the JFFS2
> > filesystem is 
> > not efficient and is relatively slow.  I changed the value to
> > asynchronous 
> > configuration register (NOR flash is attached to CS2) as follows:
> > 
> >     ACFG2 = 0
> >         | ( 0 << 31 ) // selectStrobe      = 0;
> >         | ( 0 << 30 ) // extWait           = 0;
> >         | ( 0 << 26 ) // writeSetup        = 0;    //   0 ns
> >         | ( 3 << 20 ) // writeStrobe       = 3;    //  35 ns
> >         | ( 0 << 17 ) // writeHold         = 0;    //   0 ns
> >         | ( 3 << 13 ) // readSetup         = 3;    //  30 ns
> >         | ( 10<< 7 )  // readStrobe        = 10;   // 120 ns
> >         | ( 0 << 4 )  // readHold          = 0;    //   0 ns
> >         | ( 3 << 2 )  // turnAround        = 3;    //  ?? ns ( MAX
> > TIMEOUT )
> >         | ( 1 << 0 )  // asyncSize         = 1;    // 16-bit bus
> >         ;
> > 
> > and it gives me a lot better performance.  You can add code to set
> the
> > CS2 ACR
> > register in board/davinci/platform.S (in the same area where CS3,
> CS4,
> > and CS5
> > are initialized).
> > 
> > Regards,
> > Andy
> > 
> > ----- Original Message ----
> > From: Andy Ngo <[EMAIL PROTECTED]>
> > To: Yogesh Kumar M <[EMAIL PROTECTED]>;
> > [email protected]
> > Sent: Tuesday, April 10, 2007 11:25:52 PM
> > Subject: Re: NOR flash file system on Davinci
> > 
> > Yogesh,
> > 
> > I have done so.  Took me a while to figure it out but I eventually
> did
> > it.
> > Here is a summary of the steps for those who want to try:
> > 
> > 1) Download the GIT kernel (linux-davinci-2.6); the Montavista
> version
> > doesn't
> >    seem to support it
> > 2) Create a default config for the DVEVM
> >    make ARCH=arm CROSS_COMPILE=arm_v5t_le-
> > davinci_evm_dm644x_defconfig
> > 3) Configure the kernel to disable IDE (MTD NOR flash can only be
> used
> > when IDE support 
> >    is disabled)
> >   
> >    make ARCH=arm CROSS_COMPILE=arm_v5t_le- menuconfig
> >        => Device Drivers => ATA/ATAPI/MFM/RLL support => unselect
> > ATA/ATAPI/MFM/RLL support
> >  
> >    * NOTE: no need to enable MTD NOR JFFS2 support since it's
> already
> > enabled in 
> >            the default DVEVM configuration from step 2
> > 
> >    The flash layout is already defined in
> > arch/arm/mach-davinci/board-evm.c:
> > 
> >    static struct mtd_partition davinci_evm_partitions[] = {
> >         /* bootloader (U-Boot, etc) in first 4 sectors */
> >         {
> >               .name             = "bootloader",
> >               .offset           = 0,
> >               .size             = 4 * SZ_64K,
> >               .mask_flags       = MTD_WRITEABLE, /* force read-only
> */
> >         },
> >         /* bootloader params in the next 1 sectors */
> >         {
> >               .name             = "params",
> >               .offset           = MTDPART_OFS_APPEND,
> >               .size             = SZ_64K,
> >               .mask_flags       = 0,
> >         },
> >         /* kernel */
> >         {
> >               .name             = "kernel",
> >               .offset           = MTDPART_OFS_APPEND,
> >               .size             = SZ_2M,
> >               .mask_flags       = 0
> >         },
> >         /* file system */
> >         {
> >               .name             = "filesystem",
> >               .offset           = MTDPART_OFS_APPEND,
> >               .size             = MTDPART_SIZ_FULL,
> >               .mask_flags       = 0
> >         }
> >     };
> > 
> >     so the 4 MTD partitions should look like this:
> > 
> >         0x00000000-0x00040000 : "bootloader"
> >     0x00040000-0x00050000 : "params"
> >         0x00050000-0x00250000 : "kernel"
> >     0x00250000-0x01000000 : "filesystem"
> > 
> >     Your JFFS2 filesystem will reside in the 4th MTD partition.
> > 
> > 4) Build the kernel
> > 5) Prepare your JFFS2 filesystem
> >     a) Download the mtd utilities from
> > http://www.linux-mtd.infradead.org/
> >        and build it to generate the mkfs.jffs2 utility
> >     b) Gather the rootfs with which you want to generate the
> > filesystem;
> >        I used the sample ramdisk.gz mentioned from spraah2.pdf:
> >           gunzip ramdisk.gz
> >           mkdir myrootfs
> >           mount -o loop ramdisk myrootfs
> >     c) Create the JFFS2 filesystem
> >           mkfs.jffs2 -d myrootfs -o rootfs.jffs2 -e 0x10000
> > 6) Use u-boot to flash the uImage (from 4) and rootfs.jffs2 (from
> 5c)
> >     a) Flash uImage at 0x02050000
> >     b) Flash rootfs.jffs2 at 0x02250000
> > 7) Adjust your boot environment variables to boot to the new NOR
> JFFS2
> > filesystem
> >     a) setenv bootargs mem=120M console=ttyS0,115200n8
> > root=/dev/mtdblock3 rw noinitrd noatime rootfstype=jffs2 ip=off
> >     b) saveenv
> > 8) You are done! Reboot your board and you will boot to your new
> JFFS2
> > filesystem
> >    on the NOR flash.  NOTE: the first time you boot, the JFFS2
> > processing will
> >    prepare (format) the filesystem for use so you will hang at the
> > kernel message
> >    "Freeing init memory: 80K" for a few minutes so be patient.  The
> > next time you
> >    boot you won't get this "hung delay" as your JFFS2 filesystem is
> > already formatted.
> > 
> > I spent over a week figuring this out (wasting most of my time on
> the
> > Montavista
> > kernel until I switched over to the GIT kernel) I hope this helps
> > anyone who wants
> > to create a small footprint system, which doesn't have the luxury of
> a
> > hard drive 
> > as the DVEVM board does.
> > 
> > Regards,
> > Andy
> > 
> > 
> >      
> > 
> > ----- Original Message ----
> > From: Yogesh Kumar M <[EMAIL PROTECTED]>
> > To: [email protected]
> > Sent: Monday, April 9, 2007 1:34:54 AM
> > Subject: NOR flash file system on Davinci
> > 
> > Hi,
> > 
> >     Has anybody successfully ported NOR flash based file system on
> > DAVINCI and
> > successful in booting linux with flash file system?
> > please let me know what changes to be made to the kernel for
> detecting
> > the
> > flash and where should I specify the memory map .
> > 
> > thanks
> > yogesh
> > 
> > 
> > _______________________________________________
> > Davinci-linux-open-source mailing list
> > [email protected]
> >
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> > 
> > 
> > 
> > _______________________________________________
> > Davinci-linux-open-source mailing list
> > [email protected]
> >
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> > 
> > 
> > 
> > _______________________________________________
> > Davinci-linux-open-source mailing list
> > [email protected]
> >
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> 
> 

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to