From 95259e28ef047923258434898113d70c8e544eab Mon Sep 17 00:00:00 2001 From: Francis Rowe Date: Fri, 06 Nov 2015 17:43:29 -0500 Subject: convert documentation to texinfo --- (limited to 'docs/install/bbb_ehci.html') diff --git a/docs/install/bbb_ehci.html b/docs/install/bbb_ehci.html deleted file mode 100644 index 3cdda48..0000000 --- a/docs/install/bbb_ehci.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - - - EHCI debugging on the BeagleBone Black - - - - -
-

EHCI debugging on the BeagleBone Black

- -

Back to previous index

-
- -
-

EHCI debugging

-
    -
  1. Find - USB port on the target that supports EHCI debug
  2. -
  3. Initial - setup of BBB to act as EHCI debug dongle
  4. -
  5. Patch - BBB's g_dbgp module (optional, but highly recommended)
  6. -
  7. Configure - libreboot with EHCI debug -
      -
    1. Selecting - HCD Index and USB Debug port
    2. -
  8. -
  9. How to get the debug - logs
  10. -
  11. Eneble - EHCI Debug on the target's kernel (optional, recommended)
  12. -
  13. References
  14. -
-

If your computer does not boot after installing libreboot, it is - very useful to get debug logs from it, from the payload (grub) and/or - the kernel (if gets to there). All of them stream debug logs on the - available serial (RS-232) by default. However, most of todays laptops - lack RS-232 port. The other option is to stream the logs to USB EHCI - debug port.

-

This section explains step-by-step how to setup BBB as a - “USB EHCI debug dongle” and configure libreboot and the - linux kernel to stream logs to it (TODO: grub).

-

I will refer to three computers:

- -

Find USB port - on the target that supports EHCI debug

-

- Not all USB controllers support EHCI debug (see: EHCI - Debug Port ). Even more, if a USB controller supports EHCI debug, it - is available only on a single port that might or might - not be exposed externally. -

- - -
    -
  1. Plug the usb stick in the first available usb port
  2. -
  3. Run the script, you will get output similar to following:
  4. -
    The following PCI devices support a USB debug port (says lspci): 0000:00:1a.0 0000:00:1d.0
    -The following PCI devices support a USB debug port (says the kernel): 0000:00:1a.0 0000:00:1d.0
    -*PCI device 0000:00:1a.0, USB bus 3, USB physical port 1*
    -*PCI device 0000:00:1d.0, USB bus 4, USB physical port 2*
    -Currently connected high-speed devices:
    -/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    -	|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
    -		|__ Port 7: Dev 14, If 0, Class=Hub, Driver=hub/4p, 480M
    -			|__ Port 1: Dev 15, If 0, Class=Hub, Driver=hub/4p, 480M
    -			|__ Port 3: Dev 17, If 0, Class=Hub, Driver=hub/2p, 480M
    -			|__ Port 4: Dev 18, If 0, Class=Hub, Driver=hub/4p, 480M
    -/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    -	|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
    -/:  *Bus 01*.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    -	|__ *Port 3: Dev 31, If 0, Class=Mass Storage, Driver=usb-storage, 480M*
    -
    -
  5. The buses the support debug are Bus 3 (0000:00:1a.0) on Port 1 - and Bus 4 (0000:00:1d.0) on port 2. Your usb stick is plugged on Bus - 1, Port 3
  6. -
  7. Repeat the steps, plugging the USB stick in the next available - port
  8. -
  9. Go through all available ports and remember(write down) those - for which bus/port of the usb stick matches one of the bus/port that - support debug (bold).
  10. -
-

Remember (write down) for each port (external plug) you found - that supports debug: PCI device id, the bus id, the port number, and - the physical location of the usb plug.

-

If you do not find a match, you can not get debug over EHCI. - Sorry.

-

- 1 The guys from coreboot were talking about including the - script in coreboot distribution (check the status). -

-

Initial setup of - BBB to act as EHCI debug dongle

-

BBB must be powered with a barrel power connector since the - mini-B USB plug will be used for the EHCI debug stream. So you will - need:

- -

