2012-02-01 12 views
1

私の組み込みLinux上でのフラッシュメモリとフラッシュメモリの合計サイズについては、私のCプログラムの情報が必要です。カーネルが起動したときにこれらの情報を見ることはできますが、他の方法でそれらを取得することはできません。これはまったく可能ですか?LinuxでROMメモリの種類とサイズに関する情報を取得

+0

dmesgログの情報を解析しますか? – tMC

答えて

0

はい.linuxのdmidecodeユーティリティを使用すると可能です。ここではサンプルコード

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    char str[100] = "dmidecode | grep -i 'ROM Size'"; 
    system(str); 
    return 0; 
} 

は、それはあなたのROMサイズを与える、あなたはROMサイズをgrepしていない場合、それはまた、他のBIOS情報を提供しています。組み込みLinuxにDmidecodeユーティリティがない場合は、hereからソースコードを取得できます。システムコマンドを使いたくなくて、他のBIOS情報を掘り起こさないようにするために、ROM情報を提供しているdmidecodeソースコードの部分を分析することもできます。

+0

他の方法ですか?私たちは理事会にこのような命令をしていませんが、セキュリティアドバイザは外部プログラムを呼び出すことを強く推奨しています。 – Bogi

+1

これは、ボードにSMBIOS/DMIがある場合にのみ機能します。これは、組み込みシステム、あるいは実際にはx86以外のシステムには与えられていません。 – Clifford

+0

私はdmidecodeが/ dev/mem経由で直接メモリにアクセスすると信じています。あなたはあなたのボードがDMIを持っていると仮定して、ギルドとしてdmidecode sourceを使って同じことをすることができます。 (私の組み込みx86デバイスはありません) – tMC

1

/proc/meminfoをお持ちですか?それはあなたに必要な情報を与えるでしょうか?

0

カーネルまたはブートローダのソースを参照して、起動時の動作を確認してください。この方法は、お使いのハードウェアに固有の可能性があります。

1

あなたのLinuxカーネルが2.6より新しいと仮定して、/ proc/mtd ***で一般情報を確認できます。

それが十分でない場合は、MTD-ツールのソースコードをチェック:mtdinfo.c

http://gitorious.org/0xdroid/external_mtd_utils/blobs/e783e75e09b4a0a519665afd7bdeaf2985e7a09c/ubi-utils/src/mtdinfo.c

は、それらのprint_XXXX_info機能を確認してください。 そのためには、外部ライブラリが必要です。

mtdインターフェイス用のkernel apiはしばらくの間変更されるため、カーネルに適切なバージョンがインストールされていることを確認してください。

関連する問題