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硬件可以基本不变,但两边的驱动通常完全不同。

posted on 2026-10-02 07:38  lydstory  阅读(2)  评论(0)    收藏  举报

导航