【PyCharm Community Edition】:分析map文件统计RAM及ROM的使用

这篇具有很好参考价值的文章主要介绍了【PyCharm Community Edition】:分析map文件统计RAM及ROM的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前序

当我们的编译器不方便统计代码的RAM及ROM的使用总数量时,我们就需要分析.map文件,手动统计其具体使用量。

文件遍历

当我们需要选择不同文件做相同的逻辑处理时,我们就会用到一种遍历的方法,来获取需要被选择的文件(比如.map文件);在python标准库中遍历文档主要是用到的方法:walk()。

涉及函数:文章来源地址https://www.toymoban.com/news/detail-708972.html

  • walk
    【PyCharm Community Edition】:分析map文件统计RAM及ROM的使用,【PyCharm Community Edition 】,pycharm,ide,python

WalkFiles.py

import os,sys
#########################################################################################
# walk  依赖的参数解释:
# root  表示当前正在访问的文件夹路径
# dirs  表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list

def WalkFiles_FindMap(filePath=".\map"):               #可以在这里指定路径
    allfiles = []
    for root, dirs, files in os.walk(filePath):
        for f in files:
            #print("files",os.path.join(root, f))
            fname = os.path.join(root, f)
            if fname[-4:] == ".map":                    #只查找后缀名为.map文件
                allfiles.append(os.path.join(root, f))  #查找到后添加到数组中
        for d in dirs:
            WalkFiles_FindMap(os.path.join(root, d))            #递归
            #print("dirs",os.path.join(root, d))
    return allfiles

def WalkFiles_SelectFile():
    files = WalkFiles_FindMap()
    if len(files) < 1:
        return None
    else:
        selected = 0
        if len(files) > 1:
            no = 0
            for file in files:
                print("%d:   %s" % (no,os.path.abspath(file)))
                no =no +1
            selected = int(input("请选择哪个文件?\r\n_____"))
            if (selected >= len(files)) or (selected < 0):
                print("无效的输入")
                return None
        print("您选择的是:",os.path.abspath(files[selected]))
        return os.path.abspath(files[selected])#返回绝对路径
#########################################################################################

统计方法

在单片机中:

  • ROM地址区间一般是0x0-------开始
  • RAM地址区间一般是0xf-------开始

涉及函数:

  • open(文件打开)
  • split(分割函数)
  • int(转换成16进制)

AnalyzerMap_Cfg.py

class global_var:
    Image_Summary = "Image Summary"
    Module_Summary = "Module Summary"
    Global_Symbols = "Global Symbols"

    RAM_BlockSizeLargerThanPrintfEn = 1 #1:打印使能
    RAM_BlockSizeLargerThan = 4*1024#单个长度超过此值时决定打印

AnalyzerMap.py

from ColorInfo import ColorLogger
import AnalyzerMap_Cfg as map_cfg
import openpyxl
import os
import xlrd

logger = ColorLogger()

class tMcuFlashInfo():
    num = 0
    singleInfoByDict = {
   }

class tMcuFlashSingleInfo():
    name = ''
    startAdd = ''
    endAdd = ''
    usedLen = 0
    totalLen = 1

def addessJudge(line,address,length,tMcuFlashInfo):
    i = 0
    while i < tMcuFlashInfo.num:
        address_min = tMcuFlashInfo.singleInfoByDict[0][i].startAdd
        address_max = tMcuFlashInfo.singleInfoByDict[0][i].endAdd
        if int(address, 16) >= int(address_min, 16) and int(address, 16) <= int

