On 12.01.2023 23:51, Linus Walleij wrote:
On Sun, Jan 8, 2023 at 12:33 AM Linus Walleij <linus.wall...@linaro.org> wrote:

I guess trying to figure out what lzma-loader does and implement
the same for ARM is the way to go, or at some point I felt like
implementing U-Boot for the BCM53xx and implement SEAMA
loading from NAND in U-Boot is maybe easier...

How hard can it be :P

U-Boot 2023.01-00442-g6b75c294818f-dirty (Jan 12 2023 - 21:46:18
+0100)Broadcom Northstar

BCMNS Northstar SoC
Model: Northstar model
DRAM:  128 MiB (effective 256 MiB)
WARNING: Caches not enabled
Core:  13 devices, 7 uclasses, devicetree: embed
MMC:
Loading Environment from nowhere... OK
In:    serial@300
Out:   serial@300
Err:   serial@300
Model: Northstar model
Net:   No ethernet found.
northstar>
northstar>
northstar>

Nice work! I caught something with decompressing lzma compressed images with U-Boot's lzmadec but had to take a quick detour to Greece before I could conclude my test.

Side question, did you risk writing your test builds to the flash or have you already got the flash in an easily reprogrammable set up?

I'm doing this on a UniElec U7621-06 (MediaTek MT7621 SoC) which has got 256 MiB DRAM. Running Linux 6.2.0-rc3 with mainline U-Boot.

DRAM base is at 0x80000000 so I can use the 0x80000000 - 0x90000000 range (256 MiB) for writing to memory.

I tried letting U-Boot's lzmadec decompress the kernel image. Decompressing fails when the kernel size reaches a certain point.

=> tftpboot 0x83000000 test-uImage.lzma; tftpboot 0x84f00000 mt7621-unielec-u7621-06-16m.dtb; bootm 0x83000000 - 0x84f00000
[...]
## Booting kernel from Legacy Image at 83000000 ...
   Image Name:   Linux-6.2.0-rc3+
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    19134142 Bytes = 18.2 MiB
   Load Address: 80001000
   Entry Point:  80ed84c4
   Verifying Checksum ... OK
## Flattened Device Tree blob at 84f00000
   Booting using the fdt blob at 0x84f00000
Working FDT set to 84f00000
   Uncompressing Kernel Image
lzma compressed: uncompress error 1
Must RESET board to recover
=>

To figure out at what size lzmadec fails, I added a file with randomly generated data to the root filesystem so the LZMA compressor can't do much to shrink it.

head -c 2M < /dev/urandom > file.bin

Since the image is compressed in the end, I can't exactly add bytes and predict what the size of the compressed file will be. So after a lot of compiling and trying on the board, this is the closest I got.

LZMA compressed kernel size in bytes which U-Boot’s lzmadec can decompress:
19134096

LZMA compressed kernel size in bytes which U-Boot’s lzmadec fails to decompress:
19134142

However booting a kernel with self extracting works fine.

=> tftpboot 0x83000000 test-uzImage.bin; tftpboot 0x84f00000 mt7621-unielec-u7621-06-16m.dtb; bootm 0x83000000 - 0x84f00000
[...]
## Booting kernel from Legacy Image at 83000000 ...
   Image Name:   Linux-6.2.0-rc3+
   Image Type:   MIPS Linux Kernel Image (uncompressed)
   Data Size:    19138320 Bytes = 18.3 MiB
   Load Address: 82011000
   Entry Point:  82011000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 84f00000
   Booting using the fdt blob at 0x84f00000
Working FDT set to 84f00000
   Loading Kernel Image
   Loading Device Tree to 8fcf6000, end 8fcfb365 ... OK
Working FDT set to 8fcf6000
(It takes a while here to decompress...)
[ 0.000000] Linux version 6.2.0-rc3+ (arinc9@arinc9-PC) (mips-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #75 SMP Fri Jan 13 14:41:56 +03 2023
[    0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[    0.000000] printk: bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[    0.000000] MIPS: machine is UniElec U7621-06 (16M flash)
[...]

I was wondering if there's a limit the bootloader sets for the lzma decompressor. I assume it's 2 MiB for CFE.

Did you try booting a kernel on this Northstar SoC with U-Boot?

Arınç

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to