The protocol supports a wide range of connection types: direct serial devices, UDP/IP, TCP/IP and POSIX pipes. Historically RSP has only required 7-bit clean connections. However more recent commands added to the protocol assume an 8-bit clean connection. It is also worth noting, that although UDP/IP is supported, lost packets with unreliable transport methods such as this may lead to GDB reporting errors.
The serial connection is established in response to atarget remote ortarget extended-remote command from the GDBclient. The way the server handles this depends on the nature of theserial connection:
Connection via a serial device. The target should be listening for connections on the device. This may either be via routine polling or via an event driven interface. Once the connection is established, packets are read from and written to the device.
In the stub code, the user must implement the serial connection by supplying functions getDebugChar () and putDebugChar (). The user must supply the function exceptionHandler () to set up exception handling.
The serial connection is usually established on the first call to getDebugChar (). This is standard POSIX code to access either the serial device, or to listen for a TCP/IP or UDP/IP connection. The target may choose to block here, if it does not wish to run without control from a GDB client.
In general the simulator will use the same form of connection as when debugging real silicon. Where the RSP server for real silicon is implemented on the target, or gdbserver is used, connection via a serial device, TCP/IP or UDP/IP is appropriate. Where the RSP interface for real silicon is via a pipe to a program driving JTAG a pipe interface should be used to launch the simulator.
The GDB command to set breakpoints, break does not immediately cause a RSP interaction. GDB only actually sets breakpoints immediately before execution (for example by a continue or step command) and immediately clears them when a breakpoint is hit. This minimizes the risk of a program being left with breakpoints inserted, for example when a serial link fails.
It is possible to receive multiple requests to delete a breakpoint if the serial connection is poor (due to retransmissions). By checking that the entry is in the hash table, actual deletion of the breakpoint and restoration of the instruction happens at most once.
I went looking for a HyperTerminal like solution I developed that performed COM port communication. I cannot seem to locate it. I would recommend trying a different serial port application as RitaHan suggest just to see if there is something your applications that are causing an issue.
A change in system ID method that uses the hard disk's manufacturer serial ID can break existing hardware-locked keys, so you will have to provide your end users with new hardware-locked registration keys.
Up till here the BIOS/UEFI configuration knobs are generic enough to beimplemented by majority (if not all) firmwares out there. However, from now onnot every single setting makes sense to all firmwares. For instance,rebootTimeout doesn't make sense for UEFI, useserial might not be usablewith a BIOS firmware that doesn't produce any output onto serial line, etc.Moreover, firmwares don't usually export their capabilities for libvirt (orusers) to check. And the set of their capabilities can change with every newrelease. Hence users are advised to try the settings they use before relying onthem in production.
This element has attribute useserial with possible values yes orno. It enables or disables Serial Graphics Adapter which allows users tosee BIOS messages on a serial port. Therefore, one needs to have Serial portdefined. Since 0.9.4 . Since0.10.2 (QEMU only) there is another attribute, rebootTimeout thatcontrols whether and after how long the guest should start booting again incase the boot fails (according to BIOS). The value is in milliseconds withmaximum of 65535 and special value -1 disables the reboot.
The content of the bootloader element provides a fully qualified path tothe bootloader executable in the host OS. This bootloader will be run tochoose which kernel to boot. The required output of the bootloader isdependent on the hypervisor in use. Since 0.1.0
The contents of this element specify arguments to be passed to the kernel (orinstaller) at boot time. This is often used to specify an alternate primaryconsole (eg serial port), or the installation media source / kickstart file
Configure ibs (Indirect Branch Speculation) availability for pSeries guests.Possible values for the value attribute are broken (no protection),workaround (count cache flush), fixed-ibs (fixed by serializingindirect branches), fixed-ccd (fixed by disabling the cache count) andfixed-na (fixed in hardware - no longer applicable). If theattribute is not defined, the hypervisor default will be used. Since6.3.0 (QEMU/KVM only)
If present, this specify serial number of virtual hard drive. For example, itmay look like WD-WMAP9A966149. Not supported forscsi-block devices, that is those using disk type 'block' usingdevice 'lun' on bus 'scsi'. Since 0.7.1
Note that depending on hypervisor and device type the serial number may betruncated silently. IDE/SATA devices are commonly limited to 20 characters.SCSI devices depending on hypervisor version are limited to 20, 36 or 247characters.
Hypervisors may also start rejecting overly long serials instead oftruncating them in the future so it's advised to avoid the implicittruncation by testing the desired serial length range with the desired deviceand hypervisor combination.
Each controller has a mandatory attribute type, which must be one of 'ide','fdc', 'scsi', 'sata', 'usb', 'ccid', 'virtio-serial' or 'pci', and a mandatoryattribute index which is the decimal integer describing in which order thebus controller is encountered (for use in controller attributes of elements). Since 1.3.5 the index is optional; if notspecified, it will be auto-assigned to be the lowest unused index for the givencontroller type. Some controller types have additional attributes that controlspecific features, such as:
The virtio-serial controller has two additional optional attributesports and vectors, which control how many devices can be connectedthrough the controller. Since 5.2.0 , it supports an optionalattribute model which can be 'virtio', 'virtio-transitional', or'virtio-non-transitional'. See Virtio transitional devices for more details.
The redirdev element is the main container for describing redirecteddevices. bus must be \"usb\" for a USB device. An additional attributetype is required, matching one of the supported serial device types(See Consoles, serial, parallel & channel devices), to describe the hostside of the tunnel; type='tcp' or type='spicevmc' (which uses theusbredir channel of a SPICE graphics device (See Graphical framebuffers))are typical.
Rather than having the hypervisor directly communicate with the host, it ispossible to tunnel all requests through a secondary character device to athird-party provider (which may in turn be talking to a smartcard or usingthree certificate files). In this mode of operation, an additional attributetype is required, matching one of the supported serial device types(See Consoles, serial, parallel & channel devices),to describe the host side of the tunnel;type='tcp' or type='spicevmc' (which uses the smartcard channel of aSPICE graphics device (See Graphical framebuffers)) are typical. Furthersub-elements, such as , may be required according to the giventype, although a sub-element is not required (since the consumerof the character device is the hypervisor itself, rather than a devicevisible in the guest).
A character device provides a way to interact with the virtual machine.Paravirtualized consoles, serial ports, parallel ports and channels are allclassed as character devices and so represented using the same syntax.
The target element can have an optional port attribute, which specifiesthe port number (starting from 0), and an optional type attribute: validvalues are, since 1.0.2 , isa-serial (usable with x86 guests),usb-serial (usable whenever USB support is available) and pci-serial(usable whenever PCI support is available); since 3.10.0 ,spapr-vio-serial (usable with ppc64/pseries guests), system-serial(usable with aarch64/virt and, since 4.7.0 , riscv/virt guests),sclp-serial (usable with s390 and s390x guests) are available as welland since 8.1.0 isa-debug (usable with x86 guests).
Since 3.10.0 , the target element can have an optional modelsubelement; valid values for its name attribute are: isa-serial (usablewith the isa-serial target type); usb-serial (usable with theusb-serial target type); pci-serial (usable with the pci-serialtarget type); spapr-vty (usable with the spapr-vio-serial target type);pl011 and, since 4.7.0 , 16550a (usable with thesystem-serial target type); sclpconsole and sclplmconsole (usablewith the sclp-serial target type). Since: 8.1.0, isa-debugcon(usable with the isa-debug target type); provides a virtual console forreceiving debug messages from the firmware on x86 platforms.Providing a target model is usually unnecessary: libvirt will automaticallypick one that's suitable for the chosen target type, and overriding thatvalue is generally not recommended.
Most target types support configuring the guest-visible device address asdocumented in the Device Addresses section; more specifically, acceptable addresstypes are isa (for isa-serial), usb (for usb-serial), pci(for pci-serial) and spapr-vio (for spapr-vio-serial). Thesystem-serial and sclp-serial target types don't support specifying anaddress.
The console element is used to represent interactive serial consoles.Depending on the type of guest in use and the specifics of the configuration,the console element might represent the same device as an existingserial element or a separate device. 153554b96e