Je fais tourner Debian Jessie sur mon Hummingboard, un SBC ARM basé sur l'iMX6.
root@torpedo:~# uname -a
Linux torpedo 4.11.4-cubox #2 SMP Tue Jun 13 14:51:52 CEST 2017 armv7l GNU/Linux
Il dispose d'un slot mini PCI express, que je compte utiliser pour une carte UART à 4 ports. J'ai un de Diamond systems qui utilise la puce UART EXAR XR17V354 .
Optimiste, j'ai branché la carte et démarré, en espérant que tout irait bien.
Il semble que la carte soit reconnue :
root@torpedo:~# lspci -v
00:00.0 PCI bridge: Synopsys, Inc. Device abcd (rev 01) (prog-if 00 [Normal deco de])
Flags: bus master, fast devsel, latency 0
Memory at 01000000 (32-bit, non-prefetchable) [size=1M]
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Memory behind bridge: 01100000-011fffff
[virtual] Expansion ROM at 01200000 [disabled] [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
Capabilities: [70] Express Root Port (Slot-), MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Kernel driver in use: pcieport
01:00.0 Serial controller: Exar Corp. Device 0354 (rev 03) (prog-if 02 [16550])
Flags: fast devsel, IRQ 334
Memory at 01100000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Endpoint, MSI 01
Capabilities: [100] Virtual Channel
Cependant, dmesg ne mentionne pas les ttys créés au démarrage, à l'exception des ttys GPIO associés au Hummingboard, qui ont toujours été présents.
Le fournisseur (Diamond) fournit un pilote personnalisé, que j'ai téléchargé et construit à partir des sources. Lorsque je charge le pilote .ko , dmesg dit :
[ 640.564446] DSMPESER4MDriver: loading out-of-tree module taints kernel.
[ 640.565123] The init fun get called
[ 640.565199] pci 0000:01:00.0: enabling device (0140 -> 0142)
[ 640.565359] DS-MPE-SER4M driver loaded
Et /var/log/messages dit :
root@torpedo:~# tail -f /var/log/messages
...
Apr 17 15:48:50 torpedo kernel: DSMPESER4MDriver: loading out-of-tree module taints kernel.
Apr 17 15:48:50 torpedo kernel: The init fun get called
Apr 17 15:48:50 torpedo kernel: pci 0000:01:00.0: enabling device (0140 -> 0142)
Apr 17 15:48:50 torpedo kernel: DS-MPE-SER4M driver loaded
Quelques questions :
- Comment corriger "loading out-of-tree module taints kernel" ? (ce n'est pas un problème technique - voir commentaire)
- Comment utiliser mknod pour créer le /dev/tty pour ce pilote ?
- Comment configurer le module pour qu'il se charge au démarrage ?