* Fastboot @ 2021-03-06 0:10 Jonas Vautherin 2021-03-06 2:20 ` Fastboot Sean Anderson 0 siblings, 1 reply; 12+ messages in thread From: Jonas Vautherin @ 2021-03-06 0:10 UTC (permalink / raw) To: u-boot Hello! I am learning about Fastboot, and I would like to run it from u-boot and detect it from my host computer (I have the tools on my host, that's working with other devices). I am using a pocketbeagle and I built an image using Yocto. I can get into the u-boot prompt at boot time, and I get the following output: ``` Rebooting... reboot: Restarting system U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) Trying to boot from MMC1 U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) CPU : AM335X-GP rev 2.1 Model: TI AM335x PocketBeagle DRAM: 512 MiB WDT: Started with servicing (60s timeout) NAND: 0 MiB MMC: OMAP SD/MMC: 0 Loading Environment from FAT... *** Warning - bad CRC, using default environment <ethaddr> not set. Validating first E-fuse MAC Net: No ethernet found. Hit any key to stop autoboot: 2 ``` If I hit a key here, I get the u-boot prompt (`=>`) where I find "fastboot". The thing is that none of the fastboot commands I run have any output: * fastboot usb 0 * fastboot usb * fastboot udp Now, fastboot udp is not enabled in my defconfig, but the udp gadget support is, and the usb fastboot gadget is enabled, too. From my host, I just don't see anything in the `dmesg` output. Here are a few questions: * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No ethernet found." message is an issue that I need to fix such that a new usb network interface is created by my host, but from my tests with this proprietary device I own, it does not seem to be enumerated as a network interface. * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM must be one of the numbers supported by the fastboot client." In my setup, it is set to 0x0451, and I did not find what is supposed to be supported in fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451 devices`. Is that an issue? * I thought that maybe I should start USB, because the output of `usb tree` says "USB is stopped. Please issue 'usb start' first.". But running `usb start` errors with "Bus usb at 47401800: Port not available.". Is that related to fastboot at all, i.e. should I be concerned about that? And how can I debug it? Thanks in advance for the help! Jonas [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html [2]: https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-06 0:10 Fastboot Jonas Vautherin @ 2021-03-06 2:20 ` Sean Anderson 2021-03-07 1:38 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 12+ messages in thread From: Sean Anderson @ 2021-03-06 2:20 UTC (permalink / raw) To: u-boot On 3/5/21 7:10 PM, Jonas Vautherin wrote: > Hello! > > I am learning about Fastboot, and I would like to run it from u-boot and > detect it from my host computer (I have the tools on my host, that's > working with other devices). > > I am using a pocketbeagle and I built an image using Yocto. I can get into > the u-boot prompt at boot time, and I get the following output: > > ``` > Rebooting... reboot: Restarting system > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) > Trying to boot from MMC1 > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > CPU : AM335X-GP rev 2.1 > Model: TI AM335x PocketBeagle > DRAM: 512 MiB > WDT: Started with servicing (60s timeout) > NAND: 0 MiB > MMC: OMAP SD/MMC: 0 > Loading Environment from FAT... *** Warning - bad CRC, using default > environment > > <ethaddr> not set. Validating first E-fuse MAC > Net: No ethernet found. > Hit any key to stop autoboot: 2 > ``` > > If I hit a key here, I get the u-boot prompt (`=>`) where I find > "fastboot". The thing is that none of the fastboot commands I run have any > output: This is normal. There will be output only when you issue commands. > > * fastboot usb 0 > * fastboot usb > * fastboot udp > > Now, fastboot udp is not enabled in my defconfig, but the udp gadget > support is, and the usb fastboot gadget is enabled, too. From my host, I > just don't see anything in the `dmesg` output. > > Here are a few questions: > > * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No > ethernet found." message is an issue that I need to fix such that a new usb > network interface is created by my host, but from my tests with this > proprietary device I own, it does not seem to be enumerated as a network > interface. Only udp goes over ethernet (though I suppose you could use a usb-ethernet gadget/dongle). > * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM > must be one of the numbers supported by the fastboot client." In my setup, > it is set to 0x0451, and I did not find what is supposed to be supported in > fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451 > devices`. Is that an issue? The fastboot client detects devices with two bulk endpoints and the correct interface (see match_fastboot and filter_usb_device). Generally, you will only have to specify the vid/pid/serial if you have multiple devices plugged in at once. > * I thought that maybe I should start USB, because the output of `usb tree` > says "USB is stopped. Please issue 'usb start' first.". But running `usb > start` errors with "Bus usb at 47401800: Port not available.". Is that related > to fastboot at all, i.e. should I be concerned about that? And how can I > debug it? That's probably why your fastboot isn't working :) You can try debugging it by enabling debug messages. If you want less than a firehose, you can try setting the default log level to info, and then setting it to debug before running usb start. See [1] for details. [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html --Sean > Thanks in advance for the help! > Jonas > > [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html > [2]: > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-06 2:20 ` Fastboot Sean Anderson @ 2021-03-07 1:38 ` Jonas Vautherin 2021-03-07 2:04 ` Fastboot Sean Anderson 0 siblings, 1 reply; 12+ messages in thread From: Jonas Vautherin @ 2021-03-07 1:38 UTC (permalink / raw) To: u-boot Thanks a lot Sean! I tried to enable logging by using the following CONFIG_: ``` CONFIG_LOG=y CONFIG_SPL_LOG=y CONFIG_TPL_LOG=y CONFIG_LOG_MAX_LEVEL=5 CONFIG_SPL_LOG_MAX_LEVEL=3 CONFIG_TPL_LOG_MAX_LEVEL=3 CONFIG_LOG_DEFAULT_LEVEL=7 CONFIG_LOG_CONSOLE=y CONFIG_SPL_LOG_CONSOLE=y CONFIG_TPL_LOG_CONSOLE=y CONFIG_CMD_LOG=y ``` And I got the "log" function indeed. But it did not have the effect I was hoping for: ``` => log level set 7 => log level Default log level: 0 => usb start starting USB... Bus usb at 47401800: Port not available. ``` First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/. Am I missing something? Best, Jonas On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2@gmail.com> wrote: > On 3/5/21 7:10 PM, Jonas Vautherin wrote: > > Hello! > > > > I am learning about Fastboot, and I would like to run it from u-boot and > > detect it from my host computer (I have the tools on my host, that's > > working with other devices). > > > > I am using a pocketbeagle and I built an image using Yocto. I can get > into > > the u-boot prompt at boot time, and I get the following output: > > > > ``` > > Rebooting... reboot: Restarting system > > > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > Trying to boot from MMC1 > > > > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > > CPU : AM335X-GP rev 2.1 > > Model: TI AM335x PocketBeagle > > DRAM: 512 MiB > > WDT: Started with servicing (60s timeout) > > NAND: 0 MiB > > MMC: OMAP SD/MMC: 0 > > Loading Environment from FAT... *** Warning - bad CRC, using default > > environment > > > > <ethaddr> not set. Validating first E-fuse MAC > > Net: No ethernet found. > > Hit any key to stop autoboot: 2 > > ``` > > > > If I hit a key here, I get the u-boot prompt (`=>`) where I find > > "fastboot". The thing is that none of the fastboot commands I run have > any > > output: > > This is normal. There will be output only when you issue commands. > > > > > * fastboot usb 0 > > * fastboot usb > > * fastboot udp > > > > Now, fastboot udp is not enabled in my defconfig, but the udp gadget > > support is, and the usb fastboot gadget is enabled, too. From my host, I > > just don't see anything in the `dmesg` output. > > > > Here are a few questions: > > > > * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No > > ethernet found." message is an issue that I need to fix such that a new > usb > > network interface is created by my host, but from my tests with this > > proprietary device I own, it does not seem to be enumerated as a network > > interface. > > Only udp goes over ethernet (though I suppose you could use a > usb-ethernet gadget/dongle). > > > * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM > > must be one of the numbers supported by the fastboot client." In my > setup, > > it is set to 0x0451, and I did not find what is supposed to be supported > in > > fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451 > > devices`. Is that an issue? > > The fastboot client detects devices with two bulk endpoints and the > correct interface (see match_fastboot and filter_usb_device). Generally, > you will only have to specify the vid/pid/serial if you have multiple > devices plugged in at once. > > > * I thought that maybe I should start USB, because the output of `usb > tree` > > says "USB is stopped. Please issue 'usb start' first.". But running `usb > > start` errors with "Bus usb at 47401800: Port not available.". Is that > related > > to fastboot at all, i.e. should I be concerned about that? And how can I > > debug it? > > That's probably why your fastboot isn't working :) > > You can try debugging it by enabling debug messages. If you want less than > a firehose, you can try setting the default log level to info, and then > setting it to debug before running usb start. See [1] for details. > > [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html > > --Sean > > > Thanks in advance for the help! > > Jonas > > > > [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html > > [2]: > > > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp > > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-07 1:38 ` Fastboot Jonas Vautherin @ 2021-03-07 2:04 ` Sean Anderson 2021-03-07 18:31 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 12+ messages in thread From: Sean Anderson @ 2021-03-07 2:04 UTC (permalink / raw) To: u-boot On 3/6/21 8:38 PM, Jonas Vautherin wrote: > Thanks a lot Sean! > > I tried to enable logging by using the following CONFIG_: > > ``` > CONFIG_LOG=y > CONFIG_SPL_LOG=y > CONFIG_TPL_LOG=y > CONFIG_LOG_MAX_LEVEL=5 You need to increase this. Log levels are only compiled-in if they are less than the max log level. > CONFIG_SPL_LOG_MAX_LEVEL=3 > CONFIG_TPL_LOG_MAX_LEVEL=3 > CONFIG_LOG_DEFAULT_LEVEL=7 > CONFIG_LOG_CONSOLE=y > CONFIG_SPL_LOG_CONSOLE=y > CONFIG_TPL_LOG_CONSOLE=y > > CONFIG_CMD_LOG=y > ``` > > And I got the "log" function indeed. But it did not have the effect I was hoping for: > > ``` > => log level set 7 Use the help function ;) The correct syntax is "log level 7" If you use a newer U-Boot (newer than 2021.01) then the output will be more verbose. E.g. => log level EMERG ALERT CRIT ERR WARNING NOTICE INFO (default) DEBUG --Sean > => log level > Default log level: 0 > => usb start > starting USB... > Bus usb at 47401800: Port not available. > ``` > > First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/. > > Am I missing something? > > Best, > Jonas > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com>> wrote: > > On 3/5/21 7:10 PM, Jonas Vautherin wrote: > > Hello! > > > > I am learning about Fastboot, and I would like to run it from u-boot and > > detect it from my host computer (I have the tools on my host, that's > > working with other devices). > > > > I am using a pocketbeagle and I built an image using Yocto. I can get into > > the u-boot prompt at boot time, and I get the following output: > > > > ``` > > Rebooting... reboot: Restarting system > > > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > Trying to boot from MMC1 > > > > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > > CPU : AM335X-GP rev 2.1 > > Model: TI AM335x PocketBeagle > > DRAM: 512 MiB > > WDT: Started with servicing (60s timeout) > > NAND: 0 MiB > > MMC: OMAP SD/MMC: 0 > > Loading Environment from FAT... *** Warning - bad CRC, using default > > environment > > > > <ethaddr> not set. Validating first E-fuse MAC > > Net: No ethernet found. > > Hit any key to stop autoboot: 2 > > ``` > > > > If I hit a key here, I get the u-boot prompt (`=>`) where I find > > "fastboot". The thing is that none of the fastboot commands I run have any > > output: > > This is normal. There will be output only when you issue commands. > > > > > * fastboot usb 0 > > * fastboot usb > > * fastboot udp > > > > Now, fastboot udp is not enabled in my defconfig, but the udp gadget > > support is, and the usb fastboot gadget is enabled, too. From my host, I > > just don't see anything in the `dmesg` output. > > > > Here are a few questions: > > > > * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No > > ethernet found." message is an issue that I need to fix such that a new usb > > network interface is created by my host, but from my tests with this > > proprietary device I own, it does not seem to be enumerated as a network > > interface. > > Only udp goes over ethernet (though I suppose you could use a > usb-ethernet gadget/dongle). > > > * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM > > must be one of the numbers supported by the fastboot client." In my setup, > > it is set to 0x0451, and I did not find what is supposed to be supported in > > fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451 > > devices`. Is that an issue? > > The fastboot client detects devices with two bulk endpoints and the > correct interface (see match_fastboot and filter_usb_device). Generally, > you will only have to specify the vid/pid/serial if you have multiple > devices plugged in at once. > > > * I thought that maybe I should start USB, because the output of `usb tree` > > says "USB is stopped. Please issue 'usb start' first.". But running `usb > > start` errors with "Bus usb at 47401800: Port not available.". Is that related > > to fastboot at all, i.e. should I be concerned about that? And how can I > > debug it? > > That's probably why your fastboot isn't working :) > > You can try debugging it by enabling debug messages. If you want less than > a firehose, you can try setting the default log level to info, and then > setting it to debug before running usb start. See [1] for details. > > [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html > > --Sean > > > Thanks in advance for the help! > > Jonas > > > > [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html > > [2]: > > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-07 2:04 ` Fastboot Sean Anderson @ 2021-03-07 18:31 ` Jonas Vautherin 2021-03-10 17:43 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 12+ messages in thread From: Jonas Vautherin @ 2021-03-07 18:31 UTC (permalink / raw) To: u-boot Yes that was it! I had used `log help`, but misunderstood the output. My bad... Below is the debug output I receive, where I don't really get what's happening except for those two lines: ``` uclass_find_device_by_seq() - 1 -1 'usb at 47401800' uclass_find_device_by_seq() - not found ``` But I don't really understand what it means. I spent a lot of time reading the available options in menuconfig, and at that point I cannot say what I am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, which I changed to get more logging outputs. Here is the output of `usb start`, let me know if I am missing something obvious from there: ``` => usb start starting USB... Bus usb at 47401800: __of_translate_address() OF: ** translation for device usb at 47401800 ** __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000 __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp of_translate_one() OF: no ranges, 1:1 translation of_translate_one() OF: with offset: 1195382784 __of_translate_address() OF: parent bus is default (na=1, ns=1) on of_translate_one() OF: no ranges, 1:1 translation of_translate_one() OF: with offset: 1195382784 __of_translate_address() OF: reached root node fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: fdtdec_get_addr_size_fixed() addr=44e10620 fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 (1) fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16) fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12) fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500) uclass_find_device_by_seq() 0 1 uclass_find_device_by_seq() - 1 -1 'usb at 47401800' uclass_find_device_by_seq() - not found clk_set_defaults() clk_set_defaults(usb at 47401800) clk_set_default_parents() clk_set_default_parents: could not read assigned-clock-parents for 9df24d30 ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: ofnode_read_prop() <not found> musb_core_init() musb-hdrc: hw_ep 0shared, max 64 musb_core_init() musb-hdrc: hw_ep 1tx, max 512 musb_core_init() musb-hdrc: hw_ep 1rx, max 512 musb_core_init() musb-hdrc: hw_ep 2tx, max 512 musb_core_init() musb-hdrc: hw_ep 2rx, max 512 musb_core_init() musb-hdrc: hw_ep 3tx, max 512 musb_core_init() musb-hdrc: hw_ep 3rx, max 512 musb_core_init() musb-hdrc: hw_ep 4tx, max 512 musb_core_init() musb-hdrc: hw_ep 4rx, max 512 musb_core_init() musb-hdrc: hw_ep 5tx, max 512 musb_core_init() musb-hdrc: hw_ep 5rx, max 512 musb_core_init() musb-hdrc: hw_ep 6tx, max 512 musb_core_init() musb-hdrc: hw_ep 6rx, max 512 musb_core_init() musb-hdrc: hw_ep 7tx, max 512 musb_core_init() musb-hdrc: hw_ep 7rx, max 512 musb_core_init() musb-hdrc: hw_ep 8tx, max 512 musb_core_init() musb-hdrc: hw_ep 8rx, max 512 musb_core_init() musb-hdrc: hw_ep 9tx, max 512 musb_core_init() musb-hdrc: hw_ep 9rx, max 512 musb_core_init() musb-hdrc: hw_ep 10tx, max 256 musb_core_init() musb-hdrc: hw_ep 10rx, max 64 musb_core_init() musb-hdrc: hw_ep 11tx, max 256 musb_core_init() musb-hdrc: hw_ep 11rx, max 64 musb_core_init() musb-hdrc: hw_ep 12tx, max 256 musb_core_init() musb-hdrc: hw_ep 12rx, max 64 musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 musb_start() <== devctl 80 musb_stop() HDRC disabled Port not available. usb_init() scan end ``` Best, On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com> wrote: > On 3/6/21 8:38 PM, Jonas Vautherin wrote: > > Thanks a lot Sean! > > > > I tried to enable logging by using the following CONFIG_: > > > > ``` > > CONFIG_LOG=y > > CONFIG_SPL_LOG=y > > CONFIG_TPL_LOG=y > > CONFIG_LOG_MAX_LEVEL=5 > > You need to increase this. Log levels are only compiled-in if they are > less than the max log level. > > > CONFIG_SPL_LOG_MAX_LEVEL=3 > > CONFIG_TPL_LOG_MAX_LEVEL=3 > > CONFIG_LOG_DEFAULT_LEVEL=7 > > CONFIG_LOG_CONSOLE=y > > CONFIG_SPL_LOG_CONSOLE=y > > CONFIG_TPL_LOG_CONSOLE=y > > > > CONFIG_CMD_LOG=y > > ``` > > > > And I got the "log" function indeed. But it did not have the effect I > was hoping for: > > > > ``` > > => log level set 7 > > Use the help function ;) > > The correct syntax is "log level 7" > > If you use a newer U-Boot (newer than 2021.01) then the output will be > more verbose. E.g. > > => log level > EMERG > ALERT > CRIT > ERR > WARNING > NOTICE > INFO (default) > DEBUG > > --Sean > > > => log level > > Default log level: 0 > > => usb start > > starting USB... > > Bus usb at 47401800: Port not available. > > ``` > > > > First, I don't get why it says "Default log level: 0" after I set it (to > whatever number, apparently). And second, it does not seem to bring me more > output about the usb issue :-/. > > > > Am I missing something? > > > > Best, > > Jonas > > > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2@gmail.com <mailto: > seanga2 at gmail.com>> wrote: > > > > On 3/5/21 7:10 PM, Jonas Vautherin wrote: > > > Hello! > > > > > > I am learning about Fastboot, and I would like to run it from > u-boot and > > > detect it from my host computer (I have the tools on my host, > that's > > > working with other devices). > > > > > > I am using a pocketbeagle and I built an image using Yocto. I can > get into > > > the u-boot prompt at boot time, and I get the following output: > > > > > > ``` > > > Rebooting... reboot: Restarting system > > > > > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > Trying to boot from MMC1 > > > > > > > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > > > > CPU : AM335X-GP rev 2.1 > > > Model: TI AM335x PocketBeagle > > > DRAM: 512 MiB > > > WDT: Started with servicing (60s timeout) > > > NAND: 0 MiB > > > MMC: OMAP SD/MMC: 0 > > > Loading Environment from FAT... *** Warning - bad CRC, using > default > > > environment > > > > > > <ethaddr> not set. Validating first E-fuse MAC > > > Net: No ethernet found. > > > Hit any key to stop autoboot: 2 > > > ``` > > > > > > If I hit a key here, I get the u-boot prompt (`=>`) where I find > > > "fastboot". The thing is that none of the fastboot commands I run > have any > > > output: > > > > This is normal. There will be output only when you issue commands. > > > > > > > > * fastboot usb 0 > > > * fastboot usb > > > * fastboot udp > > > > > > Now, fastboot udp is not enabled in my defconfig, but the udp > gadget > > > support is, and the usb fastboot gadget is enabled, too. From my > host, I > > > just don't see anything in the `dmesg` output. > > > > > > Here are a few questions: > > > > > > * Does fastboot usb go over ethernet? If yes, I guess that the > "Net: No > > > ethernet found." message is an issue that I need to fix such that > a new usb > > > network interface is created by my host, but from my tests with > this > > > proprietary device I own, it does not seem to be enumerated as a > network > > > interface. > > > > Only udp goes over ethernet (though I suppose you could use a > > usb-ethernet gadget/dongle). > > > > > * In readthedocs [1], it mentions that "The > CONFIG_USB_GADGET_VENDOR_NUM > > > must be one of the numbers supported by the fastboot client." In > my setup, > > > it is set to 0x0451, and I did not find what is supposed to be > supported in > > > fastboot.cpp [2]. So from the host, I also tried `fastboot -i > 0x0451 > > > devices`. Is that an issue? > > > > The fastboot client detects devices with two bulk endpoints and the > > correct interface (see match_fastboot and filter_usb_device). > Generally, > > you will only have to specify the vid/pid/serial if you have multiple > > devices plugged in at once. > > > > > * I thought that maybe I should start USB, because the output of > `usb tree` > > > says "USB is stopped. Please issue 'usb start' first.". But > running `usb > > > start` errors with "Bus usb at 47401800: Port not available.". Is > that related > > > to fastboot at all, i.e. should I be concerned about that? And > how can I > > > debug it? > > > > That's probably why your fastboot isn't working :) > > > > You can try debugging it by enabling debug messages. If you want > less than > > a firehose, you can try setting the default log level to info, and > then > > setting it to debug before running usb start. See [1] for details. > > > > [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html > > > > --Sean > > > > > Thanks in advance for the help! > > > Jonas > > > > > > [1]: > https://u-boot.readthedocs.io/en/latest/android/fastboot.html > > > [2]: > > > > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp > > > > > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-07 18:31 ` Fastboot Jonas Vautherin @ 2021-03-10 17:43 ` Jonas Vautherin 2021-03-10 23:44 ` Fastboot Sean Anderson 0 siblings, 1 reply; 12+ messages in thread From: Jonas Vautherin @ 2021-03-10 17:43 UTC (permalink / raw) To: u-boot Hello! I've made some more tests, but I am stuck and I don't really know what I am missing. Would love to get some insights, if somebody has an idea :-). So my root problem is that I would like to run my pocketbeagle in fastboot mode so that I can flash an image from my laptop over USB (it's a learning experience, I'm new to u-boot). When I go into the u-boot prompt and run `fastboot usb 0` (after I set `log level 7`), I get: ``` => fastboot usb 0 uclass_find_device_by_seq() 0 0 uclass_find_device_by_seq() - not found uclass_find_device_by_seq() 1 0 uclass_find_device_by_seq() - not found cmd_call() Command failed, result=1 ``` Similar for `fastboot usb 1` (I don't know which one is the microB on the pocketbeagle), except the numbers are `0 1` and `1 1` in the log output. If I `dm tree`, for some reason I see only usb1 at 47401800 (according to the `.dts`, usb0 is @47401000). ``` misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 usb 0 [ ] ti-musb-host `-- usb at 47401800 ``` Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig u-boot), I see that "Default Device Tree for DT control" is (am335x-evm). Opening ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts (which I believe is the one corresponding to `am335x-evm` in my defconfig), I see the following for usb: ``` &usb { status = "okay"; }; &usb_ctrl_mod { status = "okay"; }; &usb0_phy { status = "okay"; }; &usb1_phy { status = "okay"; }; &usb0 { status = "okay"; }; &usb1 { status = "okay"; dr_mode = "host"; }; ``` And showing usb0 and usb1 with `fdt print` (after I get the value of $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: ``` => fdt print /ocp/usb at 47400000/usb at 47401000 usb at 47401000 { compatible = "ti,musb-am33xx"; status = "okay"; reg = <0x47401400 0x00000400 0x47401000 0x00000200>; reg-names = "mc", "control"; interrupts = <0x00000012>; interrupt-names = "mc"; dr_mode = "otg"; mentor,multipoint = <0x00000001>; mentor,num-eps = <0x00000010>; mentor,ram-bits = <0x0000000c>; mentor,power = <0x000001f4>; phys = <0x00000037>; dmas = * 0x9df20aa8 [0x00000168]; dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15"; }; ``` and ``` => fdt print /ocp/usb at 47400000/usb at 47401800 usb at 47401800 { compatible = "ti,musb-am33xx"; status = "okay"; reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; reg-names = "mc", "control"; interrupts = <0x00000013>; interrupt-names = "mc"; dr_mode = "host"; mentor,multipoint = <0x00000001>; mentor,num-eps = <0x00000010>; mentor,ram-bits = <0x0000000c>; mentor,power = <0x000001f4>; phys = <0x00000039>; dmas = * 0x9df20e50 [0x00000168]; dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx 15"; }; ``` My understanding is therefore that `usb0` is in "otg" mode, and `usb1` is in "host" mode. But that does not really tell me why `fastboot usb 0` and `fastboot usb 1` failed. I have also tried to edit `am335x-evm.dts` and set both to "peripheral" (I do that in a Yocto patch step and make sure I `bitbake -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I rebuild): ``` &usb0 { status = "okay"; dr_mode = "peripheral"; }; &usb1 { status = "okay"; dr_mode = "peripheral"; }; ``` But that does not change anything in the `fdt print` output: usb0 is still "otg" and usb1 is still "host". Which makes me guess I may be modifying the wrong `am335x-evm.dts`, but I really don't know how I could check that. Again, any hints are appreciated, I'm happy to DuckDuckGo some new keywords or ideas as my goal is to learn about u-boot, but right now I'm just stuck :-). Best Regards, Jonas On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin <jonas.vautherin@gmail.com> wrote: > Yes that was it! I had used `log help`, but misunderstood the output. My > bad... Below is the debug output I receive, where I don't really get what's > happening except for those two lines: > > ``` > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > ``` > > But I don't really understand what it means. I spent a lot of time reading > the available options in menuconfig, and at that point I cannot say what I > am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, > which I changed to get more logging outputs. > > Here is the output of `usb start`, let me know if I am missing something > obvious from there: > > ``` > => usb start > starting USB... > Bus usb at 47401800: __of_translate_address() OF: ** translation for device > usb at 47401800 ** > __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: reached root node > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: > fdtdec_get_addr_size_fixed() addr=44e10620 > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 > (1) > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16) > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12) > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500) > uclass_find_device_by_seq() 0 1 > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > clk_set_defaults() clk_set_defaults(usb at 47401800) > clk_set_default_parents() clk_set_default_parents: could not read > assigned-clock-parents for 9df24d30 > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: > ofnode_read_prop() <not found> > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 > musb_start() <== devctl 80 > musb_stop() HDRC disabled > Port not available. > usb_init() scan end > ``` > > Best, > > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com> wrote: > >> On 3/6/21 8:38 PM, Jonas Vautherin wrote: >> > Thanks a lot Sean! >> > >> > I tried to enable logging by using the following CONFIG_: >> > >> > ``` >> > CONFIG_LOG=y >> > CONFIG_SPL_LOG=y >> > CONFIG_TPL_LOG=y >> > CONFIG_LOG_MAX_LEVEL=5 >> >> You need to increase this. Log levels are only compiled-in if they are >> less than the max log level. >> >> > CONFIG_SPL_LOG_MAX_LEVEL=3 >> > CONFIG_TPL_LOG_MAX_LEVEL=3 >> > CONFIG_LOG_DEFAULT_LEVEL=7 >> > CONFIG_LOG_CONSOLE=y >> > CONFIG_SPL_LOG_CONSOLE=y >> > CONFIG_TPL_LOG_CONSOLE=y >> > >> > CONFIG_CMD_LOG=y >> > ``` >> > >> > And I got the "log" function indeed. But it did not have the effect I >> was hoping for: >> > >> > ``` >> > => log level set 7 >> >> Use the help function ;) >> >> The correct syntax is "log level 7" >> >> If you use a newer U-Boot (newer than 2021.01) then the output will be >> more verbose. E.g. >> >> => log level >> EMERG >> ALERT >> CRIT >> ERR >> WARNING >> NOTICE >> INFO (default) >> DEBUG >> >> --Sean >> >> > => log level >> > Default log level: 0 >> > => usb start >> > starting USB... >> > Bus usb at 47401800: Port not available. >> > ``` >> > >> > First, I don't get why it says "Default log level: 0" after I set it >> (to whatever number, apparently). And second, it does not seem to bring me >> more output about the usb issue :-/. >> > >> > Am I missing something? >> > >> > Best, >> > Jonas >> > >> > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2@gmail.com >> <mailto:seanga2@gmail.com>> wrote: >> > >> > On 3/5/21 7:10 PM, Jonas Vautherin wrote: >> > > Hello! >> > > >> > > I am learning about Fastboot, and I would like to run it from >> u-boot and >> > > detect it from my host computer (I have the tools on my host, >> that's >> > > working with other devices). >> > > >> > > I am using a pocketbeagle and I built an image using Yocto. I >> can get into >> > > the u-boot prompt at boot time, and I get the following output: >> > > >> > > ``` >> > > Rebooting... reboot: Restarting system >> > > >> > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) >> > > Trying to boot from MMC1 >> > > >> > > >> > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) >> > > >> > > CPU : AM335X-GP rev 2.1 >> > > Model: TI AM335x PocketBeagle >> > > DRAM: 512 MiB >> > > WDT: Started with servicing (60s timeout) >> > > NAND: 0 MiB >> > > MMC: OMAP SD/MMC: 0 >> > > Loading Environment from FAT... *** Warning - bad CRC, using >> default >> > > environment >> > > >> > > <ethaddr> not set. Validating first E-fuse MAC >> > > Net: No ethernet found. >> > > Hit any key to stop autoboot: 2 >> > > ``` >> > > >> > > If I hit a key here, I get the u-boot prompt (`=>`) where I find >> > > "fastboot". The thing is that none of the fastboot commands I >> run have any >> > > output: >> > >> > This is normal. There will be output only when you issue commands. >> > >> > > >> > > * fastboot usb 0 >> > > * fastboot usb >> > > * fastboot udp >> > > >> > > Now, fastboot udp is not enabled in my defconfig, but the udp >> gadget >> > > support is, and the usb fastboot gadget is enabled, too. From my >> host, I >> > > just don't see anything in the `dmesg` output. >> > > >> > > Here are a few questions: >> > > >> > > * Does fastboot usb go over ethernet? If yes, I guess that the >> "Net: No >> > > ethernet found." message is an issue that I need to fix such >> that a new usb >> > > network interface is created by my host, but from my tests with >> this >> > > proprietary device I own, it does not seem to be enumerated as a >> network >> > > interface. >> > >> > Only udp goes over ethernet (though I suppose you could use a >> > usb-ethernet gadget/dongle). >> > >> > > * In readthedocs [1], it mentions that "The >> CONFIG_USB_GADGET_VENDOR_NUM >> > > must be one of the numbers supported by the fastboot client." In >> my setup, >> > > it is set to 0x0451, and I did not find what is supposed to be >> supported in >> > > fastboot.cpp [2]. So from the host, I also tried `fastboot -i >> 0x0451 >> > > devices`. Is that an issue? >> > >> > The fastboot client detects devices with two bulk endpoints and the >> > correct interface (see match_fastboot and filter_usb_device). >> Generally, >> > you will only have to specify the vid/pid/serial if you have >> multiple >> > devices plugged in at once. >> > >> > > * I thought that maybe I should start USB, because the output of >> `usb tree` >> > > says "USB is stopped. Please issue 'usb start' first.". But >> running `usb >> > > start` errors with "Bus usb at 47401800: Port not available.". Is >> that related >> > > to fastboot at all, i.e. should I be concerned about that? And >> how can I >> > > debug it? >> > >> > That's probably why your fastboot isn't working :) >> > >> > You can try debugging it by enabling debug messages. If you want >> less than >> > a firehose, you can try setting the default log level to info, and >> then >> > setting it to debug before running usb start. See [1] for details. >> > >> > [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html >> > >> > --Sean >> > >> > > Thanks in advance for the help! >> > > Jonas >> > > >> > > [1]: >> https://u-boot.readthedocs.io/en/latest/android/fastboot.html >> > > [2]: >> > > >> https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp >> > > >> > >> >> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-10 17:43 ` Fastboot Jonas Vautherin @ 2021-03-10 23:44 ` Sean Anderson 2021-03-11 0:56 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 12+ messages in thread From: Sean Anderson @ 2021-03-10 23:44 UTC (permalink / raw) To: u-boot On 3/10/21 12:43 PM, Jonas Vautherin wrote: > Hello! > > I've made some more tests, but I am stuck and I don't really know what > I am missing. Would love to get some insights, if somebody has an idea > :-). So my root problem is that I would like to run my pocketbeagle in > fastboot mode so that I can flash an image from my laptop over USB > (it's a learning experience, I'm new to u-boot). > > When I go into the u-boot prompt and run `fastboot usb 0` (after I set > `log level 7`), I get: > > ``` > => fastboot usb 0 > uclass_find_device_by_seq() 0 0 > uclass_find_device_by_seq() - not found > uclass_find_device_by_seq() 1 0 > uclass_find_device_by_seq() - not found > cmd_call() Command failed, result=1 > ``` > > Similar for `fastboot usb 1` (I don't know which one is the microB on > the pocketbeagle), except the numbers are `0 1` and `1 1` in the log > output. The numbers come from /aliases in the device tree. You should read the datasheet/schematic to figure out which is which :) > > If I `dm tree`, for some reason I see only usb1 at 47401800 (according to > the `.dts`, usb0 is @47401000). > > ``` > misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 > usb 0 [ ] ti-musb-host `-- usb at 47401800 > ``` > > Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig > u-boot), I see that "Default Device Tree for DT control" is > (am335x-evm). Opening > ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts > (which I believe is the one corresponding to `am335x-evm` in my > defconfig), I see the following for usb: > > ``` > &usb { > status = "okay"; > }; > > &usb_ctrl_mod { > status = "okay"; > }; > > &usb0_phy { > status = "okay"; > }; > > &usb1_phy { > status = "okay"; > }; > > &usb0 { > status = "okay"; > }; > > &usb1 { > status = "okay"; > dr_mode = "host"; > }; > ``` > > And showing usb0 and usb1 with `fdt print` (after I get the value of > $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: > > ``` > => fdt print /ocp/usb at 47400000/usb at 47401000 > usb at 47401000 { > compatible = "ti,musb-am33xx"; > status = "okay"; > reg = <0x47401400 0x00000400 0x47401000 0x00000200>; > reg-names = "mc", "control"; > interrupts = <0x00000012>; > interrupt-names = "mc"; > dr_mode = "otg"; > mentor,multipoint = <0x00000001>; > mentor,num-eps = <0x00000010>; > mentor,ram-bits = <0x0000000c>; > mentor,power = <0x000001f4>; > phys = <0x00000037>; > dmas = * 0x9df20aa8 [0x00000168]; > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx > 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15"; > }; > ``` > > and > > ``` > => fdt print /ocp/usb at 47400000/usb at 47401800 > usb at 47401800 { > compatible = "ti,musb-am33xx"; > status = "okay"; > reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; > reg-names = "mc", "control"; > interrupts = <0x00000013>; > interrupt-names = "mc"; > dr_mode = "host"; > mentor,multipoint = <0x00000001>; > mentor,num-eps = <0x00000010>; > mentor,ram-bits = <0x0000000c>; > mentor,power = <0x000001f4>; > phys = <0x00000039>; > dmas = * 0x9df20e50 [0x00000168]; > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx > 15"; > }; > ``` > > My understanding is therefore that `usb0` is in "otg" mode, and `usb1` > is in "host" mode. But that does not really tell me why `fastboot usb > 0` and `fastboot usb 1` failed. Yes. The U-Boot driver only supports host and peripheral modes, so no otg device is created. And fastboot cannot work with a USB host. > > I have also tried to edit `am335x-evm.dts` and set both to > "peripheral" (I do that in a Yocto patch step and make sure I `bitbake > -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I > rebuild): > > ``` > &usb0 { > status = "okay"; > dr_mode = "peripheral"; > }; > > &usb1 { > status = "okay"; > dr_mode = "peripheral"; > }; > ``` > > But that does not change anything in the `fdt print` output: usb0 is > still "otg" and usb1 is still "host". Which makes me guess I may be > modifying the wrong `am335x-evm.dts`, but I really don't know how I > could check that. Does cleaning wipe your changes? There should be some yocto way to apply patches; perhaps someone else can comment on that. --Sean > > Again, any hints are appreciated, I'm happy to DuckDuckGo some new keywords or ideas as my goal is to learn about u-boot, but right now I'm just stuck :-). > > Best Regards, > Jonas > > On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin <jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote: > > Yes that was it! I had used `log help`, but misunderstood the output. My bad... Below is the debug output I receive, where I don't really get what's happening except for those two lines: > > ``` > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > ``` > > But I don't really understand what it means. I spent a lot of time reading the available options in menuconfig, and at that point I cannot say what I am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, which I changed to get more logging outputs. > > Here is the output of `usb start`, let me know if I am missing something obvious from there: > > ``` > => usb start > starting USB... > Bus usb at 47401800: __of_translate_address() OF: ** translation for device usb at 47401800 ** > __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: reached root node > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: fdtdec_get_addr_size_fixed() addr=44e10620 > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 (1) > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16) > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12) > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500) > uclass_find_device_by_seq() 0 1 > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > clk_set_defaults() clk_set_defaults(usb at 47401800) > clk_set_default_parents() clk_set_default_parents: could not read assigned-clock-parents for 9df24d30 > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: ofnode_read_prop() <not found> > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 > musb_start() <== devctl 80 > musb_stop() HDRC disabled > Port not available. > usb_init() scan end > ``` > > Best, > > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com>> wrote: > > On 3/6/21 8:38 PM, Jonas Vautherin wrote: > > Thanks a lot Sean! > > > > I tried to enable logging by using the following CONFIG_: > > > > ``` > > CONFIG_LOG=y > > CONFIG_SPL_LOG=y > > CONFIG_TPL_LOG=y > > CONFIG_LOG_MAX_LEVEL=5 > > You need to increase this. Log levels are only compiled-in if they are > less than the max log level. > > > CONFIG_SPL_LOG_MAX_LEVEL=3 > > CONFIG_TPL_LOG_MAX_LEVEL=3 > > CONFIG_LOG_DEFAULT_LEVEL=7 > > CONFIG_LOG_CONSOLE=y > > CONFIG_SPL_LOG_CONSOLE=y > > CONFIG_TPL_LOG_CONSOLE=y > > > > CONFIG_CMD_LOG=y > > ``` > > > > And I got the "log" function indeed. But it did not have the effect I was hoping for: > > > > ``` > > => log level set 7 > > Use the help function ;) > > The correct syntax is "log level 7" > > If you use a newer U-Boot (newer than 2021.01) then the output will be > more verbose. E.g. > > => log level > EMERG > ALERT > CRIT > ERR > WARNING > NOTICE > INFO (default) > DEBUG > > --Sean > > > => log level > > Default log level: 0 > > => usb start > > starting USB... > > Bus usb at 47401800: Port not available. > > ``` > > > > First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/. > > > > Am I missing something? > > > > Best, > > Jonas > > > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2 at gmail.com <mailto:seanga2@gmail.com>>> wrote: > > > > On 3/5/21 7:10 PM, Jonas Vautherin wrote: > > > Hello! > > > > > > I am learning about Fastboot, and I would like to run it from u-boot and > > > detect it from my host computer (I have the tools on my host, that's > > > working with other devices). > > > > > > I am using a pocketbeagle and I built an image using Yocto. I can get into > > > the u-boot prompt at boot time, and I get the following output: > > > > > > ``` > > > Rebooting... reboot: Restarting system > > > > > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > Trying to boot from MMC1 > > > > > > > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > > > > CPU : AM335X-GP rev 2.1 > > > Model: TI AM335x PocketBeagle > > > DRAM: 512 MiB > > > WDT: Started with servicing (60s timeout) > > > NAND: 0 MiB > > > MMC: OMAP SD/MMC: 0 > > > Loading Environment from FAT... *** Warning - bad CRC, using default > > > environment > > > > > > <ethaddr> not set. Validating first E-fuse MAC > > > Net: No ethernet found. > > > Hit any key to stop autoboot: 2 > > > ``` > > > > > > If I hit a key here, I get the u-boot prompt (`=>`) where I find > > > "fastboot". The thing is that none of the fastboot commands I run have any > > > output: > > > > This is normal. There will be output only when you issue commands. > > > > > > > > * fastboot usb 0 > > > * fastboot usb > > > * fastboot udp > > > > > > Now, fastboot udp is not enabled in my defconfig, but the udp gadget > > > support is, and the usb fastboot gadget is enabled, too. From my host, I > > > just don't see anything in the `dmesg` output. > > > > > > Here are a few questions: > > > > > > * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No > > > ethernet found." message is an issue that I need to fix such that a new usb > > > network interface is created by my host, but from my tests with this > > > proprietary device I own, it does not seem to be enumerated as a network > > > interface. > > > > Only udp goes over ethernet (though I suppose you could use a > > usb-ethernet gadget/dongle). > > > > > * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM > > > must be one of the numbers supported by the fastboot client." In my setup, > > > it is set to 0x0451, and I did not find what is supposed to be supported in > > > fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451 > > > devices`. Is that an issue? > > > > The fastboot client detects devices with two bulk endpoints and the > > correct interface (see match_fastboot and filter_usb_device). Generally, > > you will only have to specify the vid/pid/serial if you have multiple > > devices plugged in at once. > > > > > * I thought that maybe I should start USB, because the output of `usb tree` > > > says "USB is stopped. Please issue 'usb start' first.". But running `usb > > > start` errors with "Bus usb at 47401800: Port not available.". Is that related > > > to fastboot at all, i.e. should I be concerned about that? And how can I > > > debug it? > > > > That's probably why your fastboot isn't working :) > > > > You can try debugging it by enabling debug messages. If you want less than > > a firehose, you can try setting the default log level to info, and then > > setting it to debug before running usb start. See [1] for details. > > > > [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html > > > > --Sean > > > > > Thanks in advance for the help! > > > Jonas > > > > > > [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html > > > [2]: > > > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp > > > > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-10 23:44 ` Fastboot Sean Anderson @ 2021-03-11 0:56 ` Jonas Vautherin 2021-03-13 0:15 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 12+ messages in thread From: Jonas Vautherin @ 2021-03-11 0:56 UTC (permalink / raw) To: u-boot Thanks a lot, Sean! From you answer, it seems like what I am trying to do (i.e. applying that patch to am335x.dts to set dr_mode to "peripheral") makes sense, though for some reason it does not get applied. I have been careful in checking that the dts file disappears after I cleansstate u-boot, and that it gets patched in the do_patch step. I have also checked that u-boot.img disappears from the deploy folder when I cleansstate, and gets rebuilt after the patch is applied. And finally, I have made sure that the cleansstate on my image removed it from the deploy folder. Moreover, I have `find build | grep am335x.dts` to check if I was patching the right file (which should be ensured by the fact that I patch it in the bbappend of the u-boot recipe). My fear is that for some reason, it does not use am335x.dts to build the device tree but something else entirely, which would mean that I am patching something that is not used. From u-boot.img, or ideally even from my final image I flash on the sdcard, is there a way for me to see what is used to define the device tree? Best, On Thu, 11 Mar 2021, 00:44 Sean Anderson, <seanga2@gmail.com> wrote: > On 3/10/21 12:43 PM, Jonas Vautherin wrote: > > Hello! > > > > I've made some more tests, but I am stuck and I don't really know what > > I am missing. Would love to get some insights, if somebody has an idea > > :-). So my root problem is that I would like to run my pocketbeagle in > > fastboot mode so that I can flash an image from my laptop over USB > > (it's a learning experience, I'm new to u-boot). > > > > When I go into the u-boot prompt and run `fastboot usb 0` (after I set > > `log level 7`), I get: > > > > ``` > > => fastboot usb 0 > > uclass_find_device_by_seq() 0 0 > > uclass_find_device_by_seq() - not found > > uclass_find_device_by_seq() 1 0 > > uclass_find_device_by_seq() - not found > > cmd_call() Command failed, result=1 > > ``` > > > > Similar for `fastboot usb 1` (I don't know which one is the microB on > > the pocketbeagle), except the numbers are `0 1` and `1 1` in the log > > output. > > The numbers come from /aliases in the device tree. You should read the > datasheet/schematic to figure out which is which :) > > > > > If I `dm tree`, for some reason I see only usb1 at 47401800 (according to > > the `.dts`, usb0 is @47401000). > > > > ``` > > misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 > > usb 0 [ ] ti-musb-host `-- usb at 47401800 > > ``` > > > > Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig > > u-boot), I see that "Default Device Tree for DT control" is > > (am335x-evm). Opening > > > ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts > > (which I believe is the one corresponding to `am335x-evm` in my > > defconfig), I see the following for usb: > > > > ``` > > &usb { > > status = "okay"; > > }; > > > > &usb_ctrl_mod { > > status = "okay"; > > }; > > > > &usb0_phy { > > status = "okay"; > > }; > > > > &usb1_phy { > > status = "okay"; > > }; > > > > &usb0 { > > status = "okay"; > > }; > > > > &usb1 { > > status = "okay"; > > dr_mode = "host"; > > }; > > ``` > > > > And showing usb0 and usb1 with `fdt print` (after I get the value of > > $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: > > > > ``` > > => fdt print /ocp/usb at 47400000/usb at 47401000 > > usb at 47401000 { > > compatible = "ti,musb-am33xx"; > > status = "okay"; > > reg = <0x47401400 0x00000400 0x47401000 0x00000200>; > > reg-names = "mc", "control"; > > interrupts = <0x00000012>; > > interrupt-names = "mc"; > > dr_mode = "otg"; > > mentor,multipoint = <0x00000001>; > > mentor,num-eps = <0x00000010>; > > mentor,ram-bits = <0x0000000c>; > > mentor,power = <0x000001f4>; > > phys = <0x00000037>; > > dmas = * 0x9df20aa8 [0x00000168]; > > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", > "rx8", "rx > > 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", > "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", > "tx14", "tx15"; > > }; > > ``` > > > > and > > > > ``` > > => fdt print /ocp/usb at 47400000/usb at 47401800 > > usb at 47401800 { > > compatible = "ti,musb-am33xx"; > > status = "okay"; > > reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; > > reg-names = "mc", "control"; > > interrupts = <0x00000013>; > > interrupt-names = "mc"; > > dr_mode = "host"; > > mentor,multipoint = <0x00000001>; > > mentor,num-eps = <0x00000010>; > > mentor,ram-bits = <0x0000000c>; > > mentor,power = <0x000001f4>; > > phys = <0x00000039>; > > dmas = * 0x9df20e50 [0x00000168]; > > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", > "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", > "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", > "tx13", "tx14", "tx > > 15"; > > }; > > ``` > > > > My understanding is therefore that `usb0` is in "otg" mode, and `usb1` > > is in "host" mode. But that does not really tell me why `fastboot usb > > 0` and `fastboot usb 1` failed. > > Yes. The U-Boot driver only supports host and peripheral modes, so no > otg device is created. And fastboot cannot work with a USB host. > > > > > I have also tried to edit `am335x-evm.dts` and set both to > > "peripheral" (I do that in a Yocto patch step and make sure I `bitbake > > -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I > > rebuild): > > > > ``` > > &usb0 { > > status = "okay"; > > dr_mode = "peripheral"; > > }; > > > > &usb1 { > > status = "okay"; > > dr_mode = "peripheral"; > > }; > > ``` > > > > But that does not change anything in the `fdt print` output: usb0 is > > still "otg" and usb1 is still "host". Which makes me guess I may be > > modifying the wrong `am335x-evm.dts`, but I really don't know how I > > could check that. > > Does cleaning wipe your changes? There should be some yocto way to apply > patches; perhaps someone else can comment on that. > > --Sean > > > > > Again, any hints are appreciated, I'm happy to DuckDuckGo some new > keywords or ideas as my goal is to learn about u-boot, but right now I'm > just stuck :-). > > > > Best Regards, > > Jonas > > > > On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin < > jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote: > > > > Yes that was it! I had used `log help`, but misunderstood the > output. My bad... Below is the debug output I receive, where I don't really > get what's happening except for those two lines: > > > > ``` > > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > > uclass_find_device_by_seq() - not found > > ``` > > > > But I don't really understand what it means. I spent a lot of time > reading the available options in menuconfig, and at that point I cannot say > what I am doing wrong. Note that I am using the `am335x_evm_defconfig` > defconfig, which I changed to get more logging outputs. > > > > Here is the output of `usb start`, let me know if I am missing > something obvious from there: > > > > ``` > > => usb start > > starting USB... > > Bus usb at 47401800: __of_translate_address() OF: ** translation for > device usb at 47401800 ** > > __of_translate_address() OF: bus is default (na=1, ns=1) on > usb at 47400000 > > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > ocp > > of_translate_one() OF: no ranges, 1:1 translation > > of_translate_one() OF: with offset: 1195382784 > > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > > of_translate_one() OF: no ranges, 1:1 translation > > of_translate_one() OF: with offset: 1195382784 > > __of_translate_address() OF: reached root node > > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys > > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod > > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: > fdtdec_get_addr_size_fixed() addr=44e10620 > > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() > 0x1 (1) > > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() > 0x10 (16) > > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() > 0xc (12) > > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() > 0x1f4 (500) > > uclass_find_device_by_seq() 0 1 > > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > > uclass_find_device_by_seq() - not found > > clk_set_defaults() clk_set_defaults(usb at 47401800) > > clk_set_default_parents() clk_set_default_parents: could not read > assigned-clock-parents for 9df24d30 > > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: > ofnode_read_prop() <not found> > > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 > > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 > > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 > > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 > > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 > > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 > > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 > > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 > > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 > > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 > > musb_start() <== devctl 80 > > musb_stop() HDRC disabled > > Port not available. > > usb_init() scan end > > ``` > > > > Best, > > > > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com > <mailto:seanga2@gmail.com>> wrote: > > > > On 3/6/21 8:38 PM, Jonas Vautherin wrote: > > > Thanks a lot Sean! > > > > > > I tried to enable logging by using the following CONFIG_: > > > > > > ``` > > > CONFIG_LOG=y > > > CONFIG_SPL_LOG=y > > > CONFIG_TPL_LOG=y > > > CONFIG_LOG_MAX_LEVEL=5 > > > > You need to increase this. Log levels are only compiled-in if > they are > > less than the max log level. > > > > > CONFIG_SPL_LOG_MAX_LEVEL=3 > > > CONFIG_TPL_LOG_MAX_LEVEL=3 > > > CONFIG_LOG_DEFAULT_LEVEL=7 > > > CONFIG_LOG_CONSOLE=y > > > CONFIG_SPL_LOG_CONSOLE=y > > > CONFIG_TPL_LOG_CONSOLE=y > > > > > > CONFIG_CMD_LOG=y > > > ``` > > > > > > And I got the "log" function indeed. But it did not have the > effect I was hoping for: > > > > > > ``` > > > => log level set 7 > > > > Use the help function ;) > > > > The correct syntax is "log level 7" > > > > If you use a newer U-Boot (newer than 2021.01) then the output > will be > > more verbose. E.g. > > > > => log level > > EMERG > > ALERT > > CRIT > > ERR > > WARNING > > NOTICE > > INFO (default) > > DEBUG > > > > --Sean > > > > > => log level > > > Default log level: 0 > > > => usb start > > > starting USB... > > > Bus usb at 47401800: Port not available. > > > ``` > > > > > > First, I don't get why it says "Default log level: 0" after I > set it (to whatever number, apparently). And second, it does not seem to > bring me more output about the usb issue :-/. > > > > > > Am I missing something? > > > > > > Best, > > > Jonas > > > > > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson < > seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2@gmail.com > <mailto:seanga2@gmail.com>>> wrote: > > > > > > On 3/5/21 7:10 PM, Jonas Vautherin wrote: > > > > Hello! > > > > > > > > I am learning about Fastboot, and I would like to run > it from u-boot and > > > > detect it from my host computer (I have the tools on > my host, that's > > > > working with other devices). > > > > > > > > I am using a pocketbeagle and I built an image using > Yocto. I can get into > > > > the u-boot prompt at boot time, and I get the > following output: > > > > > > > > ``` > > > > Rebooting... reboot: Restarting system > > > > > > > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > > Trying to boot from MMC1 > > > > > > > > > > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) > > > > > > > > CPU : AM335X-GP rev 2.1 > > > > Model: TI AM335x PocketBeagle > > > > DRAM: 512 MiB > > > > WDT: Started with servicing (60s timeout) > > > > NAND: 0 MiB > > > > MMC: OMAP SD/MMC: 0 > > > > Loading Environment from FAT... *** Warning - bad CRC, > using default > > > > environment > > > > > > > > <ethaddr> not set. Validating first E-fuse MAC > > > > Net: No ethernet found. > > > > Hit any key to stop autoboot: 2 > > > > ``` > > > > > > > > If I hit a key here, I get the u-boot prompt (`=>`) > where I find > > > > "fastboot". The thing is that none of the fastboot > commands I run have any > > > > output: > > > > > > This is normal. There will be output only when you issue > commands. > > > > > > > > > > > * fastboot usb 0 > > > > * fastboot usb > > > > * fastboot udp > > > > > > > > Now, fastboot udp is not enabled in my defconfig, but > the udp gadget > > > > support is, and the usb fastboot gadget is enabled, > too. From my host, I > > > > just don't see anything in the `dmesg` output. > > > > > > > > Here are a few questions: > > > > > > > > * Does fastboot usb go over ethernet? If yes, I guess > that the "Net: No > > > > ethernet found." message is an issue that I need to > fix such that a new usb > > > > network interface is created by my host, but from my > tests with this > > > > proprietary device I own, it does not seem to be > enumerated as a network > > > > interface. > > > > > > Only udp goes over ethernet (though I suppose you could > use a > > > usb-ethernet gadget/dongle). > > > > > > > * In readthedocs [1], it mentions that "The > CONFIG_USB_GADGET_VENDOR_NUM > > > > must be one of the numbers supported by the fastboot > client." In my setup, > > > > it is set to 0x0451, and I did not find what is > supposed to be supported in > > > > fastboot.cpp [2]. So from the host, I also tried > `fastboot -i 0x0451 > > > > devices`. Is that an issue? > > > > > > The fastboot client detects devices with two bulk > endpoints and the > > > correct interface (see match_fastboot and > filter_usb_device). Generally, > > > you will only have to specify the vid/pid/serial if you > have multiple > > > devices plugged in at once. > > > > > > > * I thought that maybe I should start USB, because the > output of `usb tree` > > > > says "USB is stopped. Please issue 'usb start' > first.". But running `usb > > > > start` errors with "Bus usb at 47401800: Port not > available.". Is that related > > > > to fastboot at all, i.e. should I be concerned about > that? And how can I > > > > debug it? > > > > > > That's probably why your fastboot isn't working :) > > > > > > You can try debugging it by enabling debug messages. If > you want less than > > > a firehose, you can try setting the default log level to > info, and then > > > setting it to debug before running usb start. See [1] for > details. > > > > > > [1] > https://u-boot.readthedocs.io/en/latest/develop/logging.html > > > > > > --Sean > > > > > > > Thanks in advance for the help! > > > > Jonas > > > > > > > > [1]: > https://u-boot.readthedocs.io/en/latest/android/fastboot.html > > > > [2]: > > > > > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp > > > > > > > > > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Fastboot 2021-03-11 0:56 ` Fastboot Jonas Vautherin @ 2021-03-13 0:15 ` Jonas Vautherin 0 siblings, 0 replies; 12+ messages in thread From: Jonas Vautherin @ 2021-03-13 0:15 UTC (permalink / raw) To: u-boot Finally made it work! I was editing the wrong file: am335x-evm.dts instead of am335x-pocketbeagle.dts. Because in the defconfig, "am335x-evm" was defined as the "default", I thought it would boot there. But there is apparently a mechanism that makes it choose am335x-pocketbeagle.dts instead. I applied the following patch and it just worked: ``` diff --git a/arch/arm/dts/am335x-pocketbeagle.dts b/arch/arm/dts/am335x-pocketbeagle.dts index 62fe5cab9f..3ba1c9c950 100644 --- a/arch/arm/dts/am335x-pocketbeagle.dts +++ b/arch/arm/dts/am335x-pocketbeagle.dts @@ -220,7 +220,7 @@ &usb0 { status = "okay"; - dr_mode = "otg"; + dr_mode = "peripheral"; }; &usb1_phy { ``` I struggled with it, but that was a learning experience. Thanks a lot for the help! On Thu, Mar 11, 2021 at 1:56 AM Jonas Vautherin <jonas.vautherin@gmail.com> wrote: > Thanks a lot, Sean! > > From you answer, it seems like what I am trying to do (i.e. applying that > patch to am335x.dts to set dr_mode to "peripheral") makes sense, though for > some reason it does not get applied. > > I have been careful in checking that the dts file disappears after I > cleansstate u-boot, and that it gets patched in the do_patch step. I have > also checked that u-boot.img disappears from the deploy folder when I > cleansstate, and gets rebuilt after the patch is applied. And finally, I > have made sure that the cleansstate on my image removed it from the deploy > folder. > > Moreover, I have `find build | grep am335x.dts` to check if I was patching > the right file (which should be ensured by the fact that I patch it in the > bbappend of the u-boot recipe). > > My fear is that for some reason, it does not use am335x.dts to build the > device tree but something else entirely, which would mean that I am > patching something that is not used. > > From u-boot.img, or ideally even from my final image I flash on the > sdcard, is there a way for me to see what is used to define the device tree? > > Best, > > On Thu, 11 Mar 2021, 00:44 Sean Anderson, <seanga2@gmail.com> wrote: > >> On 3/10/21 12:43 PM, Jonas Vautherin wrote: >> > Hello! >> > >> > I've made some more tests, but I am stuck and I don't really know what >> > I am missing. Would love to get some insights, if somebody has an idea >> > :-). So my root problem is that I would like to run my pocketbeagle in >> > fastboot mode so that I can flash an image from my laptop over USB >> > (it's a learning experience, I'm new to u-boot). >> > >> > When I go into the u-boot prompt and run `fastboot usb 0` (after I set >> > `log level 7`), I get: >> > >> > ``` >> > => fastboot usb 0 >> > uclass_find_device_by_seq() 0 0 >> > uclass_find_device_by_seq() - not found >> > uclass_find_device_by_seq() 1 0 >> > uclass_find_device_by_seq() - not found >> > cmd_call() Command failed, result=1 >> > ``` >> > >> > Similar for `fastboot usb 1` (I don't know which one is the microB on >> > the pocketbeagle), except the numbers are `0 1` and `1 1` in the log >> > output. >> >> The numbers come from /aliases in the device tree. You should read the >> datasheet/schematic to figure out which is which :) >> >> > >> > If I `dm tree`, for some reason I see only usb1 at 47401800 (according to >> > the `.dts`, usb0 is @47401000). >> > >> > ``` >> > misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 >> > usb 0 [ ] ti-musb-host `-- >> usb at 47401800 >> > ``` >> > >> > Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig >> > u-boot), I see that "Default Device Tree for DT control" is >> > (am335x-evm). Opening >> > >> ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts >> > (which I believe is the one corresponding to `am335x-evm` in my >> > defconfig), I see the following for usb: >> > >> > ``` >> > &usb { >> > status = "okay"; >> > }; >> > >> > &usb_ctrl_mod { >> > status = "okay"; >> > }; >> > >> > &usb0_phy { >> > status = "okay"; >> > }; >> > >> > &usb1_phy { >> > status = "okay"; >> > }; >> > >> > &usb0 { >> > status = "okay"; >> > }; >> > >> > &usb1 { >> > status = "okay"; >> > dr_mode = "host"; >> > }; >> > ``` >> > >> > And showing usb0 and usb1 with `fdt print` (after I get the value of >> > $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: >> > >> > ``` >> > => fdt print /ocp/usb at 47400000/usb at 47401000 >> > usb at 47401000 { >> > compatible = "ti,musb-am33xx"; >> > status = "okay"; >> > reg = <0x47401400 0x00000400 0x47401000 0x00000200>; >> > reg-names = "mc", "control"; >> > interrupts = <0x00000012>; >> > interrupt-names = "mc"; >> > dr_mode = "otg"; >> > mentor,multipoint = <0x00000001>; >> > mentor,num-eps = <0x00000010>; >> > mentor,ram-bits = <0x0000000c>; >> > mentor,power = <0x000001f4>; >> > phys = <0x00000037>; >> > dmas = * 0x9df20aa8 [0x00000168]; >> > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", >> "rx8", "rx >> > 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", >> "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", >> "tx13", "tx14", "tx15"; >> > }; >> > ``` >> > >> > and >> > >> > ``` >> > => fdt print /ocp/usb at 47400000/usb at 47401800 >> > usb at 47401800 { >> > compatible = "ti,musb-am33xx"; >> > status = "okay"; >> > reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; >> > reg-names = "mc", "control"; >> > interrupts = <0x00000013>; >> > interrupt-names = "mc"; >> > dr_mode = "host"; >> > mentor,multipoint = <0x00000001>; >> > mentor,num-eps = <0x00000010>; >> > mentor,ram-bits = <0x0000000c>; >> > mentor,power = <0x000001f4>; >> > phys = <0x00000039>; >> > dmas = * 0x9df20e50 [0x00000168]; >> > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", >> "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", >> "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", >> "tx13", "tx14", "tx >> > 15"; >> > }; >> > ``` >> > >> > My understanding is therefore that `usb0` is in "otg" mode, and `usb1` >> > is in "host" mode. But that does not really tell me why `fastboot usb >> > 0` and `fastboot usb 1` failed. >> >> Yes. The U-Boot driver only supports host and peripheral modes, so no >> otg device is created. And fastboot cannot work with a USB host. >> >> > >> > I have also tried to edit `am335x-evm.dts` and set both to >> > "peripheral" (I do that in a Yocto patch step and make sure I `bitbake >> > -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I >> > rebuild): >> > >> > ``` >> > &usb0 { >> > status = "okay"; >> > dr_mode = "peripheral"; >> > }; >> > >> > &usb1 { >> > status = "okay"; >> > dr_mode = "peripheral"; >> > }; >> > ``` >> > >> > But that does not change anything in the `fdt print` output: usb0 is >> > still "otg" and usb1 is still "host". Which makes me guess I may be >> > modifying the wrong `am335x-evm.dts`, but I really don't know how I >> > could check that. >> >> Does cleaning wipe your changes? There should be some yocto way to apply >> patches; perhaps someone else can comment on that. >> >> --Sean >> >> > >> > Again, any hints are appreciated, I'm happy to DuckDuckGo some new >> keywords or ideas as my goal is to learn about u-boot, but right now I'm >> just stuck :-). >> > >> > Best Regards, >> > Jonas >> > >> > On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin < >> jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote: >> > >> > Yes that was it! I had used `log help`, but misunderstood the >> output. My bad... Below is the debug output I receive, where I don't really >> get what's happening except for those two lines: >> > >> > ``` >> > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' >> > uclass_find_device_by_seq() - not found >> > ``` >> > >> > But I don't really understand what it means. I spent a lot of time >> reading the available options in menuconfig, and at that point I cannot say >> what I am doing wrong. Note that I am using the `am335x_evm_defconfig` >> defconfig, which I changed to get more logging outputs. >> > >> > Here is the output of `usb start`, let me know if I am missing >> something obvious from there: >> > >> > ``` >> > => usb start >> > starting USB... >> > Bus usb at 47401800: __of_translate_address() OF: ** translation for >> device usb at 47401800 ** >> > __of_translate_address() OF: bus is default (na=1, ns=1) on >> usb at 47400000 >> > __of_translate_address() OF: parent bus is default (na=1, ns=1) on >> ocp >> > of_translate_one() OF: no ranges, 1:1 translation >> > of_translate_one() OF: with offset: 1195382784 >> > __of_translate_address() OF: parent bus is default (na=1, ns=1) on >> > of_translate_one() OF: no ranges, 1:1 translation >> > of_translate_one() OF: with offset: 1195382784 >> > __of_translate_address() OF: reached root node >> > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys >> > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod >> > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: >> fdtdec_get_addr_size_fixed() addr=44e10620 >> > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: >> fdtdec_get_int() 0x1 (1) >> > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() >> 0x10 (16) >> > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() >> 0xc (12) >> > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() >> 0x1f4 (500) >> > uclass_find_device_by_seq() 0 1 >> > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' >> > uclass_find_device_by_seq() - not found >> > clk_set_defaults() clk_set_defaults(usb at 47401800) >> > clk_set_default_parents() clk_set_default_parents: could not read >> assigned-clock-parents for 9df24d30 >> > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: >> ofnode_read_prop() <not found> >> > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 >> > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 >> > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 >> > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 >> > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 >> > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 >> > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 >> > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 >> > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 >> > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 >> > musb_start() <== devctl 80 >> > musb_stop() HDRC disabled >> > Port not available. >> > usb_init() scan end >> > ``` >> > >> > Best, >> > >> > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com >> <mailto:seanga2@gmail.com>> wrote: >> > >> > On 3/6/21 8:38 PM, Jonas Vautherin wrote: >> > > Thanks a lot Sean! >> > > >> > > I tried to enable logging by using the following CONFIG_: >> > > >> > > ``` >> > > CONFIG_LOG=y >> > > CONFIG_SPL_LOG=y >> > > CONFIG_TPL_LOG=y >> > > CONFIG_LOG_MAX_LEVEL=5 >> > >> > You need to increase this. Log levels are only compiled-in if >> they are >> > less than the max log level. >> > >> > > CONFIG_SPL_LOG_MAX_LEVEL=3 >> > > CONFIG_TPL_LOG_MAX_LEVEL=3 >> > > CONFIG_LOG_DEFAULT_LEVEL=7 >> > > CONFIG_LOG_CONSOLE=y >> > > CONFIG_SPL_LOG_CONSOLE=y >> > > CONFIG_TPL_LOG_CONSOLE=y >> > > >> > > CONFIG_CMD_LOG=y >> > > ``` >> > > >> > > And I got the "log" function indeed. But it did not have the >> effect I was hoping for: >> > > >> > > ``` >> > > => log level set 7 >> > >> > Use the help function ;) >> > >> > The correct syntax is "log level 7" >> > >> > If you use a newer U-Boot (newer than 2021.01) then the output >> will be >> > more verbose. E.g. >> > >> > => log level >> > EMERG >> > ALERT >> > CRIT >> > ERR >> > WARNING >> > NOTICE >> > INFO (default) >> > DEBUG >> > >> > --Sean >> > >> > > => log level >> > > Default log level: 0 >> > > => usb start >> > > starting USB... >> > > Bus usb at 47401800: Port not available. >> > > ``` >> > > >> > > First, I don't get why it says "Default log level: 0" after >> I set it (to whatever number, apparently). And second, it does not seem to >> bring me more output about the usb issue :-/. >> > > >> > > Am I missing something? >> > > >> > > Best, >> > > Jonas >> > > >> > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson < >> seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2@gmail.com >> <mailto:seanga2@gmail.com>>> wrote: >> > > >> > > On 3/5/21 7:10 PM, Jonas Vautherin wrote: >> > > > Hello! >> > > > >> > > > I am learning about Fastboot, and I would like to run >> it from u-boot and >> > > > detect it from my host computer (I have the tools on >> my host, that's >> > > > working with other devices). >> > > > >> > > > I am using a pocketbeagle and I built an image using >> Yocto. I can get into >> > > > the u-boot prompt at boot time, and I get the >> following output: >> > > > >> > > > ``` >> > > > Rebooting... reboot: Restarting system >> > > > >> > > > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000) >> > > > Trying to boot from MMC1 >> > > > >> > > > >> > > > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000) >> > > > >> > > > CPU : AM335X-GP rev 2.1 >> > > > Model: TI AM335x PocketBeagle >> > > > DRAM: 512 MiB >> > > > WDT: Started with servicing (60s timeout) >> > > > NAND: 0 MiB >> > > > MMC: OMAP SD/MMC: 0 >> > > > Loading Environment from FAT... *** Warning - bad >> CRC, using default >> > > > environment >> > > > >> > > > <ethaddr> not set. Validating first E-fuse MAC >> > > > Net: No ethernet found. >> > > > Hit any key to stop autoboot: 2 >> > > > ``` >> > > > >> > > > If I hit a key here, I get the u-boot prompt (`=>`) >> where I find >> > > > "fastboot". The thing is that none of the fastboot >> commands I run have any >> > > > output: >> > > >> > > This is normal. There will be output only when you issue >> commands. >> > > >> > > > >> > > > * fastboot usb 0 >> > > > * fastboot usb >> > > > * fastboot udp >> > > > >> > > > Now, fastboot udp is not enabled in my defconfig, but >> the udp gadget >> > > > support is, and the usb fastboot gadget is enabled, >> too. From my host, I >> > > > just don't see anything in the `dmesg` output. >> > > > >> > > > Here are a few questions: >> > > > >> > > > * Does fastboot usb go over ethernet? If yes, I guess >> that the "Net: No >> > > > ethernet found." message is an issue that I need to >> fix such that a new usb >> > > > network interface is created by my host, but from my >> tests with this >> > > > proprietary device I own, it does not seem to be >> enumerated as a network >> > > > interface. >> > > >> > > Only udp goes over ethernet (though I suppose you could >> use a >> > > usb-ethernet gadget/dongle). >> > > >> > > > * In readthedocs [1], it mentions that "The >> CONFIG_USB_GADGET_VENDOR_NUM >> > > > must be one of the numbers supported by the fastboot >> client." In my setup, >> > > > it is set to 0x0451, and I did not find what is >> supposed to be supported in >> > > > fastboot.cpp [2]. So from the host, I also tried >> `fastboot -i 0x0451 >> > > > devices`. Is that an issue? >> > > >> > > The fastboot client detects devices with two bulk >> endpoints and the >> > > correct interface (see match_fastboot and >> filter_usb_device). Generally, >> > > you will only have to specify the vid/pid/serial if you >> have multiple >> > > devices plugged in at once. >> > > >> > > > * I thought that maybe I should start USB, because >> the output of `usb tree` >> > > > says "USB is stopped. Please issue 'usb start' >> first.". But running `usb >> > > > start` errors with "Bus usb at 47401800: Port not >> available.". Is that related >> > > > to fastboot at all, i.e. should I be concerned about >> that? And how can I >> > > > debug it? >> > > >> > > That's probably why your fastboot isn't working :) >> > > >> > > You can try debugging it by enabling debug messages. If >> you want less than >> > > a firehose, you can try setting the default log level to >> info, and then >> > > setting it to debug before running usb start. See [1] >> for details. >> > > >> > > [1] >> https://u-boot.readthedocs.io/en/latest/develop/logging.html >> > > >> > > --Sean >> > > >> > > > Thanks in advance for the help! >> > > > Jonas >> > > > >> > > > [1]: >> https://u-boot.readthedocs.io/en/latest/android/fastboot.html >> > > > [2]: >> > > > >> https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp >> > > > >> > > >> > >> >> ^ permalink raw reply related [flat|nested] 12+ messages in thread
* fastboot. @ 2009-05-29 11:13 Kenneth Johansson 2009-05-29 20:30 ` fastboot John Rigby 0 siblings, 1 reply; 12+ messages in thread From: Kenneth Johansson @ 2009-05-29 11:13 UTC (permalink / raw) To: linuxppc-dev http://www.cambridgewireless.co.uk/news/article/default.aspx?objid=36792 Anybody know what they mean by booting here. I have started the ads5121 board using u-boot and kernel in NOR flash and root file system on a compact flash card connected to the IDE interface in 2.05 second until init is started from the rootfs. This was fast enough for what was needed I did not try to optimize further but since I already was in the domain where changes impacted only a few milliseconds I have a hard time imagining going down to less than a second. So I guess the only way is to skip u-boot and run linux kernel directly out of NOR. Anyone know what MontaVista is doing ?? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fastboot. 2009-05-29 11:13 fastboot Kenneth Johansson @ 2009-05-29 20:30 ` John Rigby 2009-05-29 20:45 ` fastboot John Rigby 0 siblings, 1 reply; 12+ messages in thread From: John Rigby @ 2009-05-29 20:30 UTC (permalink / raw) To: Kenneth Johansson; +Cc: linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 1567 bytes --] Kenneth, I did some fastboot work for 5121 a few months ago. U-boot, kernel and JFFS2 rootfs in NOR. My reset to userland time was 2.0 seconds, where userland was first command executed in first rc.whatever file, so it included the time for /sbin/init to get up and start running the rc scripts. I did some profiling and noticed that the JFFS2 boot time was a significant hunk (not just the first time but everytime). I ran sumtool on the JFFS2 image and it dropped 600 ms from the boot time so my final time was 1.4 seconds. The sumtool program has been around for a few years but it was news to mean when I found it. John On Fri, May 29, 2009 at 5:13 AM, Kenneth Johansson <kenneth@southpole.se>wrote: > http://www.cambridgewireless.co.uk/news/article/default.aspx?objid=36792 > > Anybody know what they mean by booting here. > > I have started the ads5121 board using u-boot and kernel in NOR flash > and root file system on a compact flash card connected to the IDE > interface in 2.05 second until init is started from the rootfs. > > This was fast enough for what was needed I did not try to optimize > further but since I already was in the domain where changes impacted > only a few milliseconds I have a hard time imagining going down to less > than a second. > > So I guess the only way is to skip u-boot and run linux kernel directly > out of NOR. Anyone know what MontaVista is doing ?? > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-dev > [-- Attachment #2: Type: text/html, Size: 2140 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fastboot. 2009-05-29 20:30 ` fastboot John Rigby @ 2009-05-29 20:45 ` John Rigby 0 siblings, 0 replies; 12+ messages in thread From: John Rigby @ 2009-05-29 20:45 UTC (permalink / raw) To: Kenneth Johansson; +Cc: linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 2551 bytes --] One more thing. You can get another speed up if you can do burst reads from NOR. This requires using the fifo in the local bus controller. On the ADS5121 board you need a cpld change to increment the address lines. With the cpld as shipped you end up reading bursts that have the first 4 bytes repeated because the address lines do not increment. I don't know if this is feature or bug with the 5121 but I do know you can work around it in the cpld. With burst access working you should be able to speed up the kernel copy and also the jffs2 mount and filesystem access. I also found that coping an uncompressed kernel was faster than decompressing a compressed kernel. But your mileage may vary if you have the data cache on. I found that working around all the problems with turning data cache on were going to take more time than I had. John On Fri, May 29, 2009 at 2:30 PM, John Rigby <jcrigby@gmail.com> wrote: > Kenneth, > > I did some fastboot work for 5121 a few months ago. U-boot, kernel and > JFFS2 rootfs in NOR. My reset to userland time was 2.0 seconds, where > userland was first command executed in first rc.whatever file, so it > included the time for /sbin/init to get up and start running the rc scripts. > > I did some profiling and noticed that the JFFS2 boot time was a significant > hunk (not just the first time but everytime). I ran sumtool on the JFFS2 > image and it dropped 600 ms from the boot time so my final time was 1.4 > seconds. The sumtool program has been around for a few years but it was > news to mean when I found it. > > John > > > On Fri, May 29, 2009 at 5:13 AM, Kenneth Johansson <kenneth@southpole.se>wrote: > >> http://www.cambridgewireless.co.uk/news/article/default.aspx?objid=36792 >> >> Anybody know what they mean by booting here. >> >> I have started the ads5121 board using u-boot and kernel in NOR flash >> and root file system on a compact flash card connected to the IDE >> interface in 2.05 second until init is started from the rootfs. >> >> This was fast enough for what was needed I did not try to optimize >> further but since I already was in the domain where changes impacted >> only a few milliseconds I have a hard time imagining going down to less >> than a second. >> >> So I guess the only way is to skip u-boot and run linux kernel directly >> out of NOR. Anyone know what MontaVista is doing ?? >> >> _______________________________________________ >> Linuxppc-dev mailing list >> Linuxppc-dev@ozlabs.org >> https://ozlabs.org/mailman/listinfo/linuxppc-dev >> > > [-- Attachment #2: Type: text/html, Size: 3462 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2021-03-13 0:15 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-03-06 0:10 Fastboot Jonas Vautherin 2021-03-06 2:20 ` Fastboot Sean Anderson 2021-03-07 1:38 ` Fastboot Jonas Vautherin 2021-03-07 2:04 ` Fastboot Sean Anderson 2021-03-07 18:31 ` Fastboot Jonas Vautherin 2021-03-10 17:43 ` Fastboot Jonas Vautherin 2021-03-10 23:44 ` Fastboot Sean Anderson 2021-03-11 0:56 ` Fastboot Jonas Vautherin 2021-03-13 0:15 ` Fastboot Jonas Vautherin -- strict thread matches above, loose matches on Subject: below -- 2009-05-29 11:13 fastboot Kenneth Johansson 2009-05-29 20:30 ` fastboot John Rigby 2009-05-29 20:45 ` fastboot John Rigby
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.