diff options
Diffstat (limited to 'chromium/docs/website/site/chromium-os/how-tos-and-troubleshooting/serial-debugging-howto/index.md')
-rw-r--r-- | chromium/docs/website/site/chromium-os/how-tos-and-troubleshooting/serial-debugging-howto/index.md | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/chromium/docs/website/site/chromium-os/how-tos-and-troubleshooting/serial-debugging-howto/index.md b/chromium/docs/website/site/chromium-os/how-tos-and-troubleshooting/serial-debugging-howto/index.md deleted file mode 100644 index d7c808c98dc..00000000000 --- a/chromium/docs/website/site/chromium-os/how-tos-and-troubleshooting/serial-debugging-howto/index.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -breadcrumbs: -- - /chromium-os - - Chromium OS -- - /chromium-os/how-tos-and-troubleshooting - - How Tos and Troubleshooting -page_name: serial-debugging-howto -title: Chromium OS [serial] Console Debugging HOWTO ---- - -[TOC] - -## Introduction - -The kernel team has been working to remove cruft from the Chromium OS kernel -configs. Since there are no Chromebooks with a serial port, serial port drivers -were removed from the stock configuration, which is a minor inconvenience for -those who still do a lot of debugging using the serial port. - -A quick howto was e-mailed some time ago -[here](http://groups.google.com/a/chromium.org/group/chromium-os-dev/browse_thread/thread/5c8a44b76cecb2ce) -for using mini-PCIe serial cards, but the information is somewhat limited in -scope and is worth correcting and modernizing. There are several ways to -accomplish what is described here, please feel free to chip in. - -This HOWTO assumes you have built a bootable Chromium OS image and are not -afraid to edit some config files. We'll assume the target platform is 32-bit -"x86-generic". - -## Enable Kernel Serial Drivers - -When the team goes to release a board to the public, right before release, the -default serial console enable flags (USE and TTY_CONSOLE \[see **Enabling Serial -Console Login** below\] in `make.conf` are reverted. - -For x86 based systems, use the pcserial USE flag when building your kernel: - -```none -chromium-os$ USE=pcserial cros_workon_make --board="${BOARD}" chromeos-kernel -``` - -For Exynos-based systems, add the samsung_serial USE flag: - -```none -chromium-os$ USE=samsung_serial cros_workon_make --board="${BOARD}" chromeos-kernel -``` - -## Note that on some systems these serial drivers are always loaded due to them being needed by some hardware, ex: Bluetooth modules sometimes communicate with the AP via serial. - -Note that you will likely need to replace "chromeos-kernel" in your -cros_workon_make call with an ebuild relevant to your board, like -chromeos-kernel-3_18 for asuka. - -## Enable Console Logging - -By default, the kernel command line is set up to enable no consoles and thus log -no output. This leads to a cleaner/speedier boot, but is not helpful when you -need to see failure messages. Thus you'll need change some kernel command-line -parameters to get meaningful output. - -When you create the image with build_image, simply use the --enable_serial flag -to select the console for logging output. The value it takes is exactly the same -as what the kernel expects for **console=** (see the next section for more -details). - -```none -$ ./build_image --enable_serial ttyS0 -``` - -Note that every board will have a a different bus layout resulting in -potentially different ttyS# port for serial console. See **Platform Specific -Settings**, below. - -### The console= option - -The console= option is described in detail in -[kernel-parameters.txt](https://chromium.googlesource.com/chromiumos/third_party/kernel/+/HEAD/Documentation/kernel-parameters.txt) -in the Linux kernel source tree. - -### Platform Specific Settings - -#### Virtual Machines (QEMU/KVM) - -If you boot the image in a VM, and you use the -[cros_start_vm](/chromium-os/how-tos-and-troubleshooting/running-chromeos-image-under-virtual-machines) -script to launch it, then serial output will be logged to a -`/tmp/kvm.xxx.serial` file (exact name will be shown when starting the VM). - -If you want to interact with the serial console directly, you'll need to launch -qemu yourself and pass the -nographics flag directly. The serial device should -be connected to stdin/stdout by default. - -#### X86 - -On most x86 platforms, ttyS0 will refer to the southbridge's UART accessed via -ports specified in Super IO configuration space. However, for add-in PCIe cards -you may need to specify a MMIO address to access the UART. For example, -"console=uart8250,mmio,0x50401000,115200n8". An alternative is to specify the -ttyS# port configured by the kernel for the specific hardware and connection -that you're testing on. (E.g. "ttyS2".) - -See Appendix A below for more details. - -#### ARM Exynos - -You probably want to use ttySAC3 for your console. - -## Enabling Serial Console Login - -See the [Controlling Enabled Consoles -document](/chromium-os/developer-guide/using-serial-tty) for all the details. - -## Build Chromium OS image using your custom kernel config - -Set the pcserial USE flag when calling build_packages: - -```none -USE=pcserial ./build_packages -``` - -## Appendix - -### A: How to find alternate IO and MMIO addresses for your UART - -If you already have UART support but simply do not know what options to pass to -the kernel, you may examine a few sources to figure it out. - -Method 1: Look at /proc/iomem - -localhost ~ # cat /proc/iomem | grep serial - -**50401000-50401007 : serial** - -**note: for two port pci-serial cards you will see two entries like this:** - -**e0801000-e0801008 : serial** - -**e0801200-e0801207 : serial** - -and the each range will correspond to the two different serial ports - -Method 2: Look at PCI device config - -localhost chronos # lspci | grep -i serial - -02:00.0 Serial controller: NetMos Technology PCIe 9901 Multi-I/O Controller - -localhost chronos # lspci -v -s 02:00.0 - -02:00.0 Serial controller: NetMos Technology PCIe 9901 Multi-I/O Controller -(prog-if 02 \[16550\]) - -Subsystem: Device a000:1000 - -Flags: bus master, fast devsel, latency 0, IRQ 16 - -**I/O ports at 2000 \[size=8\]** - -**Memory at c0401000 (32-bit, non-prefetchable) \[size=4K\]** - -**Memory at c0400000 (32-bit, non-prefetchable) \[size=4K\]** - -Capabilities: \[80\] Power Management version 3 - -Capabilities: \[88\] MSI: Enable- Count=1/32 Maskable- 64bit+ - -Capabilities: \[c0\] Express Legacy Endpoint, MSI 00 - -Kernel driver in use: serial - -Method 3: Look at dmesg for lines such as this: - -\[ 0.676698\] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled - -\[ 0.678173\] serial 0000:04:00.3: PCI INT D -> GSI 18 (level, low) -> IRQ -18 - -\[ 0.678716\] 1 ports detected on Oxford PCI Express device - -\[ 0.678910\] ttyS0: detected caps 00000700 should be 00000100 - -\[ 0.679365\] 0000:04:00.3: ttyS0 at **MMIO** **0x50401000** (irq = 18) is a -16C950/954 - -\[ 0.679899\] console \[ttyS0\] enabled, bootconsole disabled
\ No newline at end of file |