mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-08-26 21:49:45 +08:00
Add Doxygen pages for RT-Thread device-model drivers: platform/OFW, DM core (bus, dm, power), clk/regulator/reset/power-domain, PCI/PIC, Phye, DMA/hwcache, block/SCSI/ATA/NVMe/UFS/SDIO, SCMI, RPMsg, mailbox, NVMem, NUMA, syscon, thermal, input/LED/IIO/graphic, and related power/charger/supply docs. Expand device-driver INDEX.md with ~90 @subpage entries so all new pages appear in the driver chapter navigation. Update existing UART/SPI/RTC/pin/framework/dtc pages: UART docs moved from serial/ to uart/ (uart + uart_dm + uart_earlycon); SPI and RTC gain DM companion pages; pin links to pin_dm; framework points at DM topics. Focus on registration/probe flow and in-tree APIs; no standalone VirtIO subsystem page (transport code still incomplete). Test plan: build Doxygen for documentation/ and verify device-driver INDEX links resolve without missing @ref/@subpage warnings. Signed-off-by: GuEe-GUI <2991707448@qq.com>
1.8 KiB
Executable File
1.8 KiB
Executable File
@page page_device_rpmsg_char RPMsg character device
RPMsg char driver (rpmsg_char.c)
RT_RPMSG_DRIVER_EXPORT(rpmsg_char_driver) — matches rt_rpmsg_device with id.name rpmsg-char or rpmsg-raw (set by virtio-rpmsg.c).
Prerequisite: transport + rt_rpmsg_device_register — see @ref page_device_rpmsg (VirtIO stack).
Topology
| Device | Name pattern | Ops |
|---|---|---|
| Control | rpmsg_charN |
control only — create/destroy endpoints |
| Per endpoint | rpmsg_<src>x<dst> |
read / write / control |
probe: allocates rpmsg_char_ctrl, stores in rdev->parent.user_data, registers control rt_device.
Create endpoint
On control device:
struct rt_rpmsg_endpoint_info info;
rt_strncpy(info.name, "my-channel", RT_RPMSG_NAME_SIZE);
info.src = local_addr;
info.dst = remote_addr;
rt_device_control(ctrl, RT_DEVICE_CTRL_RPMSG_CREATE_EPT, &info);
Flow:
- Default name
rpmsg-rawifinfo.nameempty rt_rpmsg_create_endpoint(rdev, &info, rpmsg_char_rx_callback)- Ring buffer pool:
RT_RPMSG_CHAR_MSG_MAX×RT_RPMSG_CHAR_MSG_SIZE_MAX(Kconfig) - Register char device
rpmsg_%ux%u
Data path
| Direction | Path |
|---|---|
| TX | write → rt_rpmsg_send |
| RX | VirtIO/backend → endpoint cb → rt_ringbuffer_put → read |
| Overwrite | RT_DEVICE_CTRL_RPMSG_DATA_OVERWRITE → put_force when full |
RX matching uses find_endpoint with dst = incoming src, src = ANY — addresses must match how the endpoint was created.
Destroy
RT_DEVICE_CTRL_RPMSG_DESTROY_EPT: deferred via rt_work until ref_count == 1 and device closed.
See also
- @ref page_device_rpmsg
components/drivers/rpmsg/rpmsg_char.c