AgentSkillsCN

hardware-io

Zephyr RTOS 的硬件接口与外设管理。涵盖传感器子系统(通道、触发器、采集/获取)、引脚控制(Pinctrl)与复用、基于 DeviceTree 规范的 GPIO 管理,以及 SoC 级别的硬件配置。在新增硬件组件、配置引脚复用,或开发基于传感器的应用时,可触发此流程。

SKILL.md
--- frontmatter
name: hardware-io
description: Hardware interfacing and peripheral management for Zephyr RTOS. Covers the sensor subsystem (channels, triggers, fetch/get), pin control (Pinctrl) and multiplexing, GPIO management using Devicetree specs, and SoC-level hardware configurations. Trigger when adding new hardware components, configuring pinmux, or developing sensor-based applications.

Zephyr Hardware I/O

Interface with the physical world using Zephyr's standardized driver models and hardware abstraction layers.

Core Workflows

1. Sensor Subsystem

Interact with various sensors using a uniform API for data fetching and decoding.

  • Reference: sensors.md
  • Key Tools: sensor_sample_fetch, sensor_channel_get, struct sensor_value.

2. Pinctrl & GPIO

Manage pin multiplexing, electrical configuration, and basic digital input/output.

  • Reference: pinctrl_gpio.md
  • Key Tools: pinctrl, gpio_dt_spec, GPIO_DT_SPEC_GET.

3. SoC Configuration

Tune chip-level parameters and manage hardware across multiple board variants.

  • Reference: soc_config.md
  • Key Tools: Kconfig, soc_common.dtsi, SoC-level overlays.

Quick Start (Sensor Polling)

c
#include <zephyr/drivers/sensor.h>

const struct device *temp_sensor = DEVICE_DT_GET(DT_ALIAS(ambient_temp0));
struct sensor_value val;

void poll_sensor(void) {
    if (sensor_sample_fetch(temp_sensor) == 0) {
        sensor_channel_get(temp_sensor, SENSOR_CHAN_AMBIENT_TEMP, &val);
    }
}

Professional Patterns (Hardware Engineering)

  • Safe GPIO: Always use gpio_dt_spec to ensure polarity and pin number are automatically handled by the driver.
  • Background Sampling: Never poll sensors in high-priority threads; use a background work queue. See Work Queues in the kernel-services skill.
  • Deferred Pinctrl: Define pin states in a shared .dtsi to simplify multi-revision hardware support.

Resources

  • References:
    • sensors.md: Reading data, channels, and triggers.
    • pinctrl_gpio.md: Pin multiplexing and GPIO specs.
    • soc_config.md: Multi-variant SoC configuration.