Trying to boot mainline on Wink Hub v1

Rogan Dawes rogan at dawes.za.net
Sun Jun 25 12:31:01 PDT 2023


Thanks for the suggestion. It definitely sounds like it might
short-cut my problems. I'd obviously still like to try and do things
the "correct" way, whatever that is. My attempts to load the kernel
and device tree in a FIT so far just end with:

=> nand read ${loadaddr} app-kernel 0x00600000

NAND read: device 0 offset 0x2b00000, size 0x600000
 6291456 bytes read: OK
=> iminfo ${lodaddr}

## Checking Image at 42000000 ...
Unknown image format!
=> md.b ${loadaddr} 0x80
42000000: d0 0d fe ed 00 5a 81 08 00 00 00 38 00 5a 7c fc    .....Z.....8.Z|.
42000010: 00 00 00 28 00 00 00 11 00 00 00 10 00 00 00 00    ...(............
42000020: 00 00 00 6c 00 5a 7c c4 00 00 00 00 00 00 00 00    ...l.Z|.........
42000030: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00    ................
42000040: 00 00 00 03 00 00 00 04 00 00 00 5c 64 98 90 71    ...........\d..q
42000050: 00 00 00 03 00 00 00 21 00 00 00 00 61 72 6d 20    .......!....arm
42000060: 6b 65 72 6e 65 6c 2c 20 72 61 6d 64 69 73 6b 20    kernel, ramdisk
42000070: 61 6e 64 20 46 44 54 20 62 6c 6f 62 00 00 00 00    and FDT blob....

Seems like it is loaded in the right place, though, and corresponds
with the FIT file that I would expect to be there.

Anyway, will try replicate the partition information directly into the DT.

I also found the memory base address in the U-Boot bdinfo command output:

=> bdinfo
arch_number = 0x000009E3
boot_params = 0x40000100
DRAM bank   = 0x00000000
-> start    = 0x40000000
-> size     = 0x04000000

So I updated the .its as shown, with the image loaded from NAND to
32MB, the kernel relocated to 16MB, and no relocation/entry data for
the device tree. I also tried loading it to 0x41000000 (by updating
${loadaddr}, specified that the kernel should be relocated to
0x42000000, which is where it usually was to be found, with the same
"Unknown image format!" error:

/dts-v1/;

/ {
        description = "arm kernel, ramdisk and FDT blob";
        #address-cells = <1>;

        images {
                kernel {
                        description = "ARM MXS Kernel";
                        data = /incbin/("Image.gz");
                        type = "kernel";
                        arch = "arm";
                        os = "linux";
                        compression = "gzip";
                        load = <0x41000000>;
                        entry = <0x41000000>;
                        hash {
                                algo = "sha1";
                        };
                };

                imx28-wink-hub-v1 {
                        description = "lx2162aqds-dtb";
                        data = /incbin/("imx28-wink-hub-v1.dtb");
                        type = "flat_dt";
                        arch = "arm";
                        os = "linux";
                        compression = "none";
                        hash {
                                algo = "sha1";
                        };
                };
        };

        configurations {
                default = "wink-hub-v1";
                wink-hub-v1 {
                        description = "config for Wink Hub v1";
                        kernel = "kernel";
                        fdt = "imx28-wink-hub-v1";
                };
        };
};

Suggestions welcome.

Regards,

Rogan

On Sun, 25 Jun 2023 at 17:24, Andrew Lunn <andrew at lunn.ch> wrote:
>
> > I *think* my problem is that U-Boot is not aware of the device tree,
> > as I have been passing it as an appended item to the kernel, thinking
> > that U-Boot was not Device-Tree compliant. Consequently, it is unable
> > to patch it with the contents of the mtdparts environment variable,
> > and hence the kernel never knows to go looking for the mtd partitions.
>
> You should be able to fully describe the MTD partition in DT. For
> example, from arch/arm/boot/dts/kirkwood-dockstar.dts.
>
> &nand {
>         status = "okay";
>
>         partition at 0 {
>                 label = "u-boot";
>                 reg = <0x0000000 0x100000>;
>                 read-only;
>         };
>
>         partition at 100000 {
>                 label = "uImage";
>                 reg = <0x0100000 0x400000>;
>         };
>
>         partition at 500000 {
>                 label = "data";
>                 reg = <0x0500000 0xfb00000>;
>         };
> };
>
> You can then continue with appending the DT blob to the kernel. All
> the bootloader needs to do is load the kernel.
>
>     Andrew



More information about the linux-arm-kernel mailing list