問題タブ [fat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
filesystems - FAT16 を理解する
FAT16
ファイルシステムを備えたフラッシュベースの USB 大容量記憶装置を開発しています。正常に動作していますが、FAT セグメントで何が起こっているのか理解できません。
開始すると、ルート ディレクトリに 56 バイトの長さの 1 つのファイルがあり、長さは 32 ビットで、データは 2 番目のクラスターに格納されます (0 と 1 は FAT では使用できません)。
FAT セグメントのメモリ ダンプを見ると、次のように表示されます。
私が理解しているように、最後の 0xFFFF は、このクラスターがこのファイルのチェーン内の最後のクラスターであることを意味します。
ここまでは順調ですね。
しかし...実際のファイルのサイズを 4,032 バイトに拡張すると、FAT セグメントは次のようになります。
ここで何が起こっているのか誰でも説明できますか?
説明できないことがいくつかあります。
1. 4 つのシステム予約バイトが変更されるのはなぜですか?
2. 0xFFFF が表示されません。これは、クラスター チェーンに終わりがないことを意味しますか?
ブロックサイズは512バイトで、ファイルシステムはクラスターごとに2セグメントでフォーマットされています。
file - U-Boot: MMC FAT から大きなファイルを読み取るときに「dlmalloc.c:2084: malloc_extend_top: Assertion failed」が表示される
MMC の FAT からファイル (675 バイト) を読み込みたいです。spl.c で呼び出される関数 file_fat_read() を使用します。私のコードを以下に示します。
小さいファイルの読み取りは問題ありません。ただし、より大きなファイルを読み取ると、次のエラーが返され、デバイスの起動が停止します (PandaBoard OMAP 4460):
dlmalloc.c:2084: malloc_extend_top: Assertion '((unsigned long)((char*)top + top_size) & (pagesz - 1)) == 0' failed.
私の質問は次のとおりです。このファイルは大きすぎて読み取ることができませんか、それとも間違った方法で file_fat_read() を呼び出していますか?
私のコード:
python - Python shutil.copy が FAT ファイル システム (Ubuntu) で失敗する
問題: Linux で shutil.copy() を使用してファイルを FAT16 マウント ファイルシステムにコピーすると失敗します (Python 2.7.x)。失敗は shutil 内部エラーであり、実際には shutil.chmod で失敗し、shutil.copy が実行されているようです。
FAT ではパーミッションがサポートされていないため、シェル chmod も失敗します。
質問: これをうまく回避する方法はありますか? たとえば、次のようないくつかのオプションがあることを知っています。
- copyfile を使用 - ターゲット ディレクトリだけでなく実行可能なフル パスが必要なため、理想的ではありません
- シェル cp を実行してファイルをコピーする
- ファイルモードを変更しようとしない独自のコピー関数を作成する
Python または FAT マウント オプションでこれを回避する方法はありますか? mount -t vfat -o umask=000 /dev/loop0 /mnt/foo を実行して、プログラム内にファイルシステムをマウントします。
shutil.copy 内で例外が発生し、shutil.copy() が shutil.chmod() から IOException をキャッチすると、呼び出し元の関数に IOException を渡す前にターゲット ファイルを削除するように見えるため、例外をキャッチしても役に立ちません。
アイデアはありますか、それとも 1 ~ 3 から 1 つを選択する必要がありますか?
ハンヌ
assembly - 16 ビット アセンブリで文字が印刷されない
FAT12 でフォーマットされたフロッピーからルート セクタをメモリに読み込む基本的なブートローダがあります。(その部分は機能します)が、それを実装した後、画面への文字の書き込みを停止しました。前回これを行ったのは、レジスターを POP するのを忘れたためです。しかし、私はすべてのレジスタをポップしていることをトリプルチェックしました。
私はBOCHS Debuggerも使用しましたが、それによると、最後に到達して文字印刷コマンドを実行します。
私は今のところ立ち往生しています。誰かが私のコードを見てくれたら、本当にうれしいです。
これは私のコードです:
前もって感謝します。
-ティム
PS: (コードをコピーすべきではないと言っている人のために) ROOT を正しくロードするかどうかを確認するために、brokenthorn から「ファイルが存在するかどうかを確認する」コードのみをコピーしました。
filesystems - Windows が、ファイルの各データ ブロックの次のポインタを持つ従来のリンク リストの代わりに FAT 構造を使用したのはなぜですか?
次のノードへの参照をテーブルに格納する代わりに、従来のリンク リストのように、つまり次のポインタを使用して格納できないのはなぜでしょうか?