К основному содержанию
скилл CX Codex

device-tree — скилл для Claude Code: что делает и как установить

Помогает ИИ писать описания оборудования на DTS/DTSI и разбираться с ошибками сопоставления драйверов в ядре Linux.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill device-tree -a claude-code
Открыть на GitHub

Что делает device-tree

Скилл задаёт правила работы с Devicetree в Linux: синтаксис файлов .dts и свойства вроде compatible или reg. Он объясняет агенту, как подсистема Open Firmware преобразует узлы дерева в структуры platform_device, сопоставляя их с таблицами of_match_table драйверов.

Инструкция охватывает сборку дерева через компилятор dtc, инспекцию запущенного ядра в /proc/device-tree и работу с оверлеями через configfs. Для применения оверлеев на лету в ядре требуется опция CONFIG_OF_OVERLAY.

Внутри также описаны частые сбои: расхождения в #address-cells, неверные индексы прерываний или задержки зондирования -EPROBE_DEFER из-за отсутствующих тактовых сигналов. Без точного совпадения строки compatible ядро не вызовет функцию инициализации. Драйвер просто пропустит устройство.

Какие задачи решает

  • написать узел устройства или фрагмент оверлея для шины I2C или SPI
  • найти причину отказа при вызове probe из-за опечатки в свойстве compatible
  • рассчитать диапазоны адресов MMIO с учётом address-cells и size-cells
  • настроить phandle-связи для тактовых сигналов и линий прерываний

Примеры запросов агенту

  • /device-tree Напиши узел DTS для датчика температуры на шине i2c1 с прерыванием на GPIO5
  • /device-tree Разберись, почему драйвер не привязывается к узлу serial@40011000
  • /device-tree Создай фрагмент оверлея для включения второго UART через configfs

Как установить device-tree

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill device-tree -a claude-code

2Вручную: положить файлы

~/.claude/skills/device-tree/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/device-tree/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о device-tree

Как установить device-tree в Claude Code?

Выполните команду npx skills add mohitmishra786/low-level-dev-skills --skill device-tree -a claude-code. Файл навыка сохранится по пути ~/.claude/skills/device-tree/SKILL.md.

Что делает скилл device-tree?

Скилл инструктирует модель по синтаксису Devicetree для ядра Linux, правилам описания периферии и сопоставлению узлов дерева с драйверами платформы.

Какие требования нужны для динамического применения оверлеев?

Ядро Linux должно быть скомпилировано с параметром CONFIG_OF_OVERLAY, а оверлеи загружаются через создание каталогов в /config/device-tree/overlays/.

Исходный текст

SKILL.md · MIT
---
name: device-tree
description: Device tree skill for Linux hardware description. Use when writing DTS/DTSI, bindings, overlays, phandles, or debugging OF platform probe failures. Activates on queries about device tree, DTS syntax, phandle, devicetree bindings, DT overlay, or OF graph.
---

# Device Tree (Devicetree)

## Purpose

Guide agents through Linux device tree source (DTS): syntax, bindings, phandles, overlays, and how the kernel OF (Open Firmware) layer parses hardware description into `platform_device` instances.

## When to Use

- Platform driver not probing — DT mismatch
- Adding a new board `.dts` or fragment overlay
- Understanding `compatible`, `reg`, `interrupts`, `clocks` properties
- Cross-checking hardware with `skills/kernel-dev/platform-device-model`

## Workflow

### 1. DTS structure

```dts
/dts-v1/;
#include "soc.dtsi"

/ {
    model = "My Board";
    compatible = "vendor,my-board", "vendor,soc-family";

    soc {
        uart0: serial@40011000 {
            compatible = "vendor,uart";
            reg = <0x40011000 0x400>;
            interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&clk_uart0>;
            status = "okay";
        };
    };
};
```

### 2. Key properties

| Property | Meaning |
|----------|---------|
| `compatible` | Driver match string (most specific first) |
| `reg` | MMIO address + length ( `#address-cells`, `#size-cells` ) |
| `interrupts` | IRQ specifier (interrupt parent defines cells) |
| `clocks` / `clock-names` | phandle to clock provider |
| `status` | `"disabled"` skips probe |

### 3. Phandles

```dts
clk_uart0: clock-uart {
    compatible = "vendor,clk";
    #clock-cells = <0>;
};

serial@... {
    clocks = <&clk_uart0>;  /* phandle reference */
};
```

### 4. Kernel parsing

```
OF core reads DTB at boot
├── of_platform_populate() creates platform_devices
└── driver `.of_match_table` matches `compatible`
```

```c
static const struct of_device_id my_of_match[] = {
    { .compatible = "vendor,uart" },
    { }
};
MODULE_DEVICE_TABLE(of, my_of_match);
```

### 5. Compile and inspect

