Linux Treiber 8.6.0

2018-07-24 ·

Neue Version des PCAN-Linux Treibers verfügbar

PCAN-Linux Treiber Download Version 8.6.0
(2018-07-24)

Änderungen:

  • Treiber: Nachgestellte \0 in den Zeichenketten "adapter_name" und "adapter_version" in der sysfs entfernt
  • pci/pcifd: MSI-Verwaltung überarbeitet (nutzloser msi_step entfernt)
  • PCAN-PCIe FD: Neue Parameter "fdirqtl" und "fdirqcl" definiert, die es erlauben, unterschiedliche Werte für "IRQ Time Limit" und "IRQ Count Limit" anzugeben
  • PCAN-PCIe FD: MSI: pci_irq_vector() wird für den Kernel ab 4.8 verwendet, außer MSI-Sharing ist konfiguriert
  • pcan-settings: Option "-d" auf einen LONG-Wert (vorher INT) korrigert
  • PCAN-PCIe *: PCAN_PCIE_OEM (FD) in PCAN_Chip_PCIe (FD) umbenannt
  • PCAN-USB-*: Verlorenen symbolischen Link zum (realen) übergeordneten Gerät in sysfs wiederhergestellt
  • pcanfdtst.c: Warnungen aus der RTAI-Kompilierung korrigiert
  • driver rt: Kompilierungsprobleme behoben
  • driver/Makefile: Führt nun Tests der Inhalte "include/can/dev.h" durch, aber nur wenn die Kernelversion kleiner als 4.8 ist
  • driver: Fehlende Rx- und Tx-Fehlerzähler zur periodischen Meldung BUS_LOAD hinzugefügt
  • driver: #ifdef NETDEV_SUPPORT hinzugefügt, um unnötige Codeteile und Daten zu vermeiden, wenn der Treiber im netdev-Modus kompiliert wird. Dadurch wird Speicher gespart
  • PCAN-USB FD*: Die Fehlerbehandlung beim Senden eines Befehlsstrings verbessert. Kein Interesse daran, den Rest zu senden, wenn ein cmd fehlgeschlagen ist
  • PCAN-USB FD*: Ein Problem mit dem Zugriff auf einen potentiellen NULL-Zeiger in der UCAN_USB_MSG_CALIBRATION-Verarbeitung wurde behoben
  • driver/API: "PCANFD_FEATURE_ECHO" und das neue Bit "PCANFD_MSG_ECHO" hinzugefügt, um explizit ein Echo zum übertragenen Frame anzufordern
  • pcanfdtst: Neue Option "-echo" hinzugefügt, um CAN-Frames mit lokalem Echo zu senden:
    $ pcanfdtst tx -b 500k --echo -i 0x001 -n 100 -I 4 /dev/pcanpcifd6
    ...
    1529485528~681375 /dev/pcanpcifd6 <      001 ..h..  4 - 5e 00 00 00
    1529485528.680472 /dev/pcanpcifd6  >      001 ..h..  4 - 5d 00 00 00
    1529485528~682451 /dev/pcanpcifd6 <      001 ..h..  4 - 5f 00 00 00
    1529485528.681548 /dev/pcanpcifd6  >      001 ..h..  4 - 5e 00 00 00
    1529485528~683528 /dev/pcanpcifd6 <      001 ..h..  4 - 60 00 00 00
    1529485528.682628 /dev/pcanpcifd6  >      001 ..h..  4 - 5f 00 00 00
    1529485528~684606 /dev/pcanpcifd6 <      001 ..h..  4 - 61 00 00 00
    1529485528.683706 /dev/pcanpcifd6  >      001 ..h..  4 - 60 00 00 00
    1529485528~685684 /dev/pcanpcifd6 <      001 ..h..  4 - 62 00 00 00
    1529485528.684784 /dev/pcanpcifd6  >      001 ..h..  4 - 61 00 00 00
    1529485528~686760 /dev/pcanpcifd6 <      001 ..h..  4 - 63 00 00 00
    /dev/pcanpcifd6 < [packets=100 calls=100 bytes=400 eagain=0]
    sent frames: 100
    
  • PCAN-PCIe FD: FW Versionsprüfung für DMA-Problembehandlung hinzugefügt:
    Der Treiber prüft gegen FW < 3.3.0, um festzustellen, ob die DMA-Logik Probleme mit dem Mix aus 32-Bit- und 64-Bit-Logikadressen aufweist.
  • PCAN-PCIe FD: Wartet auf das Ende der PCIe-Transaktion, wenn Ressourcen in der Karte gelöscht werden, bevor der entsprechende Teil im Host freigegeben wird.
  • netdev: Speicherleck behoben und wMsgs- und rMsgs-Nachrichten-Warteschlangen im Falle eines "alloc"-Fehlers beseitigt.
  • driver: Verwendung von device_destroy() anstelle von device_del() (siehe: source/drivers/base/core.c: "device_destroy - removes a device that was created with device_create()")
  • sysfs: Korrektur der Verwendung von dev->adapter beim Entfernen von sysfs-Knoten: dev->adapter kann vor dem Löschen der sysfs-Adapter-bezogenen Knoten freigegeben werden.
  • driver: Debug als neues Ziel in Makefile hinzugefügt und netdev build repariert.
  • PCAN-USB *: Das Stecken und Ziehen von USB-Adaptern während des CAN-Verkehrs korrigiert.
  • PCAN-PCI/PCIe: Die devs-Liste in pcan_pci.c einführen, um Ressourcen bei Fehlern in der "_probe()"-Funktion korrekt freizugeben.
  • driver: Alte und gebrauchte #idef/#endif entfernen. Als ob es so wäre:
    • PCAN_USES_OLD_TX_ENGINE_STATE wird nicht mehr definiert werden.
    • PCAN_USB_PCAN_SYSFS ist immer definiert.
  • driver: Berechnung von Delta_us in pcan_sync_timestamp() korrigiert, um zu verhindern, dass der Ereignis-Zeitstempel älter ist als der Sync-Zeitstempel.
  • driver: Timeval_add_us() korrigiert, um die negativen Werte von µs korrekt zu behandeln, die hinzugefügt werden sollen.
  • driver: Zeitstempelkorrektur wird nun im Benutzerkontext und nicht mehr im Interrupt-Kontext durchgeführt, um CPU-Zeit zu sparen.
  • PCAN-USB: Regressionsproblem mit PCAN-USB bei 1Mbps und Zeitstempel 8-Bit-Wrapping-Problem behoben sowie das rx-Management verbessert.
  • driver CONFIG_COMPAT mode: copy_to_msg32() korrigiert.
  • driver/API: Unterstützung für SET und GET_OPTION im Modus CONFIG_COMPAT hinzugefügt.
  • driver: SPDX-Identifikatoren zu Headern und C-Dateien hinzufügt.
  • driver: Die neuesten "linux-can-Header"-Dateien anstelle der (sehr) alten wurden hinzufügt. Dazu gehört auch die neueste GLPv2-Lizenz.
  • PCAN-PCIe *: MSI-Workaround um can0 IRQ erweitert. Jetzt ist can0 IRQ immer der letzte freigegebene IRQ:
    • Wenn PCAN_PCI_MSI_WORKAROUND nicht definiert ist, dann wird wie bisher der IRQ zum Zeitpunkt _open() (bzw. _close()) angefordert (bzw. freigegeben).
    • Wenn PCAN_PCI_MSI_WORKAROUND definiert ist, dann:
      • . wenn usemsi (fdusemsi) gleich 0 ist, dann werden IRQs zur _open() (bzw. _close()) Zeit angefordert (bzw. freigegeben).
      • . ansonsten werden IRQs zum Zeitpunkt _probe() (bzw. _exit()) angefordert (bzw. freigegeben).
    Seit dieses Problem auf x86 aufgetreten ist, wird PCAN_PCI_MSI_WORKAROUND NUR bei CONFIG_X86 definiert.
  • driver: Unterstützung der neuen Timer API seit Kernel 4.15 (Ubuntu 18.04 LTS)
  • driver/API: Art und Weise geändert, wie STATUS[PCANFD_BUS_LOAD] benachrichtigt wird:
    Der Treiber konfiguriert nun einen eigenen Timer, um die Meldung STATUS[PCANFD_BUS_LOAD] allein zu senden. Diese Meldung wird nicht mehr von der ESR des Gerätes gepusht.
    Dies begrenzt die Überflutung der Rx-Warteschlange und stellt sicher, dass die Nachricht immer gepusht wird. Der Timer wird gestoppt, wenn das Gerät geschlossen wird.
    Dieser Timer wird konfiguriert und gestartet, wenn PCAN_DEV_BUSLOAD_RDY gesetzt ist.
  • driver: bus_load korrigiert: Wert sollte 100x größer sein.
  • PCAN-USB *: Erzwingt das GFP_DMA-Bit für die URB-Datenpufferzuweisung.
  • PCAN-USB: Komplette Zeitstempelverwaltung zur Verwaltung von Zeitverschiebungen über das globale Zeitstempelsystem des Treibers überarbeitet.
  • PCAN-* FD: uCAN-Eingangspufferanalyse mit 32-Bit-Grenzausrichtung korrigiert.
  • driver/API: Wird nun mit den Standardeinstellungen initialisiert, wenn keine Bitrate oder Brp vom Benutzer angegeben wird.
  • PCAN-USB *: Verwendung von read_buffer_len im USB-Empfangspuffer (einige msgs konnten nicht vollständig gelesen werden) behoben.
  • driver: Verwendet jetzt einen Leistungswert von 2, um clock_drift zu skalieren, um CPU-Zeit in der ISR-Zeitstempelverwaltung zu sparen.
  • driver/Makefile: Verwendet jetzt "modprobe", "udevadm" und "depmod" anstelle des absoluten Pfades der ausführbaren Dateien.
  • pcanfdtst: Der Standardwert dsample_pt wir jetzt auf sample_pt gesetzt, wenn dsample_pt nicht in der cmd-Zeile angegeben wurde.
  • driver: Art und Weise verbessert, wie init-Parameter vor dem Öffnen eines Kanals geprüft und verarbeitet werden: Von nun an erzeugt jeder fehlerhafte Wert -EINVAL.
  • lib/pcanfd_open(): Verarbeitet SAMPLEPT-Indikatoren nur noch dann, wenn BITRATE-Werte angegeben werden (die Verarbeitung von Benutzerprobenpunkten ist nicht sinnvoll, wenn BRP-, TSEGx- und SJW-Argumente verwendet werden).
  • driver: Stellt jetzt die Standardeinstellungen beim letzten Schließen wieder her, anstatt die aktuellen Einstellungen beizubehalten.
  • driver/API: Möglicher Fehler behoben: Benutzer sample_point MUSS nicht größer sein als PCAN_SAMPT_SCALE.
  • driver: DEBUG-String-Formats in der 32-Bit-Kompilierung korrigiert.
  • PCAN-USB *: Verbessert die Zeitstempelverwaltung, um mit virtuellen Maschinen kompatibel zu sein.
  • PCAN-USB *: Fordert nun die Kalibrierung msg bei _init () anstelle von _open () an, so dass die Uhren stabilisiert werden und die Taktverschiebungen beim Öffnen des Kanals fixiert werden.
  • PCAN-USB *: Potentielle Kernel-Oops in pcan_poll behoben, wenn die Anwendung select () verwendet und das USB-Gerät getrennt wird.
  • driver: mdelay () durch msleep_interruptible () ersetzt, um Prozessorzeit in unterbrechungsfreien Kontexten zu sparen.
  • PCAN-USB *: Korrektur der URB-Adresse aus dem Heap und nicht aus dem Stack.
  • PCAN-USB *: Im Falle eines Timeouts, wird nun zweimal versucht, den URB (USB Request Block) zu schreiben. Dies sollte ausreichen, damit der PCAN-USB Pro in VM läuft.
  • driver/API: Fehler behoben, der zum Senden einer CAN-FD-Nachricht mit data_len > 8 und / oder BRS führen konnte, wenn der Kanal im CAN-FD-Modus nicht geöffnet war.
  • pcanfdtst.c: "--play-forever"-Option hinzugefügt: Während --play eine Datei nur einmal liest und am Ende stoppt, beendet --play-forever die Wiedergabe von Anfang an.
  • SJA1000 *: Möglicher Fehler für alle internen Geräte behoben, die auf SJA1000 basieren: Keine andere Wahl als "Software"-Zeitstempel für diese Geräte.
  • pcanfdtst.c: Eine Möglichkeit hinzugefügt, das Ausgabeformat der angezeigten Zeilen zu steuern (siehe : % date --help).
  • pcanfdtst.c: Option --filler und "rec"-Modus hinzugefügt, um zu definieren, wie die Daten gefüllt werden, und um die Daten in einer Datei zu speichern, die als nächstes abgespielt werden könnte.
  • pcanfdtsts.c: Jetzt können Frames gesendet UND geprüft werden, indem der CAN-Identifier und/oder DLC inkrementiert wird.
  • driver/API: Unnötige PCANFD_TX_OVERFLOW-Meldung im Sperrmodus wird nun gelöscht.
  • pcandfdtst.c: Neue "setopt"- und "getopt"-Modi hinzugefügt, um den Treiber-OPTIONS-Wert zu setzen / zu erhalten.
    Anwendung:
    $ pcanfdtst getopt --opt-name x /dev/pcan
    $ pcanfdtst setopt --opt-name x --opt-value yyyy /dev/pcan
  • PCAN-Chip USB: Korrektur des Namens im PCAN-Chip
  • PCAN-Chip FW 3.3.0: Beinhaltet jetzt voll digitales / analoges E/A-Management.
    (siehe auch PCANFD_IO_xxx Optionen in pcanfd.h)
  • driver: Art und Weise geändert, wie ENOSPC in der Verarbeitung behandelt wird: Wenn der Benutzer einen zu kleinen Puffer zur Verfügung stellt, wird -ENOSPC zurückgegeben und das Größenfeld des Opt-Zeigers mit dem gewünschten Wert aktualisiert. Libpcanfd wurde ebenfalls geändert. Nun weiß die Benutzeranwendung, welche Größe zugewiesen werden soll.
  • driver/API: 2 Optionen zum Lesen von FW- und DRV-Versionen hinzugefügt.
  • driver: Korrektur der sjw-Verwendung in SJA1000-Bittiming-Konvertierungen
  • driver: Die "sample_point"-Konvertierung zwischen pcan und linux-can wurde angepasst: pcan verwendet 3 Dezimalstellen, während linux-can 2 verwendet.
  • driver: Problem bei der Bitratenkonvertierung behoben: sjw als Parameter hinzugefügt, um einige BTR0BTR1-Werte zu konvertieren. Frühere Versionen betrachteten den Standardwert von sjw (= 1) für die Anzeige.
  • pcanfdtst.c: Option "-E --esi" hinzugefügt, um das ESI-Bit in übertragenen Frames zu setzen.
  • netdev: Jiffies werden nur noch für Kernel > 4.7 verwendet (Unterstützung für alte Kernel entfernen, für etwas, das sonst nirgendwo verwendet wird...).
  • driver/Makefile: Das Löschen des Kommentars am Ende der Zeile führt nicht länger zu Kompilierungsfehlern.
  • PCAN-USB *: Das Lesen und Setzen der USB-Gerätekennung durch Schleifen des Sendens der Anfrage bei ETIMEDOUT wurde korrigiert.
  • PCAN-USB *: Verwendung einer moderneren Methode zur Kommunikation mit USB-Geräten über usb_bulk_msg().
  • pcan-settings: Gibt nicht mehr "errno" zurück, sondern 0.
  • pcanfdtst.c: Schlägt beim Timeout nicht mehr fehl, wenn nicht auf eine bestimmte Anzahl von Frames gewartet wird (d.h. wenn -n nicht auf der cmd-Zeile verwendet wird).
  • PCAN-USB X6: Korrektur des Kommentars in der Udev-Regel.
  • sysfs: Der Eintrag "devid" existiert nur, wenn devid eine Bedeutung für die CAN-Schnittstelle hat.
  • pcanfdtst.c: Verwendet jetzt Alarm () und Signal (SIGALRM), um eine maximale Betriebszeit einzustellen.
  • pcanfdtst.c: Die Bedeutung der Option"-n xxx" geändert: Sie definiert nun die Anzahl der CAN-Frames anstelle der Anzahl der Schleifen.
  • driver: Das alte Enum-Schema geändert. Die Intervalle, die den Interfacetypen entsprechen, sind ab sofort:
  • 0     31      PCI/PCIe
    32   63      USB
    64   71      PC-CARD
    72   79      ISA/PC104
    80   87      DNG SP
    88   95      DNG EPP
    
    Um das alte Enum-Schema wiederherzustellen, bauen Sie pcan damit:
    $ make NEW_DEVNUM_SCHEME=NO
    0      7       PCI/PCIe
    8     15      ISA/PC104
    16   23      DNG SP
    24   31      DNG EPP
    32   39      USB
    40   47      PC-CARD
    
  • driver/API: Ein "PCANFD_FEATURE_SELFRECEIVE"-Bit hinzugefügt, das anzeigt, dass das Gerät in der Lage ist, Frames an sich selbst zu senden.
  • driver/API: "HW_PCI_FD" in "HW_PCIE_FD" umbenannt, was der Realität näher kommt (pcan.h definiert HW_PCI_FD aus Kompatibilitätsgründen immer als HW_PCIE_FD).
  • pcanfdtst.c: Die Option "-M | --max-duration" hinzugefügt, die es dem Benutzer erlaubt, die maximale Anzahl von "s" zu definieren, während der die Anwendung laufen soll.
    Wird diese Zeit vor dem Ende des Tests erreicht, gibt die Anwendung 1 zurück.
  • Lib: pcanfd_open () repariert, das nun unbedingt ioctl (SET_INIT) nach dem open() Systemaufruf aufruft.
  • netdev: Verwendung der Socket-CAN-Indikatoren CTRLMODE_LISTEN_ONLY und _FD_NON_ISO korrigiert.


Download - PCAN-Linux Treiber
PEAK-System Linux Website - Weitere Informationen

 

Diese Website verwendet Cookies für Analysen, die Anmeldung im Online-Shop und im Forum sowie die Durchführung einer Bestellung. Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Detaillierte Informationen über deren Einsatz finden Sie in unserer Datenschutzerklärung.