Message ID | 20180227214504.32572-1-semen.protsenko@linaro.org |
---|---|
Headers | show |
Series | am335x_boneblack: Enable fastboot flash support | expand |
Hi Sam, > Standard and recommended way to upgrade the firmware is DFU. But DFU > has extremely low transmission speed (around 150 KiB/sec), thus it's > a bad fit for flashing big images (like rootfs). Low DFU speed is > mostly due to next reasons (kudos to Ruslan Bilovol for > investigation): 1. DFU works only via EP0, per DFU specification [1]. > But AM335x doesn't have DMA for EP0, according to AM335x TRM [2]: from > section 16.2: > > "The CPPI DMA can be used to service Endpoints 1 to 15 not > Endpoint 0. CPU access method is used to service Endpoint 0 > transactions." > > 2. Max transmission packet size via EP0 is 64 bytes, whereas for > other endpoints max transmission packet size is 512 bytes DFU was (and still is) supposed to work on all devices - even those with very tiny resources (like st microcontrollers). According to USB spec, EP0 is mandatory, so that is the reason for using it as a common denominator. Just for the record - fastboot is one of the options here. For BBB you may want to look at "dfu tftp" - which uses ETH's tftp protocol with dfu backend. It is supposed to be a remedy for problem described above. More information at: ./doc/README.dfutftp Of course I also don't mind using fastboot - it depends on your use case. > > fastboot specification [3], on the other hand, says nothing about > which EP should be used (and I see that EP1 is used on BBB board). So > let's enable fastboot flash support on BeagleBone Black board to > provide a better way to flash big images via USB. > > [1] www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf > [2] www.ti.com/lit/ug/spruh73p/spruh73p.pdf > [3] > https://android.googlesource.com/platform/system/core/+/master/fastboot/README.md > > Sam Protsenko (2): > omap: Fix AM335x build with enabled fastboot flash > configs: am335x_boneblack: Enable fastboot flash capability > > arch/arm/mach-omap2/utils.c | 2 ++ > configs/am335x_boneblack_defconfig | 2 ++ > 2 files changed, 4 insertions(+) > 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@denx.de
On 27 February 2018 at 23:56, Lukasz Majewski <lukma@denx.de> wrote: > Hi Sam, > >> Standard and recommended way to upgrade the firmware is DFU. But DFU >> has extremely low transmission speed (around 150 KiB/sec), thus it's >> a bad fit for flashing big images (like rootfs). Low DFU speed is >> mostly due to next reasons (kudos to Ruslan Bilovol for >> investigation): 1. DFU works only via EP0, per DFU specification [1]. >> But AM335x doesn't have DMA for EP0, according to AM335x TRM [2]: from >> section 16.2: >> >> "The CPPI DMA can be used to service Endpoints 1 to 15 not >> Endpoint 0. CPU access method is used to service Endpoint 0 >> transactions." >> >> 2. Max transmission packet size via EP0 is 64 bytes, whereas for >> other endpoints max transmission packet size is 512 bytes > > DFU was (and still is) supposed to work on all devices - even those > with very tiny resources (like st microcontrollers). > > According to USB spec, EP0 is mandatory, so that is the reason for > using it as a common denominator. > > Just for the record - fastboot is one of the options here. > > For BBB you may want to look at "dfu tftp" - which uses ETH's tftp > protocol with dfu backend. It is supposed to be a remedy for problem > described above. > > More information at: > ./doc/README.dfutftp > Thank you for the explanation, Lukasz! Didn't know that "dfu tftp" was designed to overcome that slow speed issue. Will try that. > > Of course I also don't mind using fastboot - it depends on your use > case. > Yes, I'm trying to make BBB board to be a good educational platform (we are working on some corporate courses). Main points are it's an open hardware, has a good support in upstream and has a good pricing. Anyway, my idea is to show people all the conventional methods for flashing the board, so I need both Ethernet and USB ways working. Also, I noticed that Debian rootfs is recommended to be flashed to eMMC using SD card (and flashing is done from booted system, not from U-Boot). Although I understand that this may be easier for an end user (as it closely resembles PC way), still I can't say that I particularly like or approve that method (especially for development purposes). That's why I think that having functional USB link would be beneficial for BBB. >> >> fastboot specification [3], on the other hand, says nothing about >> which EP should be used (and I see that EP1 is used on BBB board). So >> let's enable fastboot flash support on BeagleBone Black board to >> provide a better way to flash big images via USB. >> >> [1] www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf >> [2] www.ti.com/lit/ug/spruh73p/spruh73p.pdf >> [3] >> https://android.googlesource.com/platform/system/core/+/master/fastboot/README.md >> >> Sam Protsenko (2): >> omap: Fix AM335x build with enabled fastboot flash >> configs: am335x_boneblack: Enable fastboot flash capability >> >> arch/arm/mach-omap2/utils.c | 2 ++ >> configs/am335x_boneblack_defconfig | 2 ++ >> 2 files changed, 4 insertions(+) >> > > > > > 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@denx.de
Hi Sam, > On 27 February 2018 at 23:56, Lukasz Majewski <lukma@denx.de> wrote: > > Hi Sam, > > > >> Standard and recommended way to upgrade the firmware is DFU. But > >> DFU has extremely low transmission speed (around 150 KiB/sec), > >> thus it's a bad fit for flashing big images (like rootfs). Low DFU > >> speed is mostly due to next reasons (kudos to Ruslan Bilovol for > >> investigation): 1. DFU works only via EP0, per DFU specification > >> [1]. But AM335x doesn't have DMA for EP0, according to AM335x TRM > >> [2]: from section 16.2: > >> > >> "The CPPI DMA can be used to service Endpoints 1 to 15 not > >> Endpoint 0. CPU access method is used to service Endpoint 0 > >> transactions." > >> > >> 2. Max transmission packet size via EP0 is 64 bytes, whereas for > >> other endpoints max transmission packet size is 512 bytes > > > > DFU was (and still is) supposed to work on all devices - even those > > with very tiny resources (like st microcontrollers). > > > > According to USB spec, EP0 is mandatory, so that is the reason for > > using it as a common denominator. > > > > Just for the record - fastboot is one of the options here. > > > > For BBB you may want to look at "dfu tftp" - which uses ETH's tftp > > protocol with dfu backend. It is supposed to be a remedy for problem > > described above. > > > > More information at: > > ./doc/README.dfutftp > > > > Thank you for the explanation, Lukasz! Didn't know that "dfu tftp" was > designed to overcome that slow speed issue. Will try that. You may also want to try UMS (USB Mass Storage) - "ums". It will export your BBB to be visible as USB Mass Storage device (like a pendrive). From that point you can use dd to write MBR, rootfs, u-boot to it. Another - good option for flashing is SWUpdate SW: https://github.com/sbabic/swupdate It allows very easy integration with OE/Yocto and Buildroot. What is even more important - it supports BBB out of the box: https://github.com/sbabic/meta-swupdate-boards/tree/master/recipes-support/swupdate/swupdate SWUpdate is a versatile tool with a loot of nice features - please read: https://sbabic.github.io/swupdate/ > > > > > Of course I also don't mind using fastboot - it depends on your use > > case. > > > > Yes, I'm trying to make BBB board to be a good educational platform > (we are working on some corporate courses). Main points are it's an > open hardware, has a good support in upstream and has a good pricing. > Anyway, my idea is to show people all the conventional methods for > flashing the board, so I need both Ethernet and USB ways working. > > Also, I noticed that Debian rootfs is recommended to be flashed to > eMMC using SD card (and flashing is done from booted system, not from > U-Boot). Although I understand that this may be easier for an end user > (as it closely resembles PC way), still I can't say that I > particularly like or approve that method (especially for development > purposes). That's why I think that having functional USB link would be > beneficial for BBB. > > >> > >> fastboot specification [3], on the other hand, says nothing about > >> which EP should be used (and I see that EP1 is used on BBB board). > >> So let's enable fastboot flash support on BeagleBone Black board to > >> provide a better way to flash big images via USB. > >> > >> [1] www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf > >> [2] www.ti.com/lit/ug/spruh73p/spruh73p.pdf > >> [3] > >> https://android.googlesource.com/platform/system/core/+/master/fastboot/README.md > >> > >> Sam Protsenko (2): > >> omap: Fix AM335x build with enabled fastboot flash > >> configs: am335x_boneblack: Enable fastboot flash capability > >> > >> arch/arm/mach-omap2/utils.c | 2 ++ > >> configs/am335x_boneblack_defconfig | 2 ++ > >> 2 files changed, 4 insertions(+) > >> > > > > > > > > > > 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@denx.de 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@denx.de