linux mtd分区应用操作sample之某分区擦除

2024-06-03 01:12

本文主要是介绍linux mtd分区应用操作sample之某分区擦除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是擦除?
把flash相关的区域数据bit置为1的过程
在这里插入图片描述

#include <mtd/mtd-user.h>
#include <mtd/mtd-abi.h>
struct erase_info_user {__u32 start;   // 起点  __u32 length;  //长度    块大小对齐   不然报参数失败    
};struct erase_info_user64 {__u64 start;__u64 length;
};
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <mtd/mtd-user.h>
#include <stdint.h>
#include <unistd.h> 
#include <sys/time.h>
#include <string.h>int main()
{int mtd_fd;                           // 文件描述符struct erase_info_user erase;     // 擦除信息结构体unsigned int erase_start, erase_length;struct mtd_info_user mtd_info;struct timeval tv1,tv2;// 打开MTD设备mtd_fd = open("/dev/mtd1", O_RDWR);if (mtd_fd < 0) {perror("Error opening MTD device");return EXIT_FAILURE;}// 获取MTD设备信息if (ioctl(mtd_fd, MEMGETINFO, &mtd_info)) {perror("Error getting MTD info");close(mtd_fd);return EXIT_FAILURE;}printf("MTD Device Info:\n");printf("  type: %llu\n", mtd_info.type);   //识别是nor flash 还是 nand flash printf("  flags: %llu\n", mtd_info.flags);printf("  Size: %llu\n", mtd_info.size);  // 分区的大小 printf("  Erase Size: %u\n", mtd_info.erasesize);  // 擦除块大小printf("  Write Size: %u\n", mtd_info.writesize);printf("  oobsize Size: %u\n", mtd_info.oobsize);printf("  padding Size: %u\n", mtd_info.padding);// 设置擦除的起始地址和长度// 这些值应该基于设备的擦除块大小和你要擦除的区域erase_start = 0; // 擦除起始地址erase_length = 16*mtd_info.erasesize; // 擦除块数   // 1M空间// 填充擦除信息结构体erase.start = erase_start;erase.length = erase_length;gettimeofday(&tv1, NULL);// 执行擦除操作if (ioctl(mtd_fd, MEMERASE, &erase) < 0) {perror("Error erasing MTD device");close(mtd_fd);return EXIT_FAILURE;}gettimeofday(&tv2, NULL);printf("millisecond: %ld\n",(tv2.tv_sec * 1000 + tv2.tv_usec / 1000) - ( tv1.tv_sec * 1000 + tv1.tv_usec / 1000));printf("Erase operation successful. erase.length is%d\n",erase.length);// 关闭MTD设备close(mtd_fd);return EXIT_SUCCESS;
}
./mtd_test 
MTD Device Info:type: 3flags: 3072Size: 9437184Erase Size: 65536Write Size: 1oobsize Size: 0padding Size: 0
millisecond: 3797
Erase operation successful. erase.length is1048576

实践验证了 擦除1M nor flash(64K 块大小)花了3.7S 真的好慢

在这里插入图片描述

这篇关于linux mtd分区应用操作sample之某分区擦除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025618

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W