2

編集: Mono をバージョン 3.2.7に更新しました (これらの手順を使用してソースからコンパイルする必要がありました)。容量過負荷の引数に関するエラーが表示されなくなりました。以下のエラーが表示されるようになりました。以前、mono verison 2.1 を使用した際、小さなテキスト ファイルをメモリ マップド ファイルとしてテストとして開くことができました。mono の新しいバージョンを使用すると、どのファイルを開こうとしているか、どのオーバーロード引数が提供または省略されていても、この同じエラーが発生します。簡単なグーグル検索では何も得られなかったので、スタックオーバーフローに戻ります。私は何をすべきか?

Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---> System.EntryPointNotFoundException: Mono_Posix_Syscall_get_at_fdcwd at (wrapper managed-to-native) Mono.Unix.Native.Syscall:get_at_fdcwd () at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- at System.IO.MemoryMappedFiles.MemoryMapImpl.Open (System.String path, FileMode mode, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path) [0x00000] in <filename unknown>:0 at ConsoleApplication1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---> System.EntryPointNotFoundException: Mono_Posix_Syscall_get_at_fdcwd at (wrapper managed-to-native) Mono.Unix.Native.Syscall:get_at_fdcwd () at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- at System.IO.MemoryMappedFiles.MemoryMapImpl.Open (System.String path, FileMode mode, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path) [0x00000] in <filename unknown>:0 at ConsoleApplication1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

ビーグルボーンの GPIO ピンを制御するプロジェクトに取り組んでいます。Python コードを C# (よく知らない言語) に移植しようとしていますが、/dev/mem にあるボード上のレジスタを、Python で行ったようにメモリ マップ ファイルとして開こうとして問題が発生しました。 . Visual Studio 2010 で .Net Framework バージョン 4.0.30319 を使用してコードを作成およびコンパイルし、コンパイラ バージョン 2.10.8.1 を使用して mono を使用して ubuntu で実行しています。

簡略化されたコードは次のとおりです。

long offset = 0x4804c000;
long length = 0xfff;
using (var mm0 = MemoryMappedFile.CreateFromFile(@"/dev/mem", FileMode.Open, 
                 "gpio1", capacity))
{
    using (var accessor = mm0.CreateViewAccessor(offset, length))
    {
    do stuff
    }
}

次のエラーが生成されます。

Unhandled Exception: System.ArgumentException: capacity at System.IO.MemoryMappedFiles.MemoryMapImpl.Open (System.String path, FileMode mode, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity) [0x00000] in <filename unknown>:0 at ConsoleApplication1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: capacity at System.IO.MemoryMappedFiles.MemoryMapImpl.Open (System.String path, FileMode mode, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in <filename unknown>:0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity) [0x00000] in <filename unknown>:0 at ConsoleApplication1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

メモリ マップの容量を指定することも指定しないことも試しました。また、数メガバイトからボード上の使用可能な RAM 全体まで、さまざまな容量の値を指定してみました。ここからどこへ行くべきかについてのヒントはありますか?

4

1 に答える 1

0

Mono 2.10 は非常に古いため、アップグレードしてください。

于 2014-02-09T13:31:39.473 に答える