On Friday 05 November 2021 09:38:28 Pali Rohár wrote: > Hello! > > On Thursday 04 November 2021 23:27:32 Tony Dinh wrote: > > Hi Marek and Pali, > > > > First off all, thanks for your hughe work on this. I have a few Armada > > 38x boards that I had quite a hard time running kwboot in the past. > > Hopefully, I will have more luck with the new kwboot. > > > > Here is a problem I've found running kwboot on the Zyxel NSA310S NAS > > (Kirkwood 6702). The target is a Pogoplug V4 (Kirkwood 6192 SoC). Same > > behavior was observed running kwboot on this Pogoplug V4 to boot the > > NSA310S target. > > > > - kwboot build version > > > > ./kwboot-2021/kwboot > > kwboot version 2022.01-rc1-00034-gbc18582a14 > > > > - kwboot session log > > > > ./kwboot-2021/kwboot -t -p -B 115200 /dev/ttyUSB0 -b > > uboot.2021.07-tld-1.pogo_v4.mtd0.kwb > > Patching image boot signature to UART > > Aligning image header to Xmodem block size > > Sending boot message. Please reboot the target...\ > > Waiting 2s and flushing tty > > Sending boot image header (480 bytes)... > > 26 % [.... > > ] > > Done > > > > U-Boot 2021.04-tld-1 (Jun 10 2021 - 20:46:14 -0700) > > Pogoplug V4 > > > > SoC: Kirkwood 88F6192_A1 > > DRAM: 128 MiB > > NAND: 128 MiB > > MMC: > > Loading Environment from NAND... *** Warning - bad CRC, using default > > environment > > In: serial > > Out: serial > > Err: serial > > Net: eth0: ethernet-controller@72000 > > 88E1116 Initialized on ethernet-controller@72000 > > Hit any key to stop autoboot: 9 > > 8 > > 7 > > > > As you can see above, it looks like the u-boot header transfer was > > completed but the u-boot image transfer did not start. Seems like > > BootROM did not recognize the header is UART. > > Yes, it looks like that kwbimage header was refused by the bootroom.
Tony, could you try following patch? diff --git a/tools/kwboot.c b/tools/kwboot.c index bacca1530110..2470906a38d1 100644 --- a/tools/kwboot.c +++ b/tools/kwboot.c @@ -1072,6 +1072,7 @@ kwboot_xmodem(int tty, const void *_img, size_t size, int baudrate) size_t hdrsz; hdrsz = kwbheader_size(img); + hdrsz += (KWBOOT_XM_BLKSZ - hdrsz % KWBOOT_XM_BLKSZ) % KWBOOT_XM_BLKSZ; kwboot_printv("Waiting 2s and flushing tty\n"); sleep(2); /* flush isn't effective without it */ @@ -1083,12 +1084,13 @@ kwboot_xmodem(int tty, const void *_img, size_t size, int baudrate) if (rc) return rc; - img += hdrsz; - size -= hdrsz; - - rc = kwboot_xmodem_one(tty, &pnum, 0, img, size, 0); - if (rc) - return rc; + if (hdrsz < size) { + img += hdrsz; + size -= hdrsz; + rc = kwboot_xmodem_one(tty, &pnum, 0, img, size, 0); + if (rc) + return rc; + } rc = kwboot_xm_finish(tty); if (rc) > Do you have some older U-Boot binary in .kwb format which you can > successfully boot? Or are you able to boot that U-Boot binary via some > older version of kwboot? > > I would like to inspect some working setup, so need some U-Boot binary > which can be successfully transferred. > > > The Pogoplug V4 > > continued to boot with the image on NAND (U-Boot 2021.04-tld-1). So > > kwboot_xm_finish() was never executed. At this point we lost the > > terminal, and could not interrupt the countdown. The system continued > > booting and at one point, serial console output stopped with an error > > message that indicated kwboot thinks it is still in xmodem mode (but > > the BootROM actually started the NAND image). > > > > xmodem: Connection timed out > > > > Please let me know if there is any idea that you want me to try. > > > > Thanks, > > Tony