```bash
dtc -I dts -O dtb -o board.dtb board.dts
dtc -I fs -O dts /proc/device-tree 2>/dev/null | less
ls /sys/firmware/devicetree/base/
```

Bindings live at [devicetree.org](https://www.devicetree.org/) — always cite binding name in commits.

### 6. Overlays (configfs)

```bash
# Runtime overlay apply (when CONFIG_OF_OVERLAY)
mkdir -p /config/device-tree/overlays/my-overlay
cat my-overlay.dtbo > /config/device-tree/overlays/my-overlay/dtbo
```

### 7. Agent usage

```
/device-tree Write DTS fragment for I2C sensor on i2c1 with interrupt on GPIO5
```

## Common Problems

| Symptom | Cause | Fix |
|---------|-------|-----|
| Driver not bound | `compatible` typo | Match driver's `of_match_table` |
| Wrong MMIO | `#address-cells` mismatch | Follow SoC `.dtsi` |
| IRQ not firing | Wrong interrupt parent/cells | Copy from working board DTS |
| Probe defer loop | Clock/regulator missing | `-EPROBE_DEFER` supplier in DT |
| Overlay fails | Symbol unresolved | `__fixups__` / label exports |

## Related Skills

- `skills/kernel-dev/platform-device-model` — probe and sysfs
- `skills/kernel/device-drivers` — `devm_of_iomap`
- `skills/baremetal/datasheet-and-refmanual-reading` — HW to DT mapping
- `skills/embedded/zephyr` — Zephyr devicetree (different tooling)
- `skills/kernel-dev/bus-drivers-i2c-spi` — bus node children

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →
setup-matt-pocock-skills Matt Pocock Скилл настраивает репозиторий для инженерных скиллов Matt Pocock: задаёт трекер задач, метки триажа и расположение доменной документации. Запустите его перед первым использованием остальных скиллов. 1 052 851установок ask-matt Matt Pocock Помогает выбрать подходящий скилл или рабочий поток из набора Matt Pocock. Пригодится, когда непонятно, с чего начать задачу: от идеи до разбора бага. 766 587установок to-tickets Matt Pocock Разбивает план, спецификацию или переписку на небольшие сквозные задачи и отмечает, какие из них блокируют остальные. Пригодится, когда нужно согласовать порядок работы до публикации задач в трекере. 711 230установок writing-plans Jesse Vincent Скилл превращает требования к многошаговой задаче в подробный план реализации до начала работы с кодом. Пригодится, когда исполнителю нужно зафиксировать файлы, интерфейсы и проверки. CX Codex 282 859установок caveman-review JuliusBrussee Пишет замечания к коду одной строкой: место, проблема, исправление. Пригодится, когда ревью диффа или PR надо пройти быстро и без воды. CX Codex +1 411 800установок caveman-compress JuliusBrussee Сжимает CLAUDE.md, списки задач и другие текстовые файлы в краткий формат, сохраняя читаемую резервную копию. CX Codex +1 411 500установок

Из того же набора95

qemu-for-kernel-development Скилл помогает запускать самосборные ядра Linux и тестировать драйверы в QEMU. Пригодится для отладки модулей ядра через GDB и проверок с rootfs на virtio или NFS. CX Codex +1 319установок kernel-debugging-advanced Скилл для трассировки ядра Linux: ftrace, trace-cmd, perf, kprobes, kgdb и разбор vmcore. Пригодится, когда драйвер тормозит без явной ошибки. CX Codex +1 317установок virtual-memory-paging-and-tlb Скилл объясняет принципы работы виртуальной памяти, многоуровневых таблиц страниц и буфера TLB. Он помогает разбирать сбои page fault, настраивать huge pages и отлаживать segfault. CX Codex +1 316установок cuda-profiling Ведёт агента по профилированию CUDA-приложений: таймлайн в Nsight Systems, метрики ядер в Nsight Compute, разбор roofline и узких мест. CX Codex +1 316установок datasheet-and-refmanual-reading Учит агента читать даташиты и reference manual микроконтроллеров: где искать карту регистров, биты, дерево тактирования и errata. CX Codex +1 314установок compiler-optimizations-deep Разбирает причины неудачной автовекторизации, сброса регистров на стек и настраивает профильную оптимизацию PGO или BOLT при сборке проектов на C и C++. CX Codex +1 311установок cpu-pipelines-and-hazards Объясняет стадии конвейера CPU, конфликты данных и управления, проброс и простои. Пригодится, когда непонятно, почему горячий цикл тормозит. CX Codex +1 311установок kernel-internals Скилл помогает анализировать планировщики CFS и EEVDF, аллокаторы памяти и работу VFS в Linux. Пригодится при разборе падений kmalloc, нехватки памяти и задержек задач. CX Codex +1 307установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой