arm pcie adc驱动
例如 ARM + Linux
假设:
STM32/ARM
│
└── ADC
↓
Linux
↓
/dev/xxx
↓
C++应用程序
你通常写的是 Linux Kernel Driver。
比如 ADC 是 SPI 接口:
ARM
│
├── SPI Controller
│
└── ADC芯片
↓
Linux Driver
↓
/dev/adc0
↓
C++程序
驱动可能涉及:
- SPI/I²C
- GPIO
- DMA
- Interrupt
- Device Tree
- Linux IIO subsystem
- 内核模块
.ko
如果是 ARM + Windows
例如 ARM Windows:
ARM SoC
↓
ADC
↓
Windows on ARM
↓
Windows Driver
那还是写 Windows ARM64 驱动,并不是 Linux 驱动。
如果是 ARM MCU,比如 STM32
这个就又不一样。
例如:
STM32
↓
ADC
↓
DMA
↓
你的裸机/Cube HAL程序
通常不会有 Linux/Windows 那种“驱动”。
你可能只是写:
HAL_ADC_Start_DMA(...);
或者自己写:
ADC_Init();
ADC_Start();
ADC_Read();
这更接近 MCU底层驱动/BSP。
所以可以这样理解
| 硬件 | OS | 需要什么 |
|---|---|---|
| ARM MCU | 裸机 | ADC底层驱动 |
| ARM MCU | FreeRTOS | ADC驱动 + RTOS接口 |
| ARM SoC | Linux | Linux Kernel Driver |
| ARM SoC | Windows | Windows ARM64 Driver |
| x86 PCIe卡 | Windows | Windows x64 Driver |
| x86 PCIe卡 | Linux | Linux PCIe Driver |
最关键的一点:
驱动跟“CPU是 ARM 还是 x86”不是简单的一一对应,而是跟“硬件 + 操作系统 + 总线架构”有关。
比如同一个 PCIe ADC 卡:
PCIe ADC
↓
┌───────────────┐
│ FPGA + ADC │
└───────┬───────┘
│ PCIe
┌────┴─────┐
↓ ↓
x86 Windows ARM Linux
↓ ↓
Windows Linux
Driver Driver
FPGA/ADC硬件可以基本不变,但两边的驱动通常完全不同。
浙公网安备 33010602011771号