mkfs.ubifs -c 计算工具

news2025/1/17 0:12:47

mkfs.ubifs -c 输入的logical erase block count,是指除掉ubi文件系统自身管理和坏块处理后的逻辑可擦除最大块数。

参考信息如下:

logical erase block count 计算工具,实现代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
import xml.sax
import sys
import time
import getopt
import math

class ANSI:
    RED = '\033[31m'
    RESET = '\033[m'

def print_red(text):
    print(ANSI.RED + text + ANSI.RESET)
def contains_chars(s,chars):
    for c in chars:
        if c in s:
            return True
    return False

def trams_str_digital(text):
    tramsNumber = 0
    tramstr = text
    if contains_chars(tramstr,'M'):
        valueStr = tramstr.replace('M','')
        tramsNumber = int(valueStr) * 1024 * 1024
    elif contains_chars(tramstr,'m'):
        valueStr = tramstr.replace('m','')
        tramsNumber = int(valueStr) * 1024 * 1024
    elif contains_chars(tramstr,'K'):
        valueStr = tramstr.replace('K','')
        tramsNumber = int(valueStr) * 1024
    elif contains_chars(tramstr,'k'):
        valueStr = tramstr.replace('k','')
        tramsNumber = int(valueStr) * 1024
    else:
        tramsNumber = int(tramstr)
    return tramsNumber

def show_help():
    print("ubi_lebc.py -e <logical erase block size> -s <mtd volume total size>")
    print("eg:ubi_lebc.py -e 124K -s 30M")

