[U-Boot] uboot kernel rejects filesystem

Detlev Zundel dzu at denx.de
Tue May 12 17:40:42 CEST 2009


Hi Bharat,

[re-adding the mailing list as others may also profit from the
discussion]

> Thank you for the prompt reply.
>
> Unfortunately in linux tree, my board specific MTD partition info is not
> preset.
>
> Is there any quick way round.

Yep - thinking some more, I see two possible (quick) solutions.

> M/M Layout:
> 0xBF000000 : U-BOOT
> 0xBF040000 : u_boot_config_area
> 0xBF060000: vm_linux_image (with u-boot header : created by mkimage and LZMA)
> 0xBF260000: root_fs area... Here I have flashed squashfs (without u-boot hdr)
> Should I?
> 0xBFFC0000: root_fs_data .. JFFS RW filesystem

Just as a sidenote - are you able to use the JFFS (really JFFS, not
JFFS2?) image?  If so, then you _do_ have an MTD partition in Linux
which you only need to tweak.

> I do following on u-boot prompt
>
> board>bootm 0xBF060000 0xBF260000

This command only makes sense, if the image at 0xbf260000 is wrapped
with mkimage.  This is exactly the first solution that you can try,
i.e. use mkimage with -T ramdisk to wrap your image and use the it with
the two argument bootm version like you tried.  Maybe you will need to
specify "rootfstype=squashfs" on the command line also, you will have to
check this.

Having said this, if you are on an ARM platform, the above will very
likely not work, so you will have to turn to the other solution I have
in mind:

> NO SUCCESS
> again I try:
> with modification to
> include/configs/my_board.h file as
>
> #define MTDIDS_DEFAULT "nor0=app"
> #define MTDPARTS_DEFAULT \
>     "mtdparts=app:64k(u-boot),64k(boot_config),64k(board_config),2048k
> (kernel),13696(rootfs),256kb(roots_data)"
> #define CONFIG_BOOTARGS "root=/dev/mtdblock4 rootfstype=squashfs console=
> ttyS1,115200"
>
> board>bootm 0xbf060000

The "mtdparts" variable in U-Boot has no automagic connection to the
Linux kernel.  It was designed however with connecting in Linux by using
the following Linux config:

drivers/mtd/Kconfig:106
 "Device Drivers"
config MTD_CMDLINE_PARTS
        bool "Command line partition table parsing"
        depends on MTD_PARTITIONS = "y" && MTD = "y"
        ---help---
          Allow generic configuration of the MTD partition tables via the kernel
          command line. Multiple flash resources are supported for hardware where
          different kinds of flash memory are available.

So if you have this support in your Linux configuration, you can pass
the whole "mtdpart=.." through the linux commandline.  A nasty part here
is the beginning (you chose "app") of the configuration - as you will
need to find what your kernel thinks the name of the flash chip is.
 
> I think in second case it does make sense to pass mtdblock4 since my kernel
> (;;) does not recognize it.
>
> Is there any work around like adding mtd table in linux kernel from uboot via
> bootargs.

Yes, like I stated above.

Please try either method - if you are trying via MTD, be sure to include
the contents of /proc/mtd and the relevant section of the Linux bootlog
where the MTD layer registers in your next mail.

Thanks
  Detlev

PS: And please stop quoting the full text of the whole e-mail thread as
    this is considered to be impolite on mailing lists.

-- 
Each language has its purpose, however humble. Each language expresses
the Yin and Yang of software. Each language has its place within the Tao.

But do not program in COBOL if you can avoid it.
                           -- The Tao of Programming
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de


More information about the U-Boot mailing list