question about boot kernel from ftfp

Hi, we try to test boot from tftp, but it always failed to download boot.img, no matter we
used linux tftpd or windows tftpd, the below is the log.

0009.525] I> tegrabl_get_boot_img_load_addr(): 1339, boot image load addr: 0xa43b0000
[0009.525] TFTP Client: Init
[0009.527] TFTP Client: Server IP: 192.168.0.1
[0009.531] TFTP Client: Send RRQ, file: tegra194-p2888-0001-p2822-0000.dtb
[0014.539] TFTP Client: Connection failed
[0014.549] TFTP Client: Send RRQ, file: tegra194-p2888-0001-p2822-0000.dtb

[0015.570] TFTP Client: Last packet received
[0015.571] I> Authenticate tftp downloaded tegra194-p2888-0001-p2822-0000.dtb, size 0x400000
[0015.571] I> >>pega TEGRABL_BINARY_KERNEL_DTB line=319
[0015.572] I> T19x: Authenticate tegra194-p2888-0001-p2822-0000.dtb (bin_type: 38), max size 0x400000
[0015.578] TFTP Client: Send RRQ, file: boot.img
#############################[0029.569] TFTP Client: Error received: code: 0, msg: Not defined
[0029.570] E> Failed to get boot.img
[0029.571] I> netif status changed 192.168.0.2
[0029.571] E> Error (1282) network load failed for kernel & kernel-dtb

Hi boyi_liao,

Please check below topic if can help:
https://devtalk.nvidia.com/default/topic/1049635/jetson-agx-xavier/cboot-modify-code-to-boot-unsigned-boot-img-and-dtb-file/post/5333600/#5333600

Thanks

Hi kaycc:

I used boot_sigheader.img.encrypt and tegra194-p2888-0001-p2822-0000_sigheader.dtb.encrypt for tftp
boot, but i found it will download boot.img and tegra194-p2888-0001-p2822-0000.dtb file name.

I just modify the file name, the files are signed and encrypted, but when download boot.img, it always failed. Is this a bug ?

boyi_liao,

Could you share your whole setup for tftp boot?

Hi WayneWWW:

Do you mean cbo.dts setting ? 

patrick@patrick-X541UV:~/MHT/Linux_for_Tegra/bootloader$ cat cbo.dts
/*

  • Copyright © 2018, NVIDIA CORPORATION. All rights reserved.
  • NVIDIA CORPORATION and its licensors retain all intellectual property
  • and proprietary rights in and to this software, related documentation
  • and any modifications thereto. Any use, reproduction, disclosure or
  • distribution of this software and related documentation without an express
  • license agreement from NVIDIA CORPORATION is strictly prohibited.
    */

/dts-v1/;

	/*boot-order = "sd", "usb", "emmc", "net";*/

/ {
compatible = “nvidia,cboot-options-v1”;
boot-configuration {
boot-order = “net”, “usb”, “emmc”, “sd”;
tftp-server-ip = /bits/ 8 <192 168 0 1>;
/dhcp-enabled;/
/* remove dhcp-enabled if uncommenting static-ip configuration */
static-ip = /bits/ 8 <192 168 0 2>;
ip-netmask = /bits/ 8 <255 255 255 0>;
ip-gateway = /bits/ 8 <192 168 0 1>;

};

};

Hi boy_liao,

Are you sure the ethernet connection has no problem?

[0009.527] TFTP Client: Server IP: 192.168.0.1
[0009.531] TFTP Client: Send RRQ, file: tegra194-p2888-0001-p2822-0000.dtb
[0014.539] TFTP Client: Connection failed

Hi WayneWWW:

yes, because the second time, it download success, you can see the log

[0014.549] TFTP Client: Send RRQ, file: tegra194-p2888-0001-p2822-0000.dtb

But when it downloads system.img half of it will fail.

Hi WayneWWW:

In tftp boot, what files should we put on tftp server ? “boot.img”/“tegra194-p2888-0001-p2822-0000.dtb” or boot_sigheader.img.encrypt"/“tegra194-p2888-0001-p2822-0000_sigheader.dtb.encrypt” ?

Hi boyi_liao,

Please use signed files, copy signed bins only otherwise it will result in authentication failure.

I trace the code and print the message, in tftp_client.c recv() function, i found it will fail in this condition.
Did it work on your side ?

if (blk_num != tftp_client.exptd_blk) {
#if TFTP_CLIENT_DEBUG && !PROGRESS_BAR
LWIP_DEBUGF(TFTP_DEBUG | LWIP_DBG_STATE,
(“Rcvd blk no: %u != expected blk no: %u\n”, blk_num, tftp_client.exptd_blk));
#endif

        goto fail;

}

Hi boyi_liao,

We can success boot from Ethernet on r32.1/Xavier.
Please check below setting:

  1. TFTP server is working on your host machine? (try to get file to confirm the function)
  2. The kernel and kernel-dtb files are using signed bins and rename to boot.img and tegra194-p2888-0001-p2822-0000.dtb
  3. Restart the xinetd service:
$ sudo service xinetd restart
  1. The tftp-server-ip is correct in cbo.dts

Hi,

We can success boot from tftp, but downloading speed very slow, sometimes it will fail.

BR,
Patrick