[U-Boot] U-Boot v2009.08 & JFFS2 (NOR)

Hello U-Boot Users,
I am working on updating a EP8248 based board from a very old U-Boot 1.1.2 to v2009.08.
The board has 2 banks of 32MB/256 sector NOR flash at 0xFC000000 and 0xFE000000. The (single) JFFS2 partition is located at 0xFE020000 to 0xFFEFFFFF.
Using U-Boot 1.1.2, the files within the partition show up just fine w/ the ls command. Using U-Boot v2009.08, when booting Linux via TFTP, the JFFS2 partition can be mounted (mount -t jffs2 /dev/mtdblock2 /mnt), and the files show up fine. I cannot seem to get U-Boot to recognize the JFFS2 partition, however.
The existing JFFS2 configuration in U-Boot 1.1.2 is:
#define CFG_JFFS2_FIRST_BANK 1 #define CFG_JFFS2_FIRST_SECTOR 1 #define CFG_JFFS2_NUM_BANKS 1
In v2009.08, I have tried:
#define CONFIG_SYS_JFFS2_FIRST_BANK 1 #define CONFIG_SYS_JFFS2_FIRST_SECTOR 1 #define CONFIG_SYS_JFFS2_NUM_BANKS 1
My debug output shows me:
start_phys: fc000000 end_phys: fbffffff part->size: ffffffff
Looking through code, I saw that the above macros were no longer used. The doc/README.JFFS2 seemed to be out of date. I tried copying from configurations that look like they may work from other platforms:
#define CONFIG_JFFS2_DEV "nor1" #define CONFIG_JFFS2_PART_SIZE 0x01edffff #define CONFIG_JFFS2_PART_OFFSET 0x00020000 #define CONFGI_SYS_JFFS2_SORT_FRAGMENTS
This gives me the correct start and end address, but it still does not recognize the JFFS2 partition:
=> ls start_phys: fe020000 end_phys: ffefffff part->size: 1edffff size: 131072 Scanning JFFS2 FS: . add_node: malloc failed add_node failed! ls: Failed to scan JFFSv2 file structure
Next, I tried setting up the mtd partitions:
#define CONFIG_CMD_MTDPARTS #define CONFIG_MTD_DEVICE #define CONFIG_FLASH_CFI_MTD #define MTDIDS_DEFAULT "nor1=primary" #define MTDPARTS_DEFAULT "mtdparts=primary:31616k@128k(mypart)" #define CONFIG_EXTRA_ENV_SETTINGS \ "mtdids=nor1=primary \0" \ "mtdparts=" MK_STR(MTDPARTS_DEFAULT) "\0"
But, again, the JFFS2 fails to load with the same error as above.
I am kind of out of ideas. Can anyone give some advice?
Thanks, Tommy

