板子介绍:
我正在开发一块板上装有 ST40 芯片的板,它基本上用于捕获 DVB 流并将其显示在电视上。该板在 Linux 操作系统上运行。
问题描述:
我正在尝试使用 O_DIRECT 标志从 USB 上的大文件(大约 2 GB)中读取数据。这是相关的代码片段:
char subblk[BLKSIZE];
open (filename2,O_CREAT|O_WRONLY|O_DIRECT,S_IRWXU|S_IRWXG|S_IRWXO);
read (fp,subblk,BLKSIZE);
它说读取失败,错误号为 22 -"EINVAL 22 /* Invalid argument"
为了澄清这是一个编程问题还是一些依赖于架构的问题,我在我的桌面系统上运行了相同的代码,它运行得非常好,并且我能够打印我刚刚读到的字符。我的 ST40 板上出现故障的原因是什么?