aboutsummaryrefslogtreecommitdiff
path: root/i18n/fr_FR/docs/misc/bbb_ehci.md
diff options
context:
space:
mode:
Diffstat (limited to 'i18n/fr_FR/docs/misc/bbb_ehci.md')
-rw-r--r--i18n/fr_FR/docs/misc/bbb_ehci.md360
1 files changed, 360 insertions, 0 deletions
diff --git a/i18n/fr_FR/docs/misc/bbb_ehci.md b/i18n/fr_FR/docs/misc/bbb_ehci.md
new file mode 100644
index 00000000..50801a33
--- /dev/null
+++ b/i18n/fr_FR/docs/misc/bbb_ehci.md
@@ -0,0 +1,360 @@
+---
+title: EHCI debugging on the BeagleBone Black
+...
+
+EHCI debugging
+==============
+
+1. [Find USB port on the target that supports EHCI
+ debug](#FindUSBportonthetargetthatsupportsEHCIdebug)
+
+2. [Initial setup of BBB to act as EHCI debug
+ dongle](#InitialsetupofBBBtoactasEHCIdebugdongle)
+3. [Patch BBB's `g_dbgp` module (optional, but highly
+ recommended)](#PatchBBBsgdbgpmoduleoptionalbuthighlyrecommended)
+4. [Configure libreboot with EHCI
+ debug](#ConfigurelibrebootwithEHCIdebug)
+ 1. [Selecting `HCD Index` and
+ `USB Debug port`](#SelectingHCDIndexandUSBDebugport)
+5. [How to get the debug logs](#Howtogetthedebuglogs)
+6. [Eneble EHCI Debug on the target's kernel (optional,
+ recommended)](#EnebleEHCIDebugonthetargetskerneloptionalrecommended)
+7. [References](#References)
+
+*NOTE: this documentation may be outdated, and discusses configuring
+EHCI debug on the default Debian system that the BBB sometimes comes
+with. If you want an easier time, just use [BBB
+ScrewDriver](https://www.coreboot.org/BBB_screwdriver) which comes
+pre-configured.*
+
+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:
+
+- *host* - this is the computer you use, have tools, compiler,
+ Internet, etc
+- *BBB* - Beaglebone Black (rev. B or higher, i use rev. C)
+- *target* - the computer you are trying to install liberboot
+
+### Find USB port on the target that supports EHCI debug {#FindUSBportonthetargetthatsupportsEHCIdebug}
+
+Not all USB controllers support EHCI debug (see: [EHCI Debug
+Port](http://www.coreboot.org/EHCI_Debug_Port#Hardware_capability) ).
+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.
+
+- You need running OS (GNU+Linux) on your target for this step (If
+ you've flashed libreboot and it does not boot, you have to flush
+ back the stock bios)
+- You need USB memory stick (the data on it will not be touched).
+- The EHCI debugging can not be done through external hub, BBB must be
+ connected directly to the debug port of the controller (so, no hubs)
+
+<!-- -->
+
+- Download^[1](#___fn1)^
+ [this](http://www.coreboot.org/pipermail/coreboot/attachments/20080909/ae11c291/attachment.sh)
+ shell script.
+
+1. Plug the usb stick in the first available usb port
+2. Run the script, you will get output similar to following:
+3. 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
+4. Repeat the steps, plugging the USB stick in the next available port
+5. 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).
+
+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 {#InitialsetupofBBBtoactasEHCIdebugdongle}
+
+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:
+
+- power supply (5V, 2A(10W) is sufficient).
+- an extra usb cable: A to mini-B
+
+(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) {#PatchBBBsgdbgpmoduleoptionalbuthighlyrecommended}
+
+For the reasons why you need this, see: [EHCI Gadget
+Debug](http://www.coreboot.org/EHCI_Gadget_Debug).\
+Make sure that you have cross compiling environment for
+arm-linux-gnueabihf setup on your *host*.
+
+- On BBB: uname -r - this will give you version number like
+ 3.8.13-bone70 (I will refer to this as: \$mav.\$miv-\$lv: where
+ mav=3.8, miv=13, lv=bone70
+- Get the BBB kernel ready on your host for cross-compiling:
+
+<!-- -->
+
+ $ 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
+
+- Download the patch from
+ [coreboot.org](http://www.coreboot.org/images/8/88/Ehci-debug-gadget-patches.tar.gz)
+- tar -xf Ehci-debug-gadget-patches.tar.gz (will create dir:
+ usbdebug-gadget)
+- Note that there are two patches (patch\_1 and patch\_2) for each of
+ the two different version of the kernel (3.8 and 3.10). I will use
+ 3.8. (If using kernel 3.12 patch\_1 is not needed)
+- cd kernel (note that this is one more level: you should be in
+ \$work\_dir/kernel/kernel)
+- Apply the patches:
+
+<!-- -->
+
+ 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@
+
+- You should also apply the linux-libre *deblob* script to turn it
+ into linux-libre (deletes all the blobs from the linux kernel).
+ [fsfla website](http://www.fsfla.org/ikiwiki/selibre/linux-libre/) -
+ see
+ [scripts](http://www.fsfla.org/svn/fsfla/software/linux-libre/scripts/).
+- Get your current BBB kernel config (from: /boot/config-<ver>)
+ and copy it to your host as \$work\_dir/kernel/kernel/.config
+- Set proper version number:
+ - On your host, edit \$work\_dir/kernel/kernel/.config (the one
+ you've just copied from BBB), find the line
+ CONFIG\_LOCALVERSION="<something or empty>" and change
+ it to CONFIG\_LOCALVERSION="-\$lv", so it will look something
+ like: CONFIG\_LOCALVERSION="-bone70"
+- Also, make sure that: CONFIG\_USB\_G\_DBGP=m (If not, make
+ menuconfig, and set @Device Drivers-> USB Support -> USB
+ Gadget Support -> EHCI Debug Device Gadget=m
+- Build the module:
+
+<!-- -->
+
+ $ 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
+
+- on BBB, backup /lib/modules/3.8.13-bone70/kernel/drivers/usb/gadget
+ (i.e. mv /lib/modules/3.8.13-bone70/kernel/drivers/usb/gadget
+ \$HOME)
+- copy the freshly compiled usb/gadget dir to
+ /lib/modules/3.8.13-bone70/kernel/drivers/usb
+- restart BBB
+- Remove all g\_\* modules (rmmod g\_<>)
+- modprobpe g\_dbgp
+
+### Configure libreboot with EHCI debug {#ConfigurelibrebootwithEHCIdebug}
+
+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:
+
+- Go to the libreboot dist root directory cd \$libreboot\_bin
+- Locate the rom image for your target (I will call it: \$img\_path)
+- Running the following command will extract the config in a file
+ ./my\_config:
+
+<!-- -->
+
+ ./cbfstool/i686/cbfstool $img_path extract -n config -f ./my_config
+
+- Make sure that the following params in the config are set as
+ following:
+
+<!-- -->
+
+ 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
+one^[2](#___fn2)^ 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
+[on John Lewis's blog](https://johnlewis.ie/coreboot-ehci-debug-gadget-demonstration/)
+(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 {#SelectingHCDIndexandUSBDebugport}
+
+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).
+
+- On T500 (with switchable GPU) the debug ports for both intel
+ controllers is exposed.
+- On x200t the debug ports for both intel controllers is exposed.
+
+### How to get the debug logs {#Howtogetthedebuglogs}
+
+- Plug the USB cable in the target's debug port (the one you found in
+ step 1) and BBB's mini-B USB
+- Make sure no other then g\_dbgp of the g\_\* modules is loaded on
+ your BBB
+- On the BBB:
+
+<!-- -->
+
+ stty -icrnl -inlcr -F /dev/ttyGS0
+ cat /dev/ttyGS0
+
+- Power on the target with libreboot
+- You should see debug logs comming on your BBB console
+
+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) {#EnebleEHCIDebugonthetargetskerneloptionalrecommended}
+
+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. 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.
+3. Edit your grub configuration and add following to the kenel
+ parameters^[20](#___fn20)[21](#___fn21)^: earlyprintk=dbgp,keep.
+ Also, try: earlyprintk=dbgp<N>,keep where N is the debug port
+ id if the first does not work.
+
+### References {#References}
+
+^10^ [EHCI Debug Port](http://www.coreboot.org/EHCI_Debug_Port)
+
+^11^ [coreboot EHCI debug gadget
+demonstration](https://johnlewis.ie/coreboot-ehci-debug-gadget-demonstration/)
+
+^12^ [EHCI Gadget Debug](http://www.coreboot.org/EHCI_Gadget_Debug)
+
+^13^
+[Ehci-debug-gadget-patches.tar.gz](http://www.coreboot.org/images/8/88/Ehci-debug-gadget-patches.tar.gz)
+
+^14^ [Compiling the BeagleBone Black
+Kernel](http://wiki.beyondlogic.org/index.php/BeagleBoneBlack_Building_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](http://elinux.org/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](http://cs.usfca.edu/~cruse/cs698s10/)
+
+^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. The section “Configure libreboot with EHCI debug” can be
+ skipped/simplified if a common configuration works for all relevant
+ targets is selected as defualt
+3. Patch and compule g\_dbgp on BBB instead cross-compile
+4. Find a simple way to send debug messages from targets userland
+
+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 this license is found in [../fdl-1.3.md](../fdl-1.3.md)