Advanced Tracking Port Devices Driver



-->

In computing, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about the hardware being used. MasTrack OBD tracker is a small GPS tracking device that plugs directly into the OBD port of any vehicle. No tools or wiring required. Simply plug the tracker in and your set to go. All passenger vehicles and lightweight trucks manufactured since 1996 are equipped with an OBD port that can be easily found within 3 feet of the steering wheel.

Starting with Windows 2000, a COM port is a type of serial port that complies with the following additional requirements:

  • You access the COM port through an instance of the COM port device interface class. The GUID for this class is GUID_DEVINTERFACE_COMPORT, which is defined in Ntddser.h.

  • You operate the COM port by using the 16550 UART-compatible interface that is defined in Ntddser.h.

  • To ensure compatibility with most applications that access COM ports, you should assign a symbolic link name that uses the standard naming convention 'COM<n>', where <n> is the COM port number (for example, COM1). If you use a COM<n> name, you must obtain the COM port number <n> from the COM port database. COM port numbers should only be used with COM<n> names.

By default, the combined operation of the class installer for the Ports device setup class and the Serial function driver configure a device as a COM port.

Advanced Tracking Port Devices Driver License

Fleet tracking is a management system that uses GPS to monitor the activity of tracked assets (vehicles, workers, equipment). It is often referred to as vehicle tracking or AVL. The fleet is generally a collection of land-based assets such as cars, trucks, field workers and equipment (powered and unpowered e.g. Get drivers and downloads for your Dell Latitude E7450. Download and install the latest drivers, firmware and software.

For information about how the Ports class installer and Serial create a COM port device interface for a COM port, see External Naming of COM Ports.

Authors:
    1. Long Nguyen <tom.l.nguyen@intel.com>
  • Yanmin Zhang <yanmin.zhang@intel.com>
Copyright:

© 2006 Intel Corporation

8.1. Overview¶

8.1.1. About this guide¶

This guide describes the basics of the PCI Express Advanced ErrorReporting (AER) driver and provides information on how to use it, aswell as how to enable the drivers of endpoint devices to conform withPCI Express AER driver.

8.1.2. What is the PCI Express AER Driver?¶

PCI Express error signaling can occur on the PCI Express link itselfor on behalf of transactions initiated on the link. PCI Expressdefines two error reporting paradigms: the baseline capability andthe Advanced Error Reporting capability. The baseline capability isrequired of all PCI Express components providing a minimum definedset of error reporting requirements. Advanced Error Reportingcapability is implemented with a PCI Express advanced error reportingextended capability structure providing more robust error reporting.

The PCI Express AER driver provides the infrastructure to support PCIExpress Advanced Error Reporting capability. The PCI Express AERdriver provides three basic functions:

  • Gathers the comprehensive error information if errors occurred.
  • Reports error to the users.
  • Performs error recovery actions.

AER driver only attaches root ports which support PCI-Express AERcapability.

8.2. User Guide¶

8.2.1. Include the PCI Express AER Root Driver into the Linux Kernel¶

The PCI Express AER Root driver is a Root Port service driver attachedto the PCI Express Port Bus driver. If a user wants to use it, the driverhas to be compiled. Option CONFIG_PCIEAER supports this capability. Itdepends on CONFIG_PCIEPORTBUS, so pls. set CONFIG_PCIEPORTBUS=y andCONFIG_PCIEAER = y.

8.2.2. Load PCI Express AER Root Driver¶

Some systems have AER support in firmware. Enabling Linux AER support atthe same time the firmware handles AER may result in unpredictablebehavior. Therefore, Linux does not handle AER events unless the firmwaregrants AER control to the OS via the ACPI _OSC method. See the PCI FW 3.0Specification for details regarding _OSC usage.

8.2.3. AER error output¶

When a PCIe AER error is captured, an error message will be output toconsole. If it’s a correctable error, it is output as a warning.Otherwise, it is printed as an error. So users could choose differentlog level to filter out correctable error messages.

Below shows an example:

In the example, ‘Requester ID’ means the ID of the device who sendsthe error message to root port. Pls. refer to pci express specs forother fields.

8.2.4. AER Statistics / Counters¶

When PCIe AER errors are captured, the counters / statistics are also exposedin the form of sysfs attributes which are documented atDocumentation/ABI/testing/sysfs-bus-pci-devices-aer_stats

8.3. Developer Guide¶

To enable AER aware support requires a software driver to configurethe AER capability structure within its device and to provide callbacks.

To support AER better, developers need understand how AER does workfirstly.

Driver Tracking Device

PCI Express errors are classified into two types: correctable errorsand uncorrectable errors. This classification is based on the impactsof those errors, which may result in degraded performance or functionfailure.

Correctable errors pose no impacts on the functionality of theinterface. The PCI Express protocol can recover without any softwareintervention or any loss of data. These errors are detected andcorrected by hardware. Unlike correctable errors, uncorrectableerrors impact functionality of the interface. Uncorrectable errorscan cause a particular transaction or a particular PCI Express linkto be unreliable. Depending on those error conditions, uncorrectableerrors are further classified into non-fatal errors and fatal errors.Non-fatal errors cause the particular transaction to be unreliable,but the PCI Express link itself is fully functional. Fatal errors, onthe other hand, cause the link to be unreliable.

Advanced Tracking Port Devices Driver License Test

When AER is enabled, a PCI Express device will automatically send anerror message to the PCIe root port above it when the device capturesan error. The Root Port, upon receiving an error reporting message,internally processes and logs the error message in its PCI Expresscapability structure. Error information being logged includes storingthe error reporting agent’s requestor ID into the Error SourceIdentification Registers and setting the error bits of the Root ErrorStatus Register accordingly. If AER error reporting is enabled in RootError Command Register, the Root Port generates an interrupt if anerror is detected.

Note that the errors as described above are related to the PCI Expresshierarchy and links. These errors do not include any device specificerrors because device specific errors will still get sent directly tothe device driver.

8.3.1. Configure the AER capability structure¶

AER aware drivers of PCI Express component need change the devicecontrol registers to enable AER. They also could change AER registers,including mask and severity registers. Helper functionpci_enable_pcie_error_reporting could be used to enable AER. Seesection 3.3.

8.3.2. Provide callbacks¶

8.3.2.1. callback reset_link to reset pci express link¶

This callback is used to reset the pci express physical link when afatal error happens. The root port aer service driver provides adefault reset_link function, but different upstream ports mighthave different specifications to reset pci express link, so allupstream ports should provide their own reset_link functions.

Section 3.2.2.2 provides more detailed info on when to callreset_link.

Devices

8.3.2.2. PCI error-recovery callbacks¶

The PCI Express AER Root driver uses error callbacks to coordinatewith downstream device drivers associated with a hierarchy in questionwhen performing error recovery actions.

Data structpci_driver has a pointer, err_handler, to point topci_error_handlers who consists of a couple of callback functionpointers. AER driver follows the rules defined inpci-error-recovery.txt except pci express specific parts (e.g.reset_link). Pls. refer to pci-error-recovery.txt for detaileddefinitions of the callbacks.

Below sections specify when to call the error callback functions.

8.3.2.3. Correctable errors¶

Correctable errors pose no impacts on the functionality ofthe interface. The PCI Express protocol can recover without anysoftware intervention or any loss of data. These errors do notrequire any recovery actions. The AER driver clears the device’scorrectable error status register accordingly and logs these errors.

8.3.2.4. Non-correctable (non-fatal and fatal) errors¶

If an error message indicates a non-fatal error, performing link resetat upstream is not required. The AER driver calls error_detected(dev,pci_channel_io_normal) to all drivers associated within a hierarchy inquestion. for example:

If Upstream port A captures an AER error, the hierarchy consists ofDownstream port B and EndPoint.

A driver may return PCI_ERS_RESULT_CAN_RECOVER,PCI_ERS_RESULT_DISCONNECT, or PCI_ERS_RESULT_NEED_RESET, depending onwhether it can recover or the AER driver calls mmio_enabled as next.

If an error message indicates a fatal error, kernel will broadcasterror_detected(dev, pci_channel_io_frozen) to all drivers withina hierarchy in question. Then, performing link reset at upstream isnecessary. As different kinds of devices might use different approachesto reset link, AER port service driver is required to provide thefunction to reset link via callback parameter of pcie_do_recovery()function. If reset_link is not NULL, recovery function will use itto reset the link. If error_detected returns PCI_ERS_RESULT_CAN_RECOVERand reset_link returns PCI_ERS_RESULT_RECOVERED, the error handling goesto mmio_enabled.

8.3.3. helper functions¶

pci_enable_pcie_error_reporting enables the device to send errormessages to root port when an error is detected. Note that devicesdon’t enable the error reporting by default, so device drivers needcall this function to enable it.

pci_disable_pcie_error_reporting disables the device to send errormessages to root port when an error is detected.

pci_aer_clear_nonfatal_status clears non-fatal errors in the uncorrectableerror status register.

8.3.4. Frequent Asked Questions¶

Q:
What happens if a PCI Express device driver does not provide anerror recovery handler (pci_driver->err_handler is equal to NULL)?
A:
The devices attached with the driver won’t be recovered. If theerror is fatal, kernel will print out warning messages. Please referto section 3 for more information.
Q:
What happens if an upstream port service driver does not providecallback reset_link?
A:
Fatal error recovery will fail if the errors are reported by theupstream ports who are attached by the service driver.
Q:
How does this infrastructure deal with driver that is not PCIExpress aware?
A:
This infrastructure calls the error callback functions of thedriver when an error happens. But if the driver is not aware ofPCI Express, the device might not report its own errors to rootport.
Q:
What modifications will that driver need to make it compatiblewith the PCI Express AER Root driver?
A:
It could call the helper functions to enable AER in devices andcleanup uncorrectable status register. Pls. refer to section 3.3.

8.4. Software error injection¶

Debugging PCIe AER error recovery code is quite difficult because itis hard to trigger real hardware errors. Software based errorinjection can be used to fake various kinds of PCIe errors.

First you should enable PCIe AER software error injection in kernelconfiguration, that is, following item should be in your .config.

CONFIG_PCIEAER_INJECT=y or CONFIG_PCIEAER_INJECT=m

After reboot with new kernel or insert the module, a device file named/dev/aer_inject should be created.

Advanced Tracking Port Devices Driver

Then, you need a user space tool named aer-inject, which can be gottenfrom:

Teen Driver Tracking Device

More information about aer-inject can be found in the document comeswith its source code.