Enable UBI support for a platform
Jiandi An
jan at nvidia.com
Thu Sep 10 02:30:46 AEST 2020
> On 09/09/20 6:15 am, Jiandi An wrote:
> >
> >> On 08/09/20 12:39 am, Kun Zhao wrote:
> >>>
> >>> On 9/5/20 5:49 AM, Deepak Kodihalli wrote:
> >>>> Hi Kun,
> >>>>
> >>>> On 05/09/20 5:32 am, Kun Zhao wrote:
> >>>>> Hi Team,
> >>>>>
> >>>>> My platform is based on ast2500, and I’ve already been able to
> >>>>> built out the ubi image. But when I tried to test it with qemu, it
> >>>>> just stopped at u-boot because ‘can’t get kernel image,
> >>>>>
> >>>>> qemu-system-arm: Aspeed iBT has no chardev backend
> >>>>>
> >>>>> U-Boot 2016.07 (Sep 04 2020 - 19:47:48 +0000)
> >>>>>
> >>>>> Watchdog enabled
> >>>>>
> >>>>> DRAM: 496 MiB
> >>>>>
> >>>>> Flash: 32 MiB
> >>>>>
> >>>>> *** Warning - bad CRC, using default environment
> >>>>>
> >>>>> In: serial
> >>>>>
> >>>>> Out: serial
> >>>>>
> >>>>> Err: serial
> >>>>>
> >>>>> Net: MAC0 : RGMII
> >>>>>
> >>>>> MAC1 : RGMII
> >>>>>
> >>>>> FTGMAC100#0
> >>>>>
> >>>>> Error: FTGMAC100#0 address not set.
> >>>>>
> >>>>> , FTGMAC100#1
> >>>>>
> >>>>> Error: FTGMAC100#1 address not set.
> >>>>>
> >>>>> Hit any key to stop autoboot: 0
> >>>>>
> >>>>> Wrong Image Format for bootm command
> >>>>>
> >>>>> ERROR: can't get kernel image!
> >>>>>
> >>>>> ast#
> >>>>>
> >>>>> And I found the bootargs is not right,
> >>>>>
> >>>>> ast# print
> >>>>>
> >>>>> baudrate=115200
> >>>>>
> >>>>> bootargs=console=ttyS4,115200n8 root=/dev/ram rw
> >>>>>
> >>>>> bootcmd=bootm 20080000
> >>>>>
> >>>>> bootdelay=2
> >>>>>
> >>>>> Checked in the build folder for
> >>>>> tmp/work/myplatform-openbmc-linux-gnueabi/u-boot-aspeed/1_v2016.07
> >>>>> +g
> >>>>> itAUTOINC+1ded9fa3a2-r0/ and found the none of the following
> >>>>> itAUTOINC+patches
> >>>>> are there,
> >>>>>
> >>>>> 0002-config-ast-common-hack-bootopts.patch
> >>>>>
> >>>>> 0003-config-ast-common-Add-bootopts-to-support-ubi-and-mt.patch
> >>>>>
> >>>>> 0004-config-ast-common-Add-conditional-factory-reset-comm.patch
> >>>>>
> >>>>> 0005-config-ast-common-Fall-back-to-secondary-flash-on-fa.patch
> >>>>>
> >>>>> I think that’s why the bootargs is not correct.
> >>>>>
> >>>>> This is the details of how I enabled the ubi support in my
> >>>>> platform recipes,
> >>>>>
> >>>>> 1. In meta-myplatform/conf/distro/openbmc-myplatform.conf, I
> >>>>> added,
> >>>>>
> >>>>> require conf/distro/include/phosphor-base.inc
> >>>>>
> >>>>> require conf/distro/include/phosphor-ubi.inc
> >>>>
> >>>> You should just need the one line above, plus a device tree change
> >>>> for your
> >> system. The default openbmc-flash-layout.dtsi doesn't make a ubifs partition.
> >> You can for eg look at witherspoon's dts, which uses ubifs.
> >>> Hi Deepak, thank you for reply. I've tried to use the witherspoon's
> >>> flash layout
> >> per your tips here. But it still stops at u-boot with "can't get kernel image!"
> error.
> >> Do I need to enable any kernel config options?
> >>
> >>
> >> Hi Kun, I don't think you need additional kernel config updates. I
> >> suspect something wrong with the way the image is built. Are you able
> >> to see expected values for the u-boot environment variables and MTD
> partitions? For eg:
> >>
> >> ast# mtdparts
> >> device nor0 <bmc>, # parts = 3
> >> #: name size offset mask_flags
> >> 0: u-boot 0x00060000 0x00000000 0
> >> 1: u-boot-env 0x00020000 0x00060000 0
> >> 2: obmc-ubi 0x01f80000 0x00080000 0
> >> active partition: nor0,0 - (u-boot) 0x00060000 @ 0x00000000
> >>
> >
> > Hi Deepak,
> > One thing is no mtdparts command from u-boot. Do we need to add
> CONFIG_CMD_MTDPARTS?
> > Here the comment says adding CONFIG_CMD_MTDPARTS won't work.
> > https://lists.denx.de/pipermail/u-boot/2012-December/142837.html
>
> Hi Jiandi, the comment you pointed to is in the context if a very old u-boot release,
> so I don't think it applies to the u-boot release that OpenBMC uses. MTD and UBI
> support is optional in the u-boot AST config, and is enabled if
> MTDPARTS_DEFAULT is set. This flag further sets CONFIG_MTD_PARTITIONS.
> MTDPARTS_DEFAULT is enabled via a u-boot patch that we carry, and that is
> picked up if the 'obmc-ubi-fs' distro feature is enabled (see meta-
> phosphor/aspeed-layer/recipes-bsp/u-boot/u-boot-aspeed.inc). So it still seems
> like this feature is not enabled in the image or there is some other issue with
> building the image.
>
> > Actually using witherspoon's flash layout
> > https://github.com/ibm-openbmc/openbmc/blob/OP940/meta-ibm/meta-
> wither
> > spoon/recipes-kernel/linux/linux-aspeed/0001-ARM-dts-Aspeed-Witherspoo
> > n-128-Update-BMC-partitioni.patch
> >
> > So the one we have in the device tree is as follows..
>
> Witherspoon-128's (which has a different device tree than witherspoon) BMC has
> a 128M flash (you can see the sizes of the partitions below in the device tree add
> up to 128M). So this would work if your BMC has a 128M flash. The obmc-ubi
> partition would be smaller for eg for a 32M flash.
Thanks Deepak. So I tried with aspeed-bmc-opp-witherspoon.dts now
https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts#L231
with obmc-ubi starting at 0x80000 with size 0x1F80000
&fmc {
status = "okay";
flash at 0 {
status = "okay";
m25p,fast-read;
label = "bmc";
//#include "openbmc-flash-layout.dtsi"
partitions {
#address-cells = < 1 >;
#size-cells = < 1 >;
compatible = "fixed-partitions";
u-boot at 0 {
reg = < 0 0x60000 >;
label = "u-boot";
};
u-boot-env at 60000 {
reg = < 0x60000 0x20000 >;
label = "u-boot-env";
};
obmc-ubi at 80000 {
reg = <0x80000 0x1F80000>;
label = "obmc-ubi";
};
};
};
};
Still seeing during kernel boot that /dev/mtdblock: can't open blockdev
[ 1.356025] Checked W+X mappings: passed, no W+X pages found
[ 1.356346] Run /init as init process
rofs = squashfs rwfs = jffs2
[ 2.033408] /dev/mtdblock: Can't open blockdev
mount: mounting /dev/mtdblock on run/initramfs/ro failed: No such file or directory
[ 2.043247] MTD: Couldn't look up '/dev/mtdblock': -2
mount: mounting /dev/mtdblock on run/initramfs/rw failed: No such file or directory
Mounting read-write /dev/mtdblock filesystem failed. Please fix and run
mount /dev/mtdblock run/initramfs/rw -t jffs2 -o rw
to to continue, or do change nothing to run from RAM for this boot.
Enter password to try to manually fix.
After fixing run exit to continue this script, or reboot -f to retry, or
touch /takeover and exit to become PID 1 allowing editing of this script.
Give root password for system maintenance
(or type Control-D for normal startup):
I searched and saw this feature discussion
https://github.com/openbmc/openbmc/issues/3177
which has a commit for uboot: Add support for ubi and mtd partitioning
https://gerrit.openbmc-project.xyz/c/openbmc/openbmc/+/5911
It went in meta-phosphor/common/recipes-bsp/u-boot/files/ as a patch.
https://github.com/openbmc/openbmc/commit/dd7015393fdab93426aab61a08b48a698c9c100d
There is also this
https://gerrit.openbmc-project.xyz/c/openbmc/openbmc/+/10577
These are not in our code base.
Do we need these patches?
>
> > &fmc {
> > status = "okay";
> > flash at 0 {
> > status = "okay";
> > m25p,fast-read;
> > label = "bmc";
> > //#include "openbmc-flash-layout.dtsi"
> >
> > partitions {
> > #address-cells = < 1 >;
> > #size-cells = < 1 >;
> > compatible = "fixed-partitions";
> > u-boot at 0 {
> > reg = < 0 0x60000 >;
> > label = "u-boot";
> > };
> > u-boot-env at 60000 {
> > reg = < 0x60000 0x20000 >;
> > label = "u-boot-env";
> > };
> > obmc-ubi at 80000 {
> > reg = <0x80000 0x7F80000>;
> > label = "obmc-ubi";
> > };
> > };
> > };
> > };
> >
> >>
> >>>> Does anyone know why the default is static partitions, and not ubifs?
> >>>>
> >>>> Regards,
> >>>> Deepak
> >>>>
> >>>>> 2. In meta-myplatform/conf/machine/myplatform.conf, I added,
> >>>>>
> >>>>> IMAGE_FSTYPES += " mtd-ubi mtd-ubi-tar"
> >>>>>
> >>>>> OBMC_MACHINE_FEATURES += " obmc-ubi-fs"
> >>>>>
> >>>>> Do I miss anything?
> >>>>>
> >>>>> Thanks.
> >>>>>
> >>>>> Best regards,
> >>>>>
> >>>>> Kun Zhao
> >>>>>
> >>>>> /*
> >>>>>
> >>>>> zkxz at hotmail.com <mailto:zkxz at hotmail.com>
> >>>>>
> >>>>> */
> >>>>>
> >>>>
> >>> Kun
> >>>
> >
More information about the openbmc
mailing list