On 29/03/2011 11:56 AM, Scott Wood wrote: > On Tue, 29 Mar 2011 11:37:25 -0600 > Nicholas Kinar<n.ki...@usask.ca> wrote: > >> On 29/03/2011 10:14 AM, Nicholas Kinar wrote: >>> Also as instructed in the README.NAND, README.JFFS2 and >>> README.JFFS2_NAND files found in the /doc/ directory, I've tried >>> defining the following in my >>> /include/configs/at91sam9rlek.h configuration file: >>> >>> #define CONFIG_JFFS2_NAND 1 >>> #define CONFIG_CMD_JFFS2 >>> #define CONFIG_SYS_MAX_FLASH_BANKS 1 >>> #define CONFIG_CMD_NAND 1 >>> >> I've now added the following #undef to the list of defines above: >> >> #undef CONFIG_CMD_FLASH >> >> Now after typing "help" at the U-Boot command line, I can finally see >> the fsload command listed. However running fsload gives the following >> error: >> >> U-Boot> fsload >> support for FLASH devices not present >> incorrect device: nor0 >> >> This appears to be due to some code in the /common/cmd_jffs2.c file. >> Can fsload be only used for NOR memory, or is there a way to use it for >> NAND flash as well? > "support for FLASH devices not present" is printed when it's trying to act > on a device labelled as NOR, but there's no NOR support present. > > Try the "chpart" command to switch to a NAND device, and/or make sure that > your mtdparts variable is set correctly. > > -Scott >
Thank you very much for your response, Scott; this is greatly appreciated! To compile in support for the "chpart" command, I've now added the following to my /include/configs/at91sam9rlek.h file: #define CFG_NAND_BOOT #define CONFIG_JFFS2_NAND 1 #define CONFIG_JFFS2_CMDLINE #define CONFIG_CMD_JFFS2 #define CONFIG_CMD_MTDPARTS #define CONFIG_MTD_DEVICE #define MTDIDS_DEFAULT "nand0=nand_flash" #define MTDPARTS_DEFAULT "mtdparts=nand_flash:-(jffs2)" #define CONFIG_SYS_MAX_FLASH_BANKS 1 #undef CONFIG_CMD_FLASH U-boot compiles cleanly, but I find that after U-Boot loads on my embedded hardware, the "mtdids" and "mtdparts" variables are not set in the U-Boot environment. However, since these are environment variables, I find that this can be done at the U-Boot command line: U-Boot> nand info Device 0: nand0, sector size 256 KiB U-Boot> setenv mtdids nand0=nand_flash U-Boot> setenv mtdparts mtdparts=nand_flash:-(jffs2) U-Boot> chpart nand0,0 partition changed to nand0,0 U-Boot> ls Scanning JFFS2 FS: ls: Failed to scan JFFSv2 file structure U-Boot> fsload ### JFFS2 loading 'uImage' to 0x22000000 Scanning JFFS2 FS: load: Failed to scan JFFSv2 file structure ### JFFS2 LOAD ERROR<0> for uImage! Of course, fsload cannot load the uImage, since I am working with a blank flash and there is no image pre-loaded on the flash. Using the "saveenv" command, I intend to save these environment variables. Continuing on, I will load an image on the blank flash, and then I will try to load the Linux kernel. I will then post my results on this mailing list as a response. I have two additional questions associated with booting the kernel from NAND flash on my custom hardware: (1) Does replacing jffs2_1pass.c with jffs2_nand_1pass.c in the fs/jffs2 directory influence the robustness of the fsload code? (2) Does it take a long time to load the Linux kernel from a JFFS2 filesystem on NAND flash using the fsload command (i.e. http://old.nabble.com/Performance-in-Booting-Linux-w--Device-Tree-via-U-Boot-out-of-JFFS2-on-NAND-td15879327.html), or has this been cleaned up in the current u-boot-2010.09 code? Nicholas _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot