嵌入式linux下获取flash分区大小

简介: 嵌入式linux下获取flash分区大小

嵌入式系统中,由于flash存储空间有限,或者是存储数据,实现数据的循环删除,需要获取到分区的使用情况,可以通过系统下的函数statfs来获取使用情况;实现代码如下:


flashInfo.cpp

#include <stdio.h>                                                                                                                  
#include <stdlib.h>
#include <unistd.h>
#include <sys/vfs.h>
 
typedef unsigned long long u64;
 
//unit: 0-MBytes, 1-KBytes, default MBytes
int getPartitionUse(const char *dir, size_t &totleSize, size_t &freeSize, int unit)
{
    struct statfs diskInfo;  
    int ret = statfs(dir, &diskInfo);  
  if ( ret != 0 )
  {
    perror("getPartitionUse statfs error ");
    return ret;
  }
  
    u64 allBlocks = diskInfo.f_bsize;  
    u64 tmpTotalSize = allBlocks * diskInfo.f_blocks;  
    u64 tmpFreeDisk = diskInfo.f_bfree*allBlocks;  
    totleSize = tmpTotalSize>>20;  
  freeSize  = tmpFreeDisk>>20;
  
  if(unit == 0)
  { 
    totleSize = tmpTotalSize>>20;  
    freeSize  = tmpFreeDisk>>20;  
  }
  else if( unit == 1 )
  {
    totleSize = tmpTotalSize>>10;  
    freeSize  = tmpFreeDisk>>10; 
  }
  
  return 0;
}
 
int main()
{
  size_t totleSize = 0;
  size_t freeSize = 0;
  
    getPartitionUse("/", totleSize,freeSize, 0);
    printf ("system  total=%dMB, free=%dMB\n", totleSize, freeSize);  
 
    getPartitionUse("/work/data", totleSize,freeSize, 0);
    printf ("data  total=%dMB, free=%dMB\n", totleSize, freeSize);  
  
    getPartitionUse("/work", totleSize,freeSize, 0);
    printf ("config  total=%dMB, free=%dMB\n", totleSize, freeSize);  
}


编译:

mipsel-linux-g++ flashInfo.c -o flashInfo

运行结果如下:


这样可以在界面或者内置web上用进度条的形式显示出来,比较直观。

目录
相关文章
|
17天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
65 15
|
1月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
103 13
|
5月前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
5月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
208 3
|
5月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
230 0
|
5月前
|
存储 Linux 5G
linux操作系统初始化后,再也不用手动分区了
linux操作系统初始化后,再也不用手动分区了
38 0
|
5月前
|
Linux
在Linux中,如何创建一个分区?
在Linux中,如何创建一个分区?
|
5月前
|
Linux 开发工具
在Linux中,如何创建一个新的分区并格式化为EXT4文件系统?
在Linux中,如何创建一个新的分区并格式化为EXT4文件系统?
|
8月前
|
存储 安全 Linux
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
110 0
|
Linux 网络安全 虚拟化
使用growpart工具完成Linux系统盘分区扩容及文件系统扩展的配置案例
使用growpart工具完成Linux系统盘分区扩容及文件系统扩展的配置案例
1134 1
使用growpart工具完成Linux系统盘分区扩容及文件系统扩展的配置案例