私が理解したのは、アドレス0x7CC00000から始まるリングバッファでDMAを実行するメモリマッピングデバイスです。私は次のようにmmapを使ってみました。
int memfd;
FILE *file;
void *ringBuffer;
char *rx;
memfd = open("/dev/mem", O_RDWR | O_SYNC);
ringBuffer = mmap(0,4096,PROT_READ|PROT_WRITE,MAP_SHARED,memfd, 0x7CC00000);
rx = (char *)ringBuffer;
file = fopen("rx_data.dat","w");
fwrite(rx,sizeof(char),4096,file);
destroyRxBuffer(rx);
fclose(file);
sleep(5);
printf("Done.\n");
目的は、このリングバッファからデータを読み取ることです。
ベンダーから提供されたアプリを使用して、デバイスがアクティブでストリーミング中であることを確認できます。私が望むのは、単にアプリケーションを通して見るのではなく、データをインポートしてファイルに保存できることです。
問題は、マッピングされたリングバッファを保存しようとしたときにアプリケーションを介してゼロ以外のデータを表示したにもかかわらず、すべてゼロになることです。だから私が最初に考えたのは、mmapを誤って使用しているか、デバイスがマッピングされている場所を誤って決定していることです。後者の場合、マップされたすべてのデバイスとそのアドレスを表示できるのはLinuxにありますか?