On Mon, 2009-09-14 at 20:08 -0500, Tommy Wang wrote:
Hello U-Boot Users,
I am working on updating a EP8248 based board from a very old U-Boot 1.1.2 to v2009.08.
The board has 2 banks of 32MB/256 sector NOR flash at 0xFC000000 and 0xFE000000. The (single) JFFS2 partition is located at 0xFE020000 to 0xFFEFFFFF.
Using U-Boot 1.1.2, the files within the partition show up just fine w/ the ls command. Using U-Boot v2009.08, when booting Linux via TFTP, the JFFS2 partition can be mounted (mount -t jffs2 /dev/mtdblock2 /mnt), and the files show up fine. I cannot seem to get U-Boot to recognize the JFFS2 partition, however.
The existing JFFS2 configuration in U-Boot 1.1.2 is:
#define CFG_JFFS2_FIRST_BANK 1 #define CFG_JFFS2_FIRST_SECTOR 1 #define CFG_JFFS2_NUM_BANKS 1
In v2009.08, I have tried:
#define CONFIG_SYS_JFFS2_FIRST_BANK 1 #define CONFIG_SYS_JFFS2_FIRST_SECTOR 1 #define CONFIG_SYS_JFFS2_NUM_BANKS 1
My debug output shows me:
start_phys: fc000000 end_phys: fbffffff part->size: ffffffff
Looking through code, I saw that the above macros were no longer used. The doc/README.JFFS2 seemed to be out of date. I tried copying from configurations that look like they may work from other platforms:
#define CONFIG_JFFS2_DEV "nor1" #define CONFIG_JFFS2_PART_SIZE 0x01edffff #define CONFIG_JFFS2_PART_OFFSET 0x00020000 #define CONFGI_SYS_JFFS2_SORT_FRAGMENTS
This gives me the correct start and end address, but it still does not recognize the JFFS2 partition:
=> ls start_phys: fe020000 end_phys: ffefffff part->size: 1edffff size: 131072 Scanning JFFS2 FS: . add_node: malloc failed add_node failed! ls: Failed to scan JFFSv2 file structure
Next, I tried setting up the mtd partitions:
#define CONFIG_CMD_MTDPARTS #define CONFIG_MTD_DEVICE #define CONFIG_FLASH_CFI_MTD #define MTDIDS_DEFAULT "nor1=primary" #define MTDPARTS_DEFAULT "mtdparts=primary:31616k@128k(mypart)" #define CONFIG_EXTRA_ENV_SETTINGS \ "mtdids=nor1=primary \0" \ "mtdparts=" MK_STR(MTDPARTS_DEFAULT) "\0"
But, again, the JFFS2 fails to load with the same error as above.
I am kind of out of ideas. Can anyone give some advice?
How about using something like the following:
#undef CONFIG_SYS_USE_UBI /* Define to use UBI */ #undef CONFIG_SYS_USE_UBIFS /* Define to Use UBIFS */ #define CONFIG_CMD_JFFS2 /* Turn on the "fsload", "ls", and "fsinfo" commands */
#ifdef CONFIG_SYS_USE_UBIFS
#define CONFIG_CMD_UBIFS /* Turn on the "ubifsmount", "ubifsls", */ /* and "ubifsload" commands. */ #define CONFIG_LZO /* Use LZO library - needed for UBIFS */ #define CONFIG_SYS_USE_UBI /* Use UBI */
#endif /* CONFIG_SYS_USE_UBIFS */
#ifdef CONFIG_SYS_USE_UBI
#ifdef CONFIG_SYS_MALLOC_LEN #undef CONFIG_SYS_MALLOC_LEN #endif #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 1 * (1024 * 1024))
#define CONFIG_CMD_UBI /* Turn on the "ubi" command */ #define CONFIG_RBTREE /* Red-black tree support - needed for UBI */ #define CONFIG_MTD_UBI_DEBUG /* Enable UBI debugging */ #define CONFIG_MTD_PARTITIONS /* Support MTD partitions */
#endif /* CONFIG_SYS_USE_UBI */
#ifdef CONFIG_CMD_JFFS2 #ifndef CONFIG_MTD_PARTITIONS #define CONFIG_MTD_PARTITIONS /* Support MTD partitions */ #define CONFIG_MTD_DEVICE /* Support MTD devices */ #endif /* CONFIG_MTD_PARTITIONS */ #endif /* CONFIG_CMD_JFFS2 */
#ifdef CONFIG_MTD_PARTITIONS
/* MTD partition support */ #define CONFIG_FLASH_CFI_MTD /* Export CFI flash to the MTD layer */ #define CONFIG_CMD_MTDPARTS /* Turn on the "chpart" and "mtdparts" commands */
/* Default MTD partition table */ #define MTDIDS_DEFAULT "nor0=yourBoard-0" #define MTDPARTS_DEFAULT "mtdparts=yourBoard-0:" \ "384k(U-Boot),128k(U-Boot Env)," \ "384k(Backup U-Boot),128k(Backup U-Boot Env)," \ "13m(FIT Image)," \ "2m(Backup JFFS),112m(Data JFFS);"
#endif /* CONFIG_MTD_PARTITIONS */
participants (2)
-
Jon Diekema
-
Tommy Wang