- (On BBB) The linux kernel includes module (g_dbgp that enables one of the usb ports on a computer to behave as EHCI - debug dongle. Make sure you have this module available on your BBB - (Debian 7.8 that comes with BBB should have it), if not, you should - compile it yourself (see next section): -

-
ls /lib/modules/3.8.13-bone70/kernel/drivers/usb/gadget/g_dbgp.ko
-

- Unload all other - g_* - modules: -

-
# lsmod
-# rmmod g_multi
-...
-
-

- Then load - g_dbgp - : -

-
# modprobe g_dbgp
-# lsmod # should show that g_dbgp is loaded, and no other g_*
-
-

- Plug the mini-B side of the USB cable in your BBB and the A side in - your target. Then one of the usb devices on your target (with - lsusb - ) should be: -

-
Bus 001 Device 024: ID 0525:c0de Netchip Technology, Inc.
-

If you see the device on the target, you are good to continue to - the next step.

-

- Patch BBB’s - g_dbgp - module (optional, but highly recommended) -

-

- For the reasons why you need this, see: EHCI Gadget Debug.
Make - sure that you have cross compiling environment for - arm-linux-gnueabihf - setup on your host. -

- -
$ cd $work_dir
-$ git clone https://github.com/beagleboard/kernel.git
-$ cd kernel
-$ git checkout $mav (see above)
-$ ./patch.sh
-$ wget http://arago-project.org/git/projects/?p=am33x-cm3.git\;a=blob_plain\;f=bin/am335x-pm-firmware.bin\;hb=HEAD -O kernel/firmware/am335x-pm-firmware.bin
-$ cp configs/beaglebone kernel/arch/arm/configs/beaglebone_defconfig
-
- -
-git apply ../usbdebug-gadget/v3.8-debug-gadget/0001-usb-dbgp-gadget-Fix-re-connecting-after-USB-disconne.patch
-git apply ../usbdebug-gadget/v3.8-debug-gadget/0002-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch
-;
-make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- beaglebone_defconfig -j4@
-
- -
-$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 (is it possoble to build only the gadget modules)
-$ mkdir ../tmp && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=../tmp modules_install
-
- -

Configure libreboot with - EHCI debug

-

- Libreboot(coreboot) should be configured with debug turned on and to - push debug messages to the EHCI debug port.
If you’ve - downloaded the binary distribution, you can check if it is properly - configured in the following way: -

- -
-./cbfstool/i686/cbfstool $img_path extract -n config -f ./my_config
-
- -
-CONFIG_USBDEBUG=y (Generic Drivers -> USB 2.0 EHCI debug dongle support)
-CONFIG_USBDEBUG_IN_ROMSTAGE=y (Generic Drivers -> Enable early (pre-RAM) usbdebug)
-CONFIG_USBDEBUG_HCD_INDEX=<HCD Index of usb controller - see below> (Generic Drivers -> Index for EHCI controller to use with usbdebug)
-CONFIG_USBDEBUG_DEFAULT_PORT=<USB Debug port - see below> (Generic Drivers -> Default USB port to use as Debug Port)
-
-

- The following three are behind radio button in the menu. Only the first - one2 should be = y -

-
-USBDEBUG_DONGLE_STD=y                       (Generic Drivers -> Type of dongle (Net20DC or compatible) -> Net20DC or compatible)
-CONFIG_USBDEBUG_DONGLE_BEAGLEBONE=n         (Generic Drivers -> Type of dongle (Net20DC or compatible) -> BeagleBone)
-CONFIG_USBDEBUG_DONGLE_BEAGLEBONE_BLACK=n   (Generic Drivers -> Type of dongle (Net20DC or compatible) -> BeagleBone Black)
-
-

- 2 The g_dbgp module on BeagleBone Black (Rev. C) reports it self as Net20DC, the - other options are for older BB(B) - ver1. This is documented here - (also tested/verified). -

-

- Then:
-

-CONFIG_CONSOLE_USB=y (Console -> USB dongle console output)
-
-

-

- Also - Debugging ---> Output verbose XYZ - ) (FIXME somebody verify these): -