到了这里,关于【PyCharm Community Edition】:分析map文件统计RAM及ROM的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析

    STM32中堆栈是为了存储不同信息而开辟的空间,具体对应于启动文件中的head和stack所定义的内存空间。 STM32中,堆向高地址增长,栈向低地址增长。 堆:是用户调用malloc时申请的内存空间。 栈:临时创建的局部变量(一般的局部变量+const修饰的局部变量),函数入口参数,函

    2024年02月12日
    浏览(42)
  • Shift_RAM ip核的使用——ROM调用mif文件、传至Shift_RAM输出

    最近在做sobel、canny边缘检测需要使用shift_ram做3*3卷积模板,在这一块纠结过一阵子,最后还是想写篇博客沉淀一下。这篇博客就举例记录一下: mif文件输入shift_ram ip核,生成2条tap查看输出效果   新建mif文件,保持默认的256字数和8位字长   可以使用mif生成软件,也可以按

    2024年02月03日
    浏览(50)
  • RAM和ROM

    1、RAM ​RAM又称为随机访问存储器(Random-Access Memory),其主要分为静态和动态两种。静态的RAM简写为SRAM,动态的RAM简写为DRAM。SRAM的访问速度比DRAM要快得多,因此价格也要贵得多,在应用上,SRAM主要用作高速缓存存储器,也就是CPU和主存之间的L1、L2高速缓存,DRAM一般作为计算

    2024年02月08日
    浏览(43)
  • RAM与ROM的区别

    I.MX6U-ALPHA 开发板上带有一个 256MB/512MB 的 DDR3 内存芯片,一般 Cortex-A 芯 片自带的 RAM 很小,比如 I.MX6U 只有 128KB 的 OCRAM 。如果要运行 Linux 的话完全不够 用的,所以必须要外接一片 RAM 芯片。 对于 Cortex-A 系列芯片而言, uboot,Linux内核 等是在 DDR 上运行的。 例如之前所有的裸

    2024年02月06日
    浏览(51)
  • Unity获取Android手机的RAM和剩余RAM和ROM

    项目工作需要,在游戏APP运行时,获取当前手机的剩余运行内存RAM和ROM。并且要适用于不同的项目,思来想去。最终想到这样的办法,具体的获取的方法在Android工程中实现,然后生成aar ,在Unity中调用。 用AndroidStudio创建一个新项目。创建一个com.pub.mylibrary包名。然后创建一

    2024年02月16日
    浏览(38)
  • 内存RAM和ROM之间的区别

    ROM和RAM都是一种存储技术,只是两者原理不同,RAM为随机存储,掉电不会保存数据,而ROM可以在掉电的情况下,依然保存原有的数据。ROM和RAM指的都是半导体存储器。本来的含义是:ROM是Read Only Memory的意思,也就是说这种存储器只能读,不能写。而RAM是Random Access Memory的缩写

    2023年04月08日
    浏览(41)
  • Verilog RAM/ROM的数据初始化

    FPGA设计中RAM和ROM作为存储器用来存储可变或不可变类型的数据。 ROM初始化一般是加载固定数据,RAM声明时默认为不定态数据,初始化时可以让数据为全1或者全0。 复位时按地址写入初值 使用initial 和 for循环来初始化 用于初始化为有规律的数据, RAM初始化常使用这种方式。

    2024年02月04日
    浏览(43)
  • 【物联网】ROM、RAM和FLASH的区别

    在计算机领域,我们经常听到ROM、FLASH和RAM这些术语,它们是计算机中不同类型的存储器。虽然它们都用于存储数据,但它们之间有着明显的区别。本文将详细介绍ROM、FLASH和RAM的区别,并给出具体的例子和解释。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣

    2024年02月08日
    浏览(32)
  • 简语RAM、ROM、flash、eMMC(通俗易懂)

    先来看RAM与ROM RAM: Random-Access Memory的缩写,意思为“随机存取存储器” ROM:Read-Only Memory的缩写,意思为“只读存储器” 总体来看:都是存储器 最大区别:ROM可以在停止供电的时候仍然保存着数据;RAM在停止供电的时候数据丢失 RAM分两大类:         第一类 称为静态

    2023年04月21日
    浏览(39)
  • Vivado:ROM和RAM的verilog代码实现

    本文主要介绍ROM和RAM实现的verilog代码版本,可以借鉴参考下。 Read-only memory(ROM)使用ROM_STYLE属性选择使用寄存器或块RAM资源来实现ROM,示例代码如下: RAM设计方式有很多,可以用BRAM、LUT、分布式RAM、URAM实现,可以使用RAM_STYLE属性强制规定使用的资料类型。 (*rom_style = \\\"bl

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包