[U-Boot] [PATCH v4 00/14] Add fastboot UDP support

Alex Kiernan alex.kiernan at gmail.com
Tue May 15 18:33:25 UTC 2018


Hi Sam
On Tue, May 15, 2018 at 5:52 PM Sam Protsenko <semen.protsenko at linaro.org>
wrote:

> On 15 May 2018 at 17:48, Alex Kiernan <alex.kiernan at gmail.com> wrote:
> >
> > This series merges the fastboot UDP support from AOSP into mainline
> > U-Boot.
> >

> Hi Alex,

> Can you tell me which platforms you verified these patches on?

Sure... it's an internal board, but derived from a BeagleBone Black (just
with many of the components missing). I think I've also managed to track
down a BBB internally, so hopefully should be able to test on that in a day
or so.

> From
> what I see, it shouldn't affect regular fastboot operation,

That's what I was aiming for, there's a separate final RFC patch to migrate
the USB path across which I left out of this series as I doubt I've got it
completely right.

> but just
> in case: do you have some public Git tree with these patches, so that
> I can verify them on TI boards?

That'd be awesome, thanks!

Repo is here:

https://github.com/akiernan/u-boot/tree/us-fastboot-udp-v4

If you're trying to test this series, you'll want to pop the final commit
off it, as that's the USB migration patch.

> I can also verify UDP functionality as
> well, if you want me to. In that case, please provide instructions (or
> link to documentation) which I can use for testing.


It's pretty much the same as driving the USB side... start the fastboot
server:

setenv autoload no; dhcp; fastboot udp

And then from the client use something like:

fastboot -s udp:<target-ip-address> getvar serialno

If you're trying it on a board using the CPSW driver, if you send the
continue command, you'll see the server exit and the client hang doing
resends for a minute, which is this problem:

http://patchwork.ozlabs.org/patch/912382/

Whether that fix is correct is a different question, but it solved the
problem for me.

> Thanks.

