Généralement pour les systèmes d'armement, les arborescences de périphériques fournissent des informations sur le matériel au noyau (Linux). Ces arborescences de périphériques existent en tant que fichiers dts (source de l'arborescence des périphériques) qui sont compilés et chargés dans le noyau. Le problème est que je n'ai pas accès à un tel dts
fichier, pas même à un dtb
fichier.
J'ai accès à /sys
et /proc
sur la machine et je voulais demander si cela me permettrait de "deviner les bonnes valeurs" à utiliser dans un dts?
Une réponse potentielle pourrait également mettre en évidence l'aspect si la réponse à cette question dépend également de si l'interface de l'arborescence des périphériques a été utilisée en premier lieu (c'est-à-dire qu'une a dtb
été créée et fournie au noyau) au lieu d'un piratage supplémentaire "nous détournons simplement de la vanille et patcher le noyau afin de résoudre le problème d'informations sur le périphérique pour notre noyau uniquement "-solution?
la source
Réponses:
/proc/device-tree
ou/sys/firmware/devicetree/base
Je pense que les deux sont des alias,
/sys/firmware/devicetree/base
probablement le meilleur choix après l'apprivoisement/proc
.Vous pouvez ensuite accéder aux propriétés dts à partir de fichiers:
Le format de sortie des entiers est binaire, il
hexdump
est donc nécessaire.dtc -I fs
Obtenez une arborescence complète des périphériques à partir du système de fichiers:
renvoie le dts sur stdout.
Voir aussi: Comment lister l'arborescence des périphériques du noyau | Échange de pile Unix et Linux
dtc
à BuildrootBuildroot a une
BR2_PACKAGE_DTC=y
configuration à mettredtc
à l'intérieur du système de fichiers racine.QEMU
-machine dumpdtb
Si vous exécutez Linux dans QEMU, QEMU génère automatiquement les DTB si vous ne le donnez pas explicitement avec
-dtb
, et il est donc également capable de le vider directement avec:comme mentionné sur: https://lists.gnu.org/archive/html/qemu-discuss/2017-02/msg00051.html
Testé avec cette configuration QEMU + Buildroot sur le noyau Linux v4.19 arm64.
la source
Je ne sais pas si je vous comprends bien.
Si vous êtes sur un système qui a démarré à l'aide d'une dtb, votre arborescence de périphériques doit être accessible dans debugfs.
Vous pouvez également essayer les outils dtc de Pantelis Antoniou, ils incluent fdtdump et fdtget qui impriment des dts à partir d'un blob.
Si vous n'avez pas du tout d'arborescence de périphériques et que vous n'avez pas démarré à partir d'une base de données, vous devrez parcourir le code machine vous-même et ajouter tous les attributs et nœuds spécifiques aux périphériques à vos dts. Il n'y a pas d'arborescence de périphériques "synthétique" générée pour un tel démarrage. Un point de départ serait une machine ou un parent similaire, puis travailler votre système système par système.
la source
dtb
soit accessible via les debugfs mais qui dépendraCONFIG_DEBUG_FS
de.config
et même s'il est toujours basé sur le simple caprice qu'ils ont réellement utilisédtb
pour commencer, est-ce que je lis bien? Donc, avec un peu de «malchance», ils n'ont fait ni l'un ni l'autre et ont utilisé une sorte de correction directe du noyau à partir de l'interface de l'arborescence des périphériques, non? Donc, cela signifierait que le dernier recours ne serait pas le code machine, étant donné qu'ils violent la GPLv2 et ferment le noyau, non?