Hello everyone,
The setup:
I'm building the firmware for the Sidekiq Z2 using the ADI's plutosdr-fw repo. I'm working with the commit a1c2ce7 which is 5 commits ahead the v0.34 tag. In order to build it, I'm using the following commands:
export CROSS_COMPILE=arm-linux-gnueabihf-export PATH=$PATH:/opt/Xilinx/SDK/2019.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/binexport VIVADO_SETTINGS=/opt/Xilinx/Vivado/2019.1/settings64.shmake TARGET=sidekiqz2
The build process runs smoothly, and I've not changed any functionality (in consecuence, the repo is as cloned) except from the line 119 of the makefile for:
make -C buildroot ARCH=arm zynq_$(TARGET)_vivado_2019_1_defconfig
As the 2019.1 Vivado version is what I use and have installed.
I've used the built firmware .dfu files for many weeks now, but I realized that something was wrong last week when I needed to access the 'config.txt' file in one of the boards that had the home-built firmware loaded and the file didn't exist.
The problem:
I am trying to solve the message "Bad FIT image format!" appearing when booting a Sidekiq Z2 with the firmware built by me. The boot logs are obtained by connecting the serial console and reseting the boards.
What strikes me as extremely odd, is that almost everything works, except for some specific features like the mounting of the filesystem for the USB drive (line 106 from the boot log attached), which prevents me from seeing the 'config.txt' file, necessary for my application. That is why I been using the custom builds for a while now without realizing about this error. It is worth mentioning that the FPGA transiever funcionality and most of the OS work fine, I've been ssh'ing to the board connected via USB whenever the OS was already up (obviously) and that is also the reason I've never got to see the "bad FIT image file format" message.
Also, the config.txt file exists and I can access it in /opt/config.txt, so I infer that the S40network script is working just fine.
I've also gone through the .dts files and various configuration files. Although I'm not an embedded linux building expert, I've some experience, but I can not see anything that stands out as strange. If you need the built firmware (.frm, .dfu) I'd be happy to give it to you.
I am really lost in this one, specially for this weird not-copmpletely-broken behaviour, so any help would be appreciated.
Below, I'm attaching the boot logs for both cases. Whenever I try to run S45msd inside the Linux, it just prints the same error messages that prints when booting.
Default firmware:
U-Boot PlutoSDR v0.20-PlutoSDR-00053-g89d07540f9 (Jan 23 2019 - 12:37:40 -0600), Build: jenkins-Sidekiq-sidekiq-z2-bsp-adi-2
I2C: ready
DRAM: ECC disabled 512 MiB
SF: Detected N25Q1024A with page size 256 Bytes, erase size 4 KiB, total 128 MiB
In: serial@e0001000
Out: serial@e0001000
Err: serial@e0001000
Model: Zynq Sidekiq Z2 Board
Hit any key to stop autoboot: 0
200
gpio: pin 48 (gpio 48) value is 1
Booting from QSPI
Booting silently
SF: Detected N25Q1024A with page size 256 Bytes, erase size 4 KiB, total 128 MiB
device 0 offset 0x200000, size 0x9526b7
SF: 9774775 bytes @ 0x200000 Read: OK
## Checking Image at 02080000 ...
FIT image found
FIT description: Configuration to load fpga before Kernel
Image 0 (fdt@1)
Description: zynq-sidekiqz2
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x020800f4
Data Size: 20446 Bytes = 20 KiB
Architecture: ARM
Image 1 (fdt@2)
Description: zynq-sidekiqz2-revb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x02085148
Data Size: 20446 Bytes = 20 KiB
Architecture: ARM
Image 2 (fdt@3)
Description: zynq-sidekiqz2-revc
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x0208a19c
Data Size: 20446 Bytes = 20 KiB
Architecture: ARM
Image 3 (fpga@1)
Description: FPGA
Type: FPGA Image
Compression: uncompressed
Data Start: 0x0208f1e4
Data Size: 963140 Bytes = 940.6 KiB
Load Address: 0x0f000000
Hash algo: md5
Hash value: 3bb49eefc2d7f579911746a0f11c0694
Image 4 (linux_kernel@1)
Description: Linux
Type: Kernel Image
Compression: uncompressed
Data Start: 0x0217a4e4
Data Size: 3459288 Bytes = 3.3 MiB
Architecture: ARM
OS: Linux
Load Address: 0x00008000
Entry Point: 0x00008000
Hash algo: md5
Hash value: 31a3cb4322675a2e3ae7601474d830ee
Image 5 (ramdisk@1)
Description: Ramdisk
Type: RAMDisk Image
Compression: gzip compressed
Data Start: 0x024c6e98
Data Size: 5287151 Bytes = 5 MiB
Architecture: ARM
OS: Linux
Load Address: unavailable
Entry Point: unavailable
Hash algo: md5
Hash value: d0b4b27afe5e107f6a0fc0b3dc9031f7
Default Configuration: 'config@0'
Configuration 0 (config@0)
Description: Linux with fpga RevA
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@1
FPGA: fpga@1
Configuration 1 (config@1)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 2 (config@2)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 3 (config@3)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 4 (config@4)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 5 (config@5)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 6 (config@6)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 7 (config@7)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 8 (config@8)
Description: Linux with fpga RevC
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@3
FPGA: fpga@1
Configuration 9 (config@9)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
Configuration 10 (config@10)
Description: Linux with fpga RevB
Kernel: linux_kernel@1
Init Ramdisk: ramdisk@1
FDT: fdt@2
FPGA: fpga@1
## Checking hash(es) for FIT Image at 02080000 ...
Hash(es) for Image 0 (fdt@1):
Hash(es) for Image 1 (fdt@2):
Hash(es) for Image 2 (fdt@3):
Hash(es) for Image 3 (fpga@1): md5+
Hash(es) for Image 4 (linux_kernel@1): md5+
Hash(es) for Image 5 (ramdisk@1): md5+
## Loading kernel from FIT Image at 02080000 ...
Using 'config@2' configuration
Verifying Hash Integrity ... OK
Trying 'linux_kernel@1' kernel subimage
Description: Linux
Type: Kernel Image
Compression: uncompressed
Data Start: 0x0217a4e4
Data Size: 3459288 Bytes = 3.3 MiB
Architecture: ARM
OS: Linux
Load Address: 0x00008000
Entry Point: 0x00008000
Hash algo: md5
Hash value: 31a3cb4322675a2e3ae7601474d830ee
Verifying Hash Integrity ... md5+ OK
## Loading ramdisk from FIT Image at 02080000 ...
Using 'config@2' configuration
Trying 'ramdisk@1' ramdisk subimage
Description: Ramdisk
Type: RAMDisk Image
Compression: gzip compressed
Data Start: 0x024c6e98
Data Size: 5287151 Bytes = 5 MiB
Architecture: ARM
OS: Linux
Load Address: unavailable
Entry Point: unavailable
Hash algo: md5
Hash value: d0b4b27afe5e107f6a0fc0b3dc9031f7
Verifying Hash Integrity ... md5+ OK
## Loading fdt from FIT Image at 02080000 ...
Using 'config@2' configuration
Trying 'fdt@2' fdt subimage
Description: zynq-sidekiqz2-revb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x02085148
Data Size: 20446 Bytes = 20 KiB
Architecture: ARM
Verifying Hash Integrity ... OK
Booting using the fdt blob at 0x2085148
## Loading fpga from FIT Image at 02080000 ...
Trying 'fpga@1' fpga subimage
Description: FPGA
Type: FPGA Image
Compression: uncompressed
Data Start: 0x0208f1e4
Data Size: 963140 Bytes = 940.6 KiB
Load Address: 0x0f000000
Hash algo: md5
Hash value: 3bb49eefc2d7f579911746a0f11c0694
Verifying Hash Integrity ... md5+ OK
Loading fpga from 0x0208f1e4 to 0x0f000000
design filename = "system_top;UserID=0XFFFFFFFF;COMPRESS=TRUE;Version=2018.2"
part number = "7z010clg225"
date = "2019/01/23"
time = "12:36:37"
bytes in bitstream = 963020
zynq_align_dma_buffer: Align buffer at f000078 to f000000(swap 1)
Programming full bitstream... OK
Loading Kernel Image ... OK
Loading Ramdisk to 1e61e000, end 1eb28cef ... OK
Loading Device Tree to 1e616000, end 1e61dfdd ... OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Starting logging: OK
Starting mdev: OK
Starting watchdog: OK
Starting initializing random number generator: OK
Starting miscellaneous setup: OK
Starting UDC Gadgets: OK
Starting system message bus: done
Starting network: OK
Starting dhcpd Daemon & httpd Server: OK
Starting MSD Daemon: OK
Starting dropbear sshd: OK
Starting input-event-daemon: done
Welcome to Sidekiq Z2
sidekiqz2 login:
Custom-built firmware:
U-Boot PlutoSDR v0.20-PlutoSDR-00065-ga2c2013a86 (Jul 27 2023 - 12:49:44 -0300)
I2C: ready
DRAM: ECC disabled 512 MiB
SF: Detected N25Q1024A with page size 256 Bytes, erase size 4 KiB, total 128 MiB
In: serial@e0001000
Out: serial@e0001000
Err: serial@e0001000
Model: Zynq Sidekiq Z2 Board
Hit any key to stop autoboot: 0
205
gpio: pin 48 (gpio 48) value is 1
Booting from QSPI
Booting silently
SF: Detected N25Q1024A with page size 256 Bytes, erase size 4 KiB, total 128 MiB
device 0 offset 0x200000, size 0x900000
SF: 9437184 bytes @ 0x200000 Read: OK
## Checking Image at 02080000 ...
FIT image found
Bad FIT image format!
device 0 offset 0x200000, size 0x1e00000
SF: 31457280 bytes @ 0x200000 Read: OK
## Loading kernel from FIT Image at 02080000 ...
Using 'config@2' configuration
Verifying Hash Integrity ... OK
Trying 'linux_kernel@1' kernel subimage
Description: Linux
Type: Kernel Image
Compression: uncompressed
Data Start: 0x0228d6fc
Data Size: 3933080 Bytes = 3.8 MiB
Architecture: ARM
OS: Linux
Load Address: 0x00008000
Entry Point: 0x00008000
Hash algo: md5
Hash value: 929d87a26671fe4c5a1d0e9262626608
Verifying Hash Integrity ... md5+ OK
## Loading ramdisk from FIT Image at 02080000 ...
Using 'config@2' configuration
Trying 'ramdisk@1' ramdisk subimage
Description: Ramdisk
Type: RAMDisk Image
Compression: gzip compressed
Data Start: 0x0264db70
Data Size: 18049519 Bytes = 17.2 MiB
Architecture: ARM
OS: Linux
Load Address: unavailable
Entry Point: unavailable
Hash algo: md5
Hash value: 7ef612ea8d9a482e3881352716938027
Verifying Hash Integrity ... md5+ OK
## Loading fdt from FIT Image at 02080000 ...
Using 'config@2' configuration
Trying 'fdt@2' fdt subimage
Description: zynq-sidekiqz2-revb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x02085964
Data Size: 22523 Bytes = 22 KiB
Architecture: ARM
Verifying Hash Integrity ... OK
Booting using the fdt blob at 0x2085964
## Loading fpga from FIT Image at 02080000 ...
Trying 'fpga@1' fpga subimage
Description: FPGA
Type: FPGA Image
Compression: uncompressed
Data Start: 0x02090a38
Data Size: 2083846 Bytes = 2 MiB
Load Address: 0x0f000000
Hash algo: md5
Hash value: b6a4a5eb709912af7a55ad5af52ffd53
Verifying Hash Integrity ... md5+ OK
Loading fpga from 0x02090a38 to 0x0f000000
design filename = "system_top;UserID=0XFFFFFFFF;Version=2019.1"
part number = "7z010clg225"
date = "2022/11/09"
time = "14:36:16"
bytes in bitstream = 2083740
zynq_align_dma_buffer: Align buffer at f00006a to f000000(swap 1)
Programming full bitstream... OK
Loading Kernel Image ... OK
Loading Ramdisk to 1d9f3000, end 1eb299ef ... OK
Loading Device Tree to 1d9ea000, end 1d9f27fa ... OK
Starting kernel ...
gpio gpiochip0: (zynq_gpio): gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ
gpio gpiochip0: (zynq_gpio): unable to lock HW IRQ 14 for IRQ
genirq: Failed to request resources for Button (irq 57) on irqchip zynq-gpio
gpio-keys gpio_keys: Unable to claim irq 57; error -5
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting mdev: OK
Starting watchdog: OK
Starting initializing random number generator: OK
Starting miscellaneous setup: OK
Starting UDC Gadgets: OK
Starting system message bus: done
Starting network: OK
Starting dhcpd Daemon & httpd Server: OK
Starting MSD Daemon: mount: mounting /dev/loop7 on /mnt/msd failed: No such file or directory
md5sum: can't open '/mnt/msd/config.txt': Not a directory
cp: can't stat '/mnt/msd/img': Not a directory
cp: can't stat '/mnt/msd/index.html': Not a directory
mv: can't stat '/mnt/msd/info.html': Not a directory
umount: can't unmount /mnt/msd: Invalid argument
OK
Starting dropbear sshd: OK
Starting input-event-daemon: input-event-daemon: open(/dev/input/event0): No such file or directory
done
Welcome to Sidekiq Z2
sidekiqz2 login:
Thanks in advance.
Edit Notes
I'm adding a more descriptive title.[edited by: zoqueton99 at 4:57 PM (GMT -4) on 15 Aug 2023]