> > Changes in UDP behaviour from the AOSP code, so it follows the existing
USB
> > behaviour:
> >
> > - 'boot' now follows the USB code and does 'bootm
CONFIG_FASTBOOT_BUF_ADDR'.
> >   I've added 'fastboot_bootcmd' which if set overrides the boot command
and
> >   allows the existing UDP behaviour to be preserved.
> > - 'continue' in UDP now exits the fastboot server rather than executing
> >   'run bootcmd'
> > - 'reboot-bootloader' no longer writes 'reboot-bootloader' to
> >   CONFIG_FASTBOOT_BUF_ADDR as its marker for the subsequent boot. The
code
> >   which is in AOSP common/android_bootloader.c expects this marker, but
> >   we have prior art in the USB code using the weak function
> >   fastboot_set_reboot_flag
> > - 'getvar' in the UDP path now supports fetching 'fastboot.' prefixed
> >   variables (inherited from the USB path), these override the defaults
> >
> > I'll post the USB migration as a separate patch.
> >
> > Changes in v4:
> > - add docbook comments
> > - leave strcmp_l1() in USB fastboot as we don't need it in UDP path
> > - add docbook comments
> > - new
> > - guard fb_getvar/fb_command with UDP_FUNCTION_FASTBOOT in Makefile
> > - add docbook comments
> > - remove parameter from fastboot_boot() since we always want
> >   fastboot_buf_addr (and if we're using fastboot_bootcmd then it's
> >   ignored)
> >
> > Changes in v3:
> > - move imply ANDROID_BOOT_IMAGE, CMD_FASTBOOT to FASTBOOT from
> >   USB_FUNCTION_FASTBOOT
> > - add depend on USB_FUNCTION_FASTBOOT to FASTBOOT_USB_DEV
> > - leave images-sparse.c in common to acommodate 2f83f21
> > - move Kconfig changes to previous patch
> > - refactor for changes in master
> > - Merge subsequent patch for formatting response strings into this one
> > - allow NULL to fastboot_okay() when there's no message to send
> > - guard FASTBOOT_GPT_NAME/FASTBOOT_MBR_NAME with EFI/DOS_PARTITION
> > - use FASTBOOT as our guard in Kconfig not a list of USB || UDP
> > - correct mis-translation from AOSP introduced when cleaning up for
> >   checkpatch - we should write when buffer is not NULL, rather than
> >   erasing, and erase when buffer is NULL
> > - use CMD_RET_USAGE from do_fastboot
> > - remove do_fastboot_udp from cmd/net.c and rewrite using net_loop()
> > - rename timed_send_info to fastboot_send_info, rename
fastboot_send_info to
> >   fastboot_udp_send_info
> > - replace FASTBOOT_HEADER_SIZE with sizeof(struct fastboot_header)
> > - move start time into timed_send_info() rather than passing it in
> > - make calls to fastboot_udp_send_info a runtime dependency, not a
compile
> >   time one
> > - set ${filesize} to size of downloaded image
> > - add progress meter from USB path during download
> > - add support for 'oem format' command from the USB path
> > - rename 'fastbootcmd' to 'fastboot_bootcmd' to make clear that this is
the
> >   fastboot boot command
> > - make getvar implementation table driven
> > - add fastboot_buf_addr, fastboot_buf_size to override buffer address
and
> >   size
> > - return correct filesystem type in getvar partition-type on MMC
> > - process "fastboot." prefixed env variables in getvar first so you
> >   can override the normal values (this also lets you set a fs type for
> >   NAND devices)
> > - make global variables static and add accessors for the things which
> >   the transport layers need
> > - squash subsequent patches which change this code into this one:
> >   - If the fastboot flash/erase commands are disabled, remove that
support
> >     so we still build correctly.
> >   - Add NAND support to fastboot UDP flash/erase commands
> >   - If we don't have a partition name passed, report it as not found.
> >   - Change the behaviour of the fastboot net code such that
> >     "reboot-bootloader" is no longer written to
CONFIG_FASTBOOT_BUF_ADDR for
> >     use as a marker on reboot (the AOSP code in
common/android-bootloader.c
> >     uses this marker - this code could be reinstated there if that gets
> >     merged).
> >   - Merge USB and UDP boot code. The USB implementation stays the same,
but
> >     UDP no longer passes an fdt. We introduce a new environment variable
> >     'fastboot_bootcmd' which if set overrides the hardcoded boot
command,
> >     setting this then allows the UDP implementation to remain the same.
If
> >     after running 'fastboot_bootcmd' the board has not booted, control
is
> >     returned to U-Boot and the fastboot process ends.
> >   - Separate the fastboot protocol handling from the fastboot UDP code
in
> >     preparation for reusing it in the USB code.
> >
> > Changes in v2:
> > - ensure fastboot syntax is backward compatible - 'fastboot 0' means
> >   'fastboot usb 0'
> >
> > Alex Kiernan (14):
> >   fastboot: Move fastboot to drivers/fastboot
> >   fastboot: Switch dependencies on FASTBOOT to USB_FUNCTION_FASTBOOT
> >   fastboot: Refactor fastboot_okay/fail to take response
> >   fastboot: Extract fastboot_okay/fail to fb_common.c
> >   fastboot: Correct dependencies in FASTBOOT_FLASH
> >   fastboot: Add missing newlines
> >   fastboot: Remove FIXME for CONFIG_FASTBOOT_...NAME
> >   fastboot: Fix parameter types in _fb_nand_write
> >   fastboot: Rename fb_set_reboot_flag to fastboot_set_reboot_flag
> >   fastboot: Extract common definitions from USB fastboot
> >   ti: fastboot: Move weak overrides to board files
> >   fs: Add fs_get_type_name to return current filesystem name
> >   mmc: Separate "mmc swrite" from fastboot
> >   net: fastboot: Merge AOSP UDP fastboot
> >
> >  arch/arm/Kconfig                                 |   2 -
> >  arch/arm/mach-omap2/boot-common.c                |  10 -
> >  arch/arm/mach-omap2/utils.c                      |   4 +-
> >  arch/arm/mach-rockchip/rk3128-board.c            |   4 +-
> >  arch/arm/mach-rockchip/rk322x-board.c            |   4 +-
> >  board/amazon/kc1/kc1.c                           |   2 +-
> >  board/lg/sniper/sniper.c                         |   2 +-
> >  board/ti/am57xx/board.c                          |  10 +
> >  board/ti/common/Kconfig                          |   1 -
> >  board/ti/dra7xx/evm.c                            |  10 +
> >  cmd/Kconfig                                      |  22 +-
> >  cmd/fastboot.c                                   |  91 ++++++-
> >  cmd/mmc.c                                        |  14 +-
> >  common/Makefile                                  |  14 -
> >  configs/am335x_boneblack_defconfig               |   2 +-
> >  configs/am335x_boneblack_vboot_defconfig         |   2 +-
> >  configs/am335x_evm_defconfig                     |   2 +-
> >  configs/am335x_evm_nor_defconfig                 |   2 +-
> >  configs/am335x_evm_norboot_defconfig             |   2 +-
> >  configs/am335x_evm_spiboot_defconfig             |   2 +-
> >  configs/am335x_evm_usbspl_defconfig              |   2 +-
> >  configs/am57xx_evm_defconfig                     |   2 +-
> >  configs/am57xx_hs_evm_defconfig                  |   2 +-
> >  configs/bcm23550_w1d_defconfig                   |   2 +-
> >  configs/bcm28155_ap_defconfig                    |   2 +-
> >  configs/birdland_bav335a_defconfig               |   2 +-
> >  configs/birdland_bav335b_defconfig               |   2 +-
> >  configs/cgtqmx6eval_defconfig                    |   2 +-
> >  configs/dra7xx_evm_defconfig                     |   2 +-
> >  configs/dra7xx_hs_evm_defconfig                  |   2 +-
> >  configs/kc1_defconfig                            |   2 +-
> >  configs/mx6qsabrelite_defconfig                  |   2 +-
> >  configs/mx6sabresd_defconfig                     |   2 +-
> >  configs/nitrogen6dl2g_defconfig                  |   2 +-
> >  configs/nitrogen6dl_defconfig                    |   2 +-
> >  configs/nitrogen6q2g_defconfig                   |   2 +-
> >  configs/nitrogen6q_defconfig                     |   2 +-
> >  configs/nitrogen6s1g_defconfig                   |   2 +-
> >  configs/nitrogen6s_defconfig                     |   2 +-
> >  configs/omap3_beagle_defconfig                   |   2 +-
> >  configs/omap3_evm_defconfig                      |   2 +-
> >  configs/omap3_logic_defconfig                    |   2 +-
> >  configs/sniper_defconfig                         |   2 +-
> >  configs/stih410-b2260_defconfig                  |   2 +-
> >  configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig |   2 +-
> >  configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig |   2 +-
> >  configs/xilinx_zynqmp_zcu102_rev1_0_defconfig    |   2 +-
> >  configs/xilinx_zynqmp_zcu102_revA_defconfig      |   2 +-
> >  configs/xilinx_zynqmp_zcu102_revB_defconfig      |   2 +-
> >  configs/xilinx_zynqmp_zcu106_revA_defconfig      |   2 +-
> >  drivers/Kconfig                                  |   2 +
> >  drivers/Makefile                                 |   1 +
> >  {cmd => drivers}/fastboot/Kconfig                |  53 ++--
> >  drivers/fastboot/Makefile                        |   7 +
> >  drivers/fastboot/fb_command.c                    | 327
+++++++++++++++++++++++
> >  drivers/fastboot/fb_common.c                     | 190 +++++++++++++
> >  drivers/fastboot/fb_getvar.c                     | 229 ++++++++++++++++
> >  {common => drivers/fastboot}/fb_mmc.c            | 192 ++++++++-----
> >  {common => drivers/fastboot}/fb_nand.c           |  46 ++--
> >  drivers/usb/gadget/f_fastboot.c                  |  59 ++--
> >  fs/fs.c                                          |  13 +
> >  include/fastboot.h                               | 167 +++++++++++-
> >  include/fb_mmc.h                                 |  10 +-
> >  include/fb_nand.h                                |  12 +-
> >  include/fs.h                                     |  10 +
> >  include/image-sparse.h                           |   4 +-
> >  include/net.h                                    |   2 +-
> >  include/net/fastboot.h                           |  21 ++
> >  lib/Kconfig                                      |   3 +
> >  lib/Makefile                                     |   1 +
> >  {common => lib}/image-sparse.c                   |  32 ++-
> >  net/Makefile                                     |   1 +
> >  net/fastboot.c                                   | 312
+++++++++++++++++++++
> >  net/net.c                                        |   7 +
> >  74 files changed, 1704 insertions(+), 259 deletions(-)
> >  rename {cmd => drivers}/fastboot/Kconfig (83%)
> >  create mode 100644 drivers/fastboot/Makefile
> >  create mode 100644 drivers/fastboot/fb_command.c
> >  create mode 100644 drivers/fastboot/fb_common.c
> >  create mode 100644 drivers/fastboot/fb_getvar.c
> >  rename {common => drivers/fastboot}/fb_mmc.c (66%)
> >  rename {common => drivers/fastboot}/fb_nand.c (81%)
> >  create mode 100644 include/net/fastboot.h
> >  rename {common => lib}/image-sparse.c (89%)
> >  create mode 100644 net/fastboot.c
> >
> > --
> > 2.7.4
> >



-- 
Alex Kiernan


More information about the U-Boot mailing list