C'est pas tellement lié en fait. Le device tree ne liste que les devices qui ne sont pas découvrables, donc sur des bus mémoires, i2c, spi, etc. Pour USB et PCIe, le seul truc qui est listé est le contrôleur. Tout comme ACPI.
Bien sûr, mais les cartes ARM du moins au début recouraient bien moins au PCIe et USB, préférant les bus non découvrables à la place. Alors que la plupart des composants dans le PC finissent par passer par ces bus à un moment ou un autre.
Cela change beaucoup sur la manière de prendre en charge le matériel.
C'est vrai, mais on pourrait utiliser exactement le même argument pour le BIOS / UEFI et les tables ACPI passées au kernel: il faut bien que quelqu'un les écrive pour les parties non-découvrables. Du coup, je vois pas trop où c'est un point fort.
Dans un cas c'est fourni par le constructeur lui même, dans l'autre c'est souvent au développeur de l'ajouter de son côté que ce soit au sein du noyau lui mee ou du chargeur de démarrage.
Si, en fait. Tout ce qui est listé dans le SoC et a un status = "okay" peut être utilisé. Si c'est effectivement le cas reste à charge de l'OS, mais tout est censé être utilisable.
Je sais ce qu'est un device tree, j'en écris régulièrement.
Justement je mentionnais qu'en l'absence de device tree, c'est à dire si tu essayes de démarrer ton noyau avec juste ce qui est fourni de base par le constructeur de la carte, bah tu ne booteras pas ou en mode très dégradé. Car le constructeur ne te fourni pas en dur le device tree qui va bien, tu dois l'ajouter toi même quelque part.
Alors que quand je monte mon PC, je n'ai rien à faire. Je démarre mon noyau sans besoin d'ajouter une description du matériel avec mon système. Car cette découverte est faite et fourni automatiquement à mon système.
La "découverte" du DT en lui même est effectivement le seule avantage du BIOS / UEFI sur le DT.
Cette différence paraît faible mais elle est en fait fondamentale ! C'est cette différence qui est la source de tous les mots et qui rend le device tree obligatoire. Et qui complique la conception d'une image ARM universelle.
J'aurais tendance à dire que non, mais dans ce cas là, le bootloader sur ARM ne fait pas partie de l'OS non plus. Il commence au kernel, qui lui n'a pas à se soucier de la partie decouverte, on lui passe le DT en argument.
L'OS au sens strict du terme se réfère en effet au système noyau + espace utilisateur quelque soit l'architecture. Mais il me semble pertinent de considérer le chargeur de démarrage dedans. Après tout Fedora, Windows ou macOS ont leur propre chargeur de démarrage qui est géré comme n'importe quel logiciel. Et d'autant plus que nous avons dans un cas (pour PC) un chargeur de démarrage universel (il fonctionne pour à peu ès n'importe quel PC sans soucis) et de l'autre nous avons un chargeur de démarrage (que ce soit U-boot ou autre) qui doit être particulier pour l'initialisation de base et sélectionner le bon device tree à envoyer au noyau.
[^] # Re: Fragmentation risk
Posté par Renault (site web personnel) . En réponse au journal «Understand the fact» la campagne de Arm contre le set d'instructions libre Risc-V. Évalué à 5.
Bien sûr, mais les cartes ARM du moins au début recouraient bien moins au PCIe et USB, préférant les bus non découvrables à la place. Alors que la plupart des composants dans le PC finissent par passer par ces bus à un moment ou un autre.
Cela change beaucoup sur la manière de prendre en charge le matériel.
Dans un cas c'est fourni par le constructeur lui même, dans l'autre c'est souvent au développeur de l'ajouter de son côté que ce soit au sein du noyau lui mee ou du chargeur de démarrage.
Je sais ce qu'est un device tree, j'en écris régulièrement.
Justement je mentionnais qu'en l'absence de device tree, c'est à dire si tu essayes de démarrer ton noyau avec juste ce qui est fourni de base par le constructeur de la carte, bah tu ne booteras pas ou en mode très dégradé. Car le constructeur ne te fourni pas en dur le device tree qui va bien, tu dois l'ajouter toi même quelque part.
Alors que quand je monte mon PC, je n'ai rien à faire. Je démarre mon noyau sans besoin d'ajouter une description du matériel avec mon système. Car cette découverte est faite et fourni automatiquement à mon système.
Cette différence paraît faible mais elle est en fait fondamentale ! C'est cette différence qui est la source de tous les mots et qui rend le device tree obligatoire. Et qui complique la conception d'une image ARM universelle.
L'OS au sens strict du terme se réfère en effet au système noyau + espace utilisateur quelque soit l'architecture. Mais il me semble pertinent de considérer le chargeur de démarrage dedans. Après tout Fedora, Windows ou macOS ont leur propre chargeur de démarrage qui est géré comme n'importe quel logiciel. Et d'autant plus que nous avons dans un cas (pour PC) un chargeur de démarrage universel (il fonctionne pour à peu ès n'importe quel PC sans soucis) et de l'autre nous avons un chargeur de démarrage (que ce soit U-boot ou autre) qui doit être particulier pour l'initialisation de base et sélectionner le bon device tree à envoyer au noyau.