我需要从C程序中获得有关嵌入式Linux上闪存总大小和闪存类型的信息。当内核启动时,我可以看到这些信息,但找不到任何其他方法来获取它们。这可能吗?
您有/proc/meminfo吗?这能给你所需要的信息吗?
我假设您的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接口的内核api偶尔会更改,因此请确保您的内核版本正确。
是的。使用linux的dmidecode实用程序是可能的。这是的样本代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[100] = "dmidecode | grep -i 'ROM Size'";
system(str);
return 0;
}
它会给你ROM大小,如果你不grep ROM大小,那么它也会提供其他BIOS信息。如果您的嵌入式Linux没有Dmidecode实用程序,那么您可以从这里获得源代码。您还可以分析dmidecode源代码中提供ROM信息的部分,以防您不想使用系统命令,也不想挖掘其他BIOS信息。
查看内核和/或引导程序源代码,看看它在引导时是如何做到的。该方法可能特定于您的硬件。