'''
input:mtd volume total size
input:logical erase block size
input:Physical Erase Block size
out:maximum logical erase block count
'''
if __name__ == "__main__":
    peb_size = 128 * 1024
    leb_size = 124 * 1024
    lebc_max = 0

    mtd_total_size=0
    try:
        opts, args = getopt.getopt(sys.argv[1:],"hb:e:s:",['help',"block_size=","erase_size=","size="])
        for opt, arg in opts:
            if opt in ('-b',"--block_size="):
                peb_size = trams_str_digital(arg)
            elif opt in ('-e',"--erase_size="):
                leb_size = trams_str_digital(arg)
            elif opt in ('-s',"--size="):
                mtd_total_size = trams_str_digital(arg)
            elif opt in ("-h","--help"):
                show_help()
                sys.exit(0)
            else:
                show_help()
                sys.exit(0)
    except getopt.GetoptError as e:
        print(sys.argv)
        print(e.msg)
        print(e.opt)
        show_help()
        sys.exit(0)

    if mtd_total_size == 0:
        show_help()
        sys.exit(0)

    block_total_number = mtd_total_size//peb_size
    bad_block_max = math.ceil(block_total_number * 0.02)
    if(bad_block_max < 2):
        bad_block_max = 2

    over_head = peb_size - leb_size
    over_head_total_size = over_head * (block_total_number - bad_block_max - 4)
    loss_total_size = (bad_block_max + 4) * peb_size
    overhead_manager_size = over_head_total_size + loss_total_size
    user_data_size = mtd_total_size - overhead_manager_size
    lebc_max = int(user_data_size // leb_size)
    #print("hysical Erase Block size:"+ "%dK" % (peb_size/1024) + " logical erase block size:" + "%dK" % (leb_size/1024) + " out logical erase block count:" + "%d" % lebc_max)
    print(lebc_max)
    sys.exit(0)

python ubi_lebc.py -b 128K -e 124K -s 40M
运行结果为:309

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1790799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI大模型】基于Langchain和Openai借口实现英文翻译中文应用

&#x1f680; 作者 &#xff1a;“大数据小禅” &#x1f680; 文章简介 &#xff1a;本专栏后续将持续更新大模型相关文章&#xff0c;从开发到微调到应用&#xff0c;需要下载好的模型包可私。 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 目…

智慧城市的规划与实施:科技引领城市运行效率新飞跃

随着信息技术的飞速发展&#xff0c;智慧城市的构想正逐步成为现实。作为地理信息与遥感领域的研究者&#xff0c;我深知在这一转型过程中&#xff0c;技术的创新与应用是提升城市运行效率的关键。本文旨在探讨如何利用地理信息系统&#xff08;GIS&#xff09;、遥感技术、大数…

【深度学习入门篇一】阿里云服务器(不需要配环境直接上手跟学代码)

前言 博主刚刚开始学深度学习&#xff0c;配环境配的心力交瘁&#xff0c;一塌糊涂&#xff0c;不想配环境的刚入门的同伴们可以直接选择阿里云服务器 阿里云天池实验室&#xff0c;在入门阶段跑个小项目完全没有问题&#xff0c;不要自己傻傻的在那配环境配了半天还不匹配&a…

Win11中Yolo V10安装过程记录

1. 配置Anaconda环境&#xff1a; conda create -n yolov10 python3.9 conda activate yolov10 pip install -r requirements.txt pip install -e . 这里由于torch2.0.1太慢&#xff0c;单独用pytorch官网安装流程&#xff08;选择支持GPU版本&#xff09;&#xff1a; con…

dvwa靶场的下载、配置

目录 下载 配置 连接数据库 搭建网站&#xff08;可选&#xff09; 配置靶场 下载 百度网盘链接&#xff1a;https://pan.baidu.com/s/1oK2UzKFxIIPQkhz6hD8WFQ?pwdpbb2 提取码&#xff1a;pbb2 迅雷链接&#xff1a;https://pan.xunlei.com/s/VNzHo9gXgbsk5E8tcx6Yek…

Llama模型家族之RLAIF 基于 AI 反馈的强化学习(一)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

表达式求值中的“整型提升”概念

一.基本原理和概念 如&#xff1a;代码 char a&#xff0c;b&#xff0c;c &#xff1b; a b c &#xff1b; 该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后&#xff0c;再将数据进行截断存放在内存存放变量 a 的空间中。 &#xff08;1&#xff09;提升和截…

LeetCode25_K个一组翻转链表

. - 力扣&#xff08;LeetCode&#xff09; 一、题目描述 二、过程模拟 1. 第一步 2. 第二步&#xff1a;子链表分组 3. 第三步&#xff1a;断开前后两组 4. 第四步&#xff1a;翻转start到end的部分 5. 第五步&#xff1a;连接翻转好的前半部分和未翻转的后半部分&#xff…

操作系统真象还原:完善内核

第6章-完善内核 这是一个网站有所有小节的代码实现&#xff0c;同时也包含了Bochs等文件 6.1函数调用约定简介 函数参数存储在栈空间&#xff0c;这有两个好处&#xff1a; 首先&#xff0c;每个进程都有自己的栈&#xff0c;这就是每个内存自己的专用内存空间。其次&#…

安装和使用conda

Conda 是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并在它们之间轻松切换。可以创建多个环境&#xff0c;并在环境中使用不同的python版本&#xff0c;并安装环境专属的python依赖包&#xff0c;可以用来避免python…

PyQt5+SQLlite3基于邮箱验证的登陆注册找回系统

本期教程投稿一篇实用性的基于邮箱登陆注册找回于一体的系统&#xff0c;在日常的开发和软件应用中非常常见&#xff0c;并且也使用了逻辑与界面分离的写法&#xff0c;那这个文章将详细的为大家介绍整个流程&#xff0c;但是细节的话还需要大家自己去完善&#xff0c;也欢迎大…

景源畅信数字:抖音直播人气品类有哪些?

随着短视频平台的兴起&#xff0c;抖音成为了人们日常生活中不可或缺的娱乐方式之一。而抖音直播作为平台的重要组成部分&#xff0c;吸引了大量的观众和主播参与。那么&#xff0c;在抖音直播中&#xff0c;哪些品类能够吸引更多的人气&#xff0c;成为观众们关注的焦点呢?接…

C++笔试强训day39

目录 1.神奇的字母&#xff08;二&#xff09; 2.字符编码 3.最少的完全平方数 1.神奇的字母&#xff08;二&#xff09; 链接https://ac.nowcoder.com/acm/problem/205832 看输出描述即可知输出次数最多的那个字母即可。 哈希表直接秒了&#xff1a; #include <iostre…

网络安全快速入门(十五)(中)用户的文件属性及用户相关文件详解

15.4 序言 我们之前已经了解了关于用户管理的一些基础命令&#xff0c;本章节我们就来了解一下关于文件权限的一些小知识以及基于某些文件来手动创建一个用户&#xff0c;话不多说&#xff0c;我们开始吧&#xff01; 15.5 文件权限 在linux中&#xff0c;文件都是通过查看属主…

基于深度学习YOLOv8\YOLOv5的骨科骨折诊断检测系统设计

本文将介绍基于深度学习YOLOv8\YOLOv5PySide6SQLite的骨折检测识别骨科诊断系统&#xff0c;该系统基于YOLOv8算法&#xff0c;并与YOLOv5版本进行比较&#xff0c;该系统不仅实现了对骨折骨损伤的识别&#xff0c;还提供了包括用户认证管理、模型快速切换及界面个性化定制在内…

我成功创建了一个Electron应用程序

1.创建electron项目命令&#xff1a; npm create quick-start/electron electron-memo 2选择&#xff1a;√ Select a framework: vue √ Add TypeScript? ... No √ Add Electron updater plugin? ... Yes √ Enable Electron download mirror proxy? ... Yes 3.命令&am…

【Qt知识】disconnect

在Qt框架中&#xff0c;disconnect函数用于断开信号与槽之间的连接。当不再需要某个信号触发特定槽函数时&#xff0c;或者为了防止内存泄漏和重复执行问题&#xff0c;你可以使用disconnect来取消这种关联。disconnect函数的基本用法可以根据不同的需求采用多种形式&#xff0…

JAVA:浅谈Stream流

在阅读本文章之前请了解什么叫 Lambda表达式 以及 如何使用 一、Stream流 Stream流的使用步骤&#xff1a; 获得一条Stream流&#xff0c;并且将数据放上去 单列集合获取Stream流 // 1. 单列集合获取Stream ArrayList<String> list new ArrayList<String>()…

YOLO10:手把手安装教程与使用说明

目录 前言一、YOLO10检测模型二、YOLO安装过程1.新建conda的环境 yolo10安装依赖包测试 总结 前言 v9还没整明白&#xff0c;v10又来了。而且还是打败天下无敌手的存在&#xff0c;连最近很火的RT-DETR都被打败了。那么&#xff0c;笑傲目标检测之林的v10又能持续多久呢&#…

【CTF Web】BUUCTF BUU LFI COURSE 1 Writeup(代码审计+PHP+文件包含漏洞)

BUU LFI COURSE 1 1 点击启动靶机。 解法 <?php /*** Created by PhpStorm.* User: jinzhao* Date: 2019/7/9* Time: 7:07 AM*/highlight_file(__FILE__);if(isset($_GET[file])) {$str $_GET[file];include $_GET[file]; }如果GET请求中接收到file参数&#xff0c;就会…