-
-CONFIG_DEBUG_CBFS=y (Output verbose CBFS debug messages )
-CONFIG_HAVE_DEBUG_RAM_SETUP=y (??? What/where is this)
-CONFIG_DEBUG_RAM_SETUP=y (Output verbose RAM init debug messages)
-CONFIG_DEBUG_SMI=y      (Output verbose SMI debug messages)
-CONFIG_DEBUG_ACPI=y     (Output verbose ACPI debug messages )
-CONFIG_DEBUG_USBDEBUG=y (Output verbose USB 2.0 EHCI debug dongle messages)
-
-

If some of the above mentioned configuration options are not as - specified, you have to configure and compile libreboot yourself. Please - refer to the doc(FIXME: link about compiling libreboot.

-

- Selecting - HCD Index - and - USB Debug port -

-

- This applies (and works) only if the USB controller that supports debug - (found in the first section) is from Intel.
If the PCI ID of the - port you found in the first section is - 0000:00:1a.0 - or - 0000:00:1d.0 - , you are ok. Otherwise you have to try without guarantee that will - work. -

-

- If the externally exposed port is on a bus with - PCI ID == 0000:00:1a.0 - then for - CONFIG_USBDEBUG_HCD_INDEX - choose 2, otherwise choose 0 - . -

-

- For - CONFIG_USBDEBUG_DEFAULT_PORT - choose the port from the first section that correspond to the - PCI ID -

-

- Notes:
The above is based on the implementation of - coreboot/src/southbridge/intel/common/usb_debug.c : pci_ehci_dbg_dev() - .
This is enough as it applies for the supported GM45/G45 - Thinkpads. coreboot support some other contollers too, but they are - irellevent for libreboot (for now). -

- -

How to get the debug logs

- -
-stty -icrnl -inlcr -F /dev/ttyGS0
-cat /dev/ttyGS0
-
- -

- Note that this is not permanent on BBB, if you reboot it, you have to - rmmod g_* - and - modprobe g_dbgp -

-

Eneble - EHCI Debug on the target’s kernel (optional, recommended)

-

You have to know how to compile kernel for your target.

-
    -
  1. Check if early debugging is already enabled: grep - CONFIG_EARLY_PRINTK_DBGP /boot/config-<ver>
  2. -
  3. If enabled, you do not have to compile the kernel (skip this - step). Otherwise, prepare kernel source for your distribution and - select (Kernel hacking -> Early printk via EHCI debug - port). Compile and install the new kernel. -
  4. -
  5. Edit your grub configuration and add following to the kenel - parameters2021: earlyprintk=dbgp,keep. - Also, try: earlyprintk=dbgp<N>,keep where N - is the debug port id if the first does not work. -
  6. -
-

References

-

- 10 EHCI - Debug Port -

-

- 11 coreboot - EHCI debug gadget demonstration -

-

- 12 EHCI - Gadget Debug -

-

- 13 Ehci-debug-gadget-patches.tar.gz -

-

- 14 Compiling - the BeagleBone Black Kernel -

-

- 15 - http://dumb-looks-free.blogspot.ca/2014/06/beaglebone-black-bbb-compile-kernel.html -

-

- 16 - http://dumb-looks-free.blogspot.fr/2014/06/beaglebone-black-bbb-kernal-headers.html -

-

- 17 Building - BBB Kernel -

-

- 18 - http://komposter.com.ua/documents/USB-2.0-Debug-Port%28John-Keys%29.pdf -

-

- 19 Exploring - USB at the Hardware/Software Interface -

-

- 20 - https://www.kernel.org/doc/Documentation/x86/earlyprintk.txt -

-

- 21 https://wiki.ubuntu.com/Kernel/Debugging/USBearlyprintk -

-

- TODO: -

-
    -
  1. grub does not send messages to EHCI debug. Investigate.
  2. -
  3. The section “Configure libreboot with EHCI debug” - can be skipped/simplified if a common configuration works for all - relevant targets is selected as defualt
  4. -
  5. Patch and compule g_dbgp on BBB instead cross-compile
  6. -
  7. Find a simple way to send debug messages from targets userland
  8. -
-
- -
- -

- Copyright © 2015 Alex David <opdecirkel@gmail.com>
- Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.3 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license can be found at ../gfdl-1.3.txt -

- -

- Updated versions of the license (when available) can be found at - https://www.gnu.org/licenses/licenses.html -

- -

- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. -

-

- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. -

-

- The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. -

- -
- - - -- cgit v0.9.1