[U-Boot] [PATCH v7 00/18] Add fastboot UDP support

Alex Kiernan alex.kiernan at gmail.com
Tue May 29 11:24:54 UTC 2018


On Mon, May 28, 2018 at 8:41 AM Lukasz Majewski <lukma at denx.de> wrote:

> Hi Alex, Sam,

> Sam have you tested Alex patches on your HW (as you asked earlier for
> the repo to fetch the code)?

> Could you add Tested-by: tag?

> Are there any more comments on this series?


I've nothing more outstanding - the only changes I've got in my local tree
are the latest Reviewed-by tags.

> Best regards,
> Ɓukasz

> > This series merges the fastboot UDP support from AOSP into mainline
> > U-Boot.
> >
> > 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've pushed both USB and UDP into a single consolidated protocol layer
> > now I've tested it on a BeagleBone Green.
> >
> > Green Travis build:
> > https://travis-ci.org/akiernan/u-boot/builds/383077278
> >
> > Changes in v7:
> > - set FASTBOOT_CMD_OEM_FORMAT for all existing users of
> > FASTBOOT_FLASH_MMC_DEV that also have CMD_GPT
> >
> > Changes in v6:
> > - accomodate master change and switch dependency on imx6dl_mamoj from
> >   FASTBOOT to USB_FUNCTION_FASTBOOT
> > - delete redundant FASTBOOT_FLASH_NAND_DEV symbol
> > - add docbook comments
> > - add docbook comments
> > - rename fastboot_download_data() to fastboot_data_download(), rename
> >   fastboot_get_bytes_remaining() to fastboot_data_remaining()
> > - split fastboot_data_complete() out from fastboot_data_download() so
> > we can call it at the end of the transfer phase for USB
> > - merged from RFC USB fastboot series
> > - when entering the DATA phase ensure we actually install the correct
> > handler
> > - on completion of DATA call new fastboot_data_complete()
> > - previous changes:
> >   - remove redundant version.h
> >   - use new fastboot_get_bytes_remaining() function
> > - new
> >
> > Changes in v5:
> > - don't depend on UDP_FUNCTION_FASTBOOT until it exists
> > - squash in subsequent patch which updates defconfigs so we don't
> > leave users of CONFIG_FASTBOOT without it enabled
> > - fix build in drivers/fastboot when we have CONFIG_FASTBOOT without
> > flash or erase and we've not yet added fb_common.c to the build
> > - fix docbook formatting
> > - new
> > - new
> > - rename CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE to
> > CONFIG_IMAGE_SPARSE_FILLBUF_SIZE and migrate it to Kconfig.
> > - make fastboot_bytes_received/expected static and add function
> >   fastboot_get_bytes_remaining()
> > - move fastboot_buf_addr/fastboot_buf_size/fastboot_progress_callback
> >   into fastboot-internal.h
> > - delete redundant fb_ prefixes from statics
> > - new
> >
> > 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)
> > - split oem format into new patch
> >
> > 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
> > - 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
> > - new
> > - new
> > - new
> > - new
> > - new
> > - new
> > - 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)
> > - 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 (18):
> >   fastboot: Move fastboot to drivers/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
> >   fastboot: Rename public fb_ functions to fastboot_
> >   ti: fastboot: Move weak overrides to board files
> >   fs: Add fs_get_type_name to return current filesystem name
> >   fastboot: Migrate FASTBOOT_FLASH_NAND_TRIMFFS to Kconfig
> >   mmc: Separate "mmc swrite" from fastboot
> >   net: fastboot: Merge AOSP UDP fastboot
> >   fastboot: Add support for 'oem format' command
> >   usb: fastboot: Convert USB f_fastboot to shared fastboot
> >   fastboot: Update fastboot documentation
> >
> >  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/A13-OLinuXino_defconfig               |   1 +
> >  configs/A20-OLinuXino-Lime2-eMMC_defconfig    |   1 +
> >  configs/A20-OLinuXino-Lime2_defconfig         |   1 +
> >  configs/A20-Olimex-SOM204-EVB-eMMC_defconfig  |   1 +
> >  configs/A20-Olimex-SOM204-EVB_defconfig       |   1 +
> >  configs/Bananapi_m2m_defconfig                |   1 +
> >  configs/Cubietruck_defconfig                  |   1 +
> >  configs/Sinlinx_SinA33_defconfig              |   1 +
> >  configs/am335x_boneblack_defconfig            |   7 +-
> >  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                  |  13 +-
> >  configs/am57xx_hs_evm_defconfig               |  13 +-
> >  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/chromebit_mickey_defconfig            |   5 +-
> >  configs/chromebook_jerry_defconfig            |   5 +-
> >  configs/chromebook_minnie_defconfig           |   5 +-
> >  configs/dra7xx_evm_defconfig                  |  11 +-
> >  configs/dra7xx_hs_evm_defconfig               |  11 +-
> >  configs/evb-rk3036_defconfig                  |   5 +-
> >  configs/evb-rk3128_defconfig                  |   9 +-
> >  configs/evb-rk3229_defconfig                  |   5 +-
> >  configs/evb-rk3288_defconfig                  |   5 +-
> >  configs/evb-rk3328_defconfig                  |   7 +-
> >  configs/fennec-rk3288_defconfig               |   5 +-
> >  configs/firefly-rk3288_defconfig              |   5 +-
> >  configs/imx6dl_mamoj_defconfig                |   2 +-
> >  configs/kc1_defconfig                         |   2 +-
> >  configs/kylin-rk3036_defconfig                |   5 +-
> >  configs/miqi-rk3288_defconfig                 |   5 +-
> >  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/parrot_r16_defconfig                  |   1 +
> >  configs/phycore-rk3288_defconfig              |   5 +-
> >  configs/popmetal-rk3288_defconfig             |   5 +-
> >  configs/rock2_defconfig                       |   5 +-
> >  configs/sniper_defconfig                      |   2 +-
> >  configs/stih410-b2260_defconfig               |  11 +-
> >  configs/tbs_a711_defconfig                    |   1 +
> >  configs/tinker-rk3288_defconfig               |   5 +-
> >  .../xilinx_zynqmp_zc1751_xm015_dc1_defconfig  |   7 +-
> >  .../xilinx_zynqmp_zc1751_xm016_dc2_defconfig  |   2 +-
> >  configs/xilinx_zynqmp_zcu102_rev1_0_defconfig |   7 +-
> >  configs/xilinx_zynqmp_zcu102_revA_defconfig   |   7 +-
> >  configs/xilinx_zynqmp_zcu102_revB_defconfig   |   7 +-
> >  configs/xilinx_zynqmp_zcu106_revA_defconfig   |   7 +-
> >  doc/README.android-fastboot                   | 240 +++++++-----
> >  drivers/Kconfig                               |   2 +
> >  drivers/Makefile                              |   1 +
> >  {cmd => drivers}/fastboot/Kconfig             |  63 ++--
> >  drivers/fastboot/Makefile                     |   7 +
> >  drivers/fastboot/fb_command.c                 | 335 +++++++++++++++++
> >  drivers/fastboot/fb_common.c                  | 169 +++++++++
> >  drivers/fastboot/fb_getvar.c                  | 230 ++++++++++++
> >  {common => drivers/fastboot}/fb_mmc.c         | 216 +++++++----
> >  {common => drivers/fastboot}/fb_nand.c        |  69 +++-
> >  drivers/usb/gadget/f_fastboot.c               | 347
> > ++---------------- fs/fs.c                                       |
> > 13 + include/fastboot-internal.h                   |  36 ++
> >  include/fastboot.h                            | 137 ++++++-
> >  include/fb_mmc.h                              |  35 +-
> >  include/fb_nand.h                             |  37 +-
> >  include/fs.h                                  |  10 +
> >  include/image-sparse.h                        |   4 +-
> >  include/net.h                                 |   2 +-
> >  include/net/fastboot.h                        |  21 ++
> >  lib/Kconfig                                   |  11 +
> >  lib/Makefile                                  |   1 +
> >  {common => lib}/image-sparse.c                |  38 +-
> >  net/Makefile                                  |   1 +
> >  net/fastboot.c                                | 317 ++++++++++++++++
> >  net/net.c                                     |   7 +
> >  scripts/config_whitelist.txt                  |   2 -
> >  104 files changed, 2094 insertions(+), 696 deletions(-)
> >  rename {cmd => drivers}/fastboot/Kconfig (78%)
> >  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 (62%)
> >  rename {common => drivers/fastboot}/fb_nand.c (71%)
> >  create mode 100644 include/fastboot-internal.h
> >  create mode 100644 include/net/fastboot.h
> >  rename {common => lib}/image-sparse.c (88%)
> >  create mode 100644 net/fastboot.c
> >




> Best regards,

> Lukasz Majewski

> --

> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de



-- 
Alex Kiernan


More information about the U-Boot mailing list