You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建文件映射时出现Error code 0xC1的问题排查与解决

Xilinx FPGA设备内存映射CreateFileMapping报错0xC1问题分析与修复

问题背景

使用基于Xilinx的FPGA板卡,LED硬件地址为0x40000,Windows 11已正确识别驱动,通过WriteFile直接读写设备文件可正常控制LED开关,但尝试通过CreateFileMapping将设备文件映射到内存时,在调用CreateFileMapping处返回NULL句柄,错误码为0xC1,错误信息显示"%1 is not a valid Win32 application."

测试核心代码片段:

// 尝试内存映射设备文件
size_t mapping_size = sizeof(DWORD);
DWORD  dwMaximumSizeHigh = (LED_Addr + mapping_size) >> 32;
DWORD  dwMaximumSizeLow = (LED_Addr + mapping_size) & 0xFFFFFFFF;
HANDLE  file_mapping_handle_ = ::CreateFileMapping( file_handle, 0, PAGE_READWRITE, dwMaximumSizeHigh, dwMaximumSizeLow, 0);
if (file_mapping_handle_ == NULL)
{
    DWORD error = GetLastError();
    auto message = error_message(error);
    return -1;
}

错误码0xC1的含义

错误码0xC1对应系统定义的ERROR_BAD_EXE_FORMAT,原含义是"不是有效的Win32应用程序",但此处属于系统错误信息的复用——实际并非应用程序格式问题,而是设备驱动不支持内存映射操作导致的错误反馈。

问题原因

Xilinx XDMA驱动提供的\\user设备通道不支持内存映射(CreateFileMapping/MapViewOfFile)机制:

  • \\user通道属于字符设备,仅支持基础的读写(ReadFile/WriteFile)、指针定位(SetFilePointer)操作,驱动未实现内存映射所需的回调接口。
  • CreateFileMapping主要针对磁盘文件或专门支持映射的设备(如内存映射类设备),传入字符设备句柄时,驱动无法响应该操作,因此返回错误码0xC1。

修复方案

方案1:保留直接读写方式(已验证可行)

继续使用测试代码中已生效的SetFilePointer+WriteFile组合控制LED,这是XDMA \\user通道的标准用法:

// 定位到LED硬件地址
DWORD dwPos = SetFilePointer(file_handle, LED_Addr, NULL, FILE_BEGIN);
if (dwPos == INVALID_SET_FILE_POINTER) {
    printf("SetFilePointer Error");
    return -1;
}

// 写入LED控制值
DWORD bytesWritten;
if (!WriteFile(file_handle, &LED_ON, sizeof(DWORD), &bytesWritten, NULL)) {
    DWORD error = GetLastError();
    std::string message = error_message(error);
    std::cout << "Error code: " << error << std::endl;
    std::cout << "Error message: " << message << std::endl;
    return -1;
}

方案2:切换到XDMA的MMAP通道(需硬件/驱动支持)

若FPGA板卡和XDMA驱动支持mmap通道,可替换设备路径为\\mmap,该通道专门用于内存映射访问:

// 修改通道路径为mmap
string channelPath = devicePaths[0] + "\\mmap";

注意事项:

  • 需确认XDMA驱动版本支持mmap通道,可查阅Xilinx官方文档。
  • 硬件端需配置AXI映射区域,确保0x40000地址在mmap通道的映射范围内。

内容的提问来源于stack exchange,提问作者mans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:43:13