Installation et utilisation de l'artefact de débogage i2c i2c-tools sous linux

Introduction aux outils i2c

Dans le développement Linux embarqué, il est parfois nécessaire de confirmer si le matériel i2c est connecté normalement, si l'appareil fonctionne normalement, quelle est l'adresse de l'appareil, etc., ici nous devons utiliser un outil pour tester le bus I2C - outils i2c.

i2c-tools est un outil open source pour le débogage d'i2c. Il peut obtenir le périphérique monté et l'adresse du périphérique, et peut également lire et écrire des registres de périphérique I2C. Lors du débogage d'un nouveau pilote de périphérique, il est inévitable de modifier les registres à plusieurs reprises, puis de voir le résultat. La méthode traditionnelle consiste à modifier la valeur du registre du code du pilote -> compiler -> télécharger -> exécuter -> voir le résultat. Ce processus prend du temps et un seul bit doit être changé à chaque fois.Dans ce cas, i2c-tools est tout simplement un outil magique.

Ci-dessous, nous donnerons une brève introduction à l'installation et à l'utilisation de cet outil.

Description officielle d'i2c-tools :

https://i2c.wiki.kernel.org/index.php/I2C_Tools

Adresse de téléchargement du code source de l'outil :

https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

Les outils i2c-tools incluent :

i2cdetect : utilisé pour scanner les périphériques sur le bus i2c et afficher les adresses.
i2cset : définit la valeur d'un registre du périphérique i2c.
i2cget : Lire la valeur d'un registre du périphérique i2c.
i2cdump : lit la valeur de tous les registres d'un périphérique i2c.
i2ctransfer : Lire et écrire plusieurs octets à la fois.

工具命令介绍:
    i2cdetect:检测i2c芯片
    i2cdump:查看寄存器值
    i2cget:获取单个寄存器值(8位寄存器)
    i2cset:设置单个寄存器值(8位寄存器)
    i2ctransfer:一次传输多字节数据(16位寄存器)
参数介绍:
    -y:禁用交互模式。
    -f:强制访问设备。
    -r:写入后立即读回该值。

Remarque : Le principe d'i2c-tools est complété par l'utilisation du fichier de périphérique i2c-× dans le chemin /dev. Votre noyau doit donc activer la configuration CONFIG_I2C_CHARDEV, sinon il signalera que le nœud est introuvable.  

Sur l'appareil, vous pouvez également entrer via le terminal de la carte cible : ls /sys/bus/i2c/devices查看i2c设备节点信息。看到的i2c-0, i2c-1 se réfèrent au nœud de bus i2c, et les appareils esclaves i2c sont tous montés sous le nœud de bus.

compilation d'outils

Code source de l'outil, utilisez la commande suivante pour compiler

make CC=arm-linux-gnueabihf-gcc USE_STATIC_LIB=1

USE_STATIC_LIB signifie utiliser la compilation statique. Une fois la compilation terminée, cinq produits i2cdetect, i2cdump, i2cget, i2cset et i2ctransfer seront générés dans le répertoire des outils. Copiez ces exécutables sur l'appareil.

Sans l'option de compilation USE_STATIC_LIB, il sera compilé à l'aide de la liaison dynamique. Après la compilation, vous devez copier la bibliothèque dynamique libi2c.so.0 dans le répertoire i2c-tools-4.3/lib vers le répertoire /usr/bin sur le périphérique. La compilation générera cinq outils : i2cdetect, i2cset, i2cget, i2cdump, i2ctransfer, qui peuvent être utilisés après copie sur la carte de développement.

Comment utiliser les outils i2c

i2cdetect : interrogez le bus i2c et les périphériques contenus dans la carte de développement, voir la commande suivante :

i2cdetect -l

Sondez le bus i2c inclus avec la carte de développement.

i2cdetect -y -r 0

Détecter les périphériques montés sur le bus i2c-0 Le paramètre -y signifie annuler le mode interactif et exécuter directement la commande.

i2cdetect -y -r 1

Détecte les périphériques montés sur le bus i2c-1. UU indique que le périphérique a été occupé par le pilote du noyau Linux, et le programme de détection ignorera le périphérique. Comme le montre la figure ci-dessous, les adresses des appareils esclaves sont respectivement 0x0c et 0x1a. UU indique que le périphérique esclave de l'adresse du périphérique est occupé par le pilote. Après la désinstallation du pilote correspondant, UU deviendra des données. -- Indique que l'adresse a été détectée, mais pas de réponse.

 i2cset : définit la valeur d'un seul registre du périphérique i2c, voir quelques commandes :

i2cset -y -f 0 0x57 0x00 0x10
i2cset -y -f 0 0x57 0x01 0x11
i2cset -y -f 0 0x57 0x02 0x12
i2cset -y -f 0 0x57 0x03 0x13

Ce qui suit prend i2cset -y -f 0 0x57 0x00 0x10 comme exemple d'analyse.
Signification des paramètres :
-y annule le mode interactif et exécute directement la commande
-f force l'accès au périphérique.
0 indique le numéro de bus i2c.
0x57 indique le Adresse du périphérique i2c . 0x00 indique
l'adresse du registre. i2cget : affiche la valeur d'un seul registre du périphérique i2c et examine plusieurs commandes :

i2cget -y -f 0 0x57 0x00

Prenez i2cget -y -f 0 0x57 0x00 comme exemple pour l'analyse, les significations des paramètres :
-y annule le mode interactif, exécute directement la commande
-f force l'accès à l'appareil
0 indique le numéro de bus i2c
0x57 indique l'adresse de l'appareil i2c
0x00 indique l'adresse du registre

 i2cdump : Visualisez les valeurs de tous les registres du périphérique i2c, voir la commande suivante :

i2cdump -y -f 1 0x32

Signification des paramètres :
-y annule le processus interactif, exécute directement la commande
-f force l'accès à l'appareil
1 indique le numéro de bus i2c
0x32 indique l'adresse de l'appareil i2c

autres ressources

Commande i2c-tools du noyau Linux

Une brève introduction à l'installation et à l'utilisation des outils i2c-tools - Electronic Paper

https://www.cnblogs.com/ITY996/p/16894380.html

https://www.cnblogs.com/liuwanpeng/p/7346558.html

Utilisation des outils I2C-tools sous Linux_i2cdetect_Deep Sea Belt Carp Blog-CSDN Blog 

Je suppose que tu aimes

Origine blog.csdn.net/qq8864/article/details/131953108
conseillé
Classement