精华内容
下载资源
问答
  • 读取手机RAM内存

    2014-07-22 09:46:18
    读取手机的RAM内存值,总容量和可用容量。
  • 首先要了解一颗芯片的ram内存空间,必须查看的就是内存分配链接脚本了。692X系列的链接脚本在flash文件夹里边的sdk.ld文件。打开这个文件: 首先看到这个芯片有128K的ram,最要关注的是其中的sdk ram,这是用户空间...

    先复习一下C工程文件编译产生机器可执行文件后变量和代码的存储方式:

    IDE链接目标代码生成目标机器可执行文件存储态(比如51单片机代码编译后产生的hex文件,692x的fw文件)后,通常包含几个段:

    ①text代码段

    ②bss段,即未初始化数据段

    ③data段,初始化数据段

    当然如果包含字符串常量,还有rdata段等等

    这里所说的段都是程序非运行时数据的存储态的分类,数据不仅有存储态,还包括运行时态,而运行时态又包含了堆和栈

    C代码中的不同变量,代码分配在哪一个段,是嵌入式开发必备知识之一。

    用以上知识结合692X代码探讨内存分配,可以更好的理解692X的代码,内存管理方式。

     

    首先要了解一颗芯片的ram内存分配情况,必须查看的就是内存分配链接脚本了。692X系列的链接脚本在flash文件夹里边的sdk.ld文件。打开这个文件:

    在以上MEMORY中:

    一、有128K的ram,具体分为5部分空间:

    1,保留区reserved_ram,大小0x00100

    2,ram0,大小68K-0x200

    3,overlay_task, 大小8K+128byte

    4,overlay_ram0 ,大小29K-128byte

    5,stack_ram  ,大小0x1b00

    二、最后面的code0是代码区

    bss段在哪?

    看到脚本的56行,这里 .= ORIGIN(ram0) 把当前位置定位到ram0的开始地址,57行.bss就是以上所述未初始化数据段,59行意思是除了那些指定段的未初始化数据以外,所有的未初始化数据都放在这里,我们定义的凡是未初始化的静态变量,未初始化全局变量,未初始化的数组,未初始化的xxx全都会放在bss段所在的ram0中,,最后81行> ram0表示所有以上数据都需要放在ram0限定的空间里,如果里面的未初始化数据过大,则编译器可能报错。

    再看data初始化了的数据段:

    分析同以上bss段,初始化了的所有全局变量,数据都是放在ram0里边。

    再看代码段text:

     

    在193行,当前地址已经定位到了code0,code0已不是芯片本身的ram地址,而是cpu外挂的flash的地址。再结合202行可以看出,所有未指定段的函数编译后生成的代码指令都放在了这里面,这里之所以说未指定段的函数,是因为每一个函数我们都可以用attribute属性配置设置,放到任意逻辑地址位置,具体设置方法这里不再赘述。202行还注意到:.rodata*  这个就是只读数据段,在程序里定义的所有const修饰的常量,数组以及字符串常量都会放在flash里面,当然这里还包括我们熟悉的提示音数据,VM数据等等!

     

    接下来看overlay_task,大小为68k-0x200,

    > overlay_task,意思是把上面的这些段分配到这个overlay_task空间里,上面分析可知这个地址空间是属于RAM的,这里的段有蓝牙模式下的tws段,音乐模式下文件系统以及ui段,fm模式段等,他们都是同一个地址,分时复用,即在每个模式下都是相同地址,只是定义的段名称不同,这些地址里的所有数据在转换模式后会被强制清零。如果在蓝牙模式下没有开启tws功能,那么可以把定义的全局数组等放在tws段,总共8K空间,注意只能在蓝牙模式下使用,因为转换模式后所有overlay段都会清零,在非蓝牙模式下tws段将不复存在。非常重要一点就是一定不能在开机进入任何模式之前使用这个overlay ram,开机后就会死机,在使用(包括初始化)之前一定要先初始化。这个是某一个模式下挪出空间的一种。再看后面overlay ram0:         这里同理每个overlay段都是同一个地址,大概有29K空间,这29K空间,只有MP3模式是用剩下几百个字节的,其他模式都剩下比较大的空间,这些空间在非MP3模式就可以拿来用,比如在蓝牙模式可以把代码放在.bt_sbc段,这个段有比较大空间没有使用,只要没有报错都可以放,试过放过8K多空间都是可以的。如果在LINEIN状态就更多了,29K+空间完全没有使用,可以定义overlay7放29K的代码空间。在非MP3状态最少都有7 8K的overlay空间使用,这个空间跟以上分析的BSS段,DATA段,TEXT段并不是同一个地址空间。如果一定要在MP3状态挪出空间来有没有办法?肯定有,把music_mem空间改小,原来SDK这个空间是MP3解码用的,使用的是7*1024的32bit空间,可以把空间压缩到5*1024,这个可以5*1024的32bit空间够播放mp3文件了,至于其他格式的,暂时还没有验证过。这样的话,各个模式下整个代码可以完全省出8K+的空间来了。

    展开全文
  • 对于51单片机的RAM内存分配(包含栈的分配) 我使用的是SH79F3283,内部RAM有256字节,由常规寄存器、静态存储区和堆栈组成的,创建一个新的程序默认占用9个字节RAM,其中分别为R0到R7的常规寄存器和一字节的栈空间...

    对于51单片机的RAM内存分配(包含栈的分配)

    我使用的是SH79F3283,内部RAM有256字节,由常规寄存器、静态存储区和堆栈组成的,创建一个新的程序默认占用9个字节RAM,其中分别为R0到R7的常规寄存器和一字节的栈空间(一字节的栈空间是在启动文件里暂时分配的)启动文件里对栈空间的分配程序里定义的全局变量会放在静态存储区,局部变量、形参、嵌套函数地址和字符串首地址会放在栈区,字符串会放在ROM区,00h-1Fh 32个字节是4组常规寄存器,通过 PSW中的RS1、RS0两位来选择使用哪一组,默认第0组,占用地址00h-07h,接着就是静态存储区(从地址08h开始),最后是堆栈空间,本实验中没申请堆空间,所以堆空间不存在。
    栈空间多大呢
    从栈的开始地址到FFh(51单片机是7Fh,52单片机是FFh)就是栈空间的地址。

    展开全文
  • Linux查看RAM内存信息

    万次阅读 2019-04-28 14:34:00
    查看RAM使用情况最简单的方法是通过/proc/meminfo。 这个动态更新的虚拟文件列出了详细的内存使用情况。 cat /proc/meminfo 命令输出结果如下: MemTotal: 131792736 kB MemFree: 110845344 kB MemAvailable: ...
        

    1.查看/proc/meminfo文件

    查看RAM使用情况最简单的方法是通过/proc/meminfo。
    这个动态更新的虚拟文件列出了详细的内存使用情况。

    cat /proc/meminfo
    命令输出结果如下:

    MemTotal:       131792736 kB
    MemFree:        110845344 kB
    MemAvailable:   120877616 kB
    Buffers:            2132 kB
    Cached:         10666068 kB
    SwapCached:            0 kB
    Active:         15042280 kB
    Inactive:        4246612 kB
    Active(anon):    8874744 kB
    Inactive(anon):   240216 kB
    Active(file):    6167536 kB
    Inactive(file):  4006396 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:       4194300 kB
    SwapFree:        4194300 kB
    Dirty:                16 kB
    Writeback:             0 kB
    AnonPages:       8620816 kB
    Mapped:           202296 kB
    Shmem:            494268 kB
    Slab:             668612 kB
    SReclaimable:     484456 kB
    SUnreclaim:       184156 kB
    KernelStack:       12272 kB
    PageTables:        29540 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:    70090668 kB
    Committed_AS:   31416932 kB
    VmallocTotal:   34359738367 kB
    VmallocUsed:      491540 kB
    VmallocChunk:   34290823164 kB
    HardwareCorrupted:     0 kB
    AnonHugePages:   8333312 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    DirectMap4k:      223468 kB
    DirectMap2M:     7047168 kB
    DirectMap1G:    126877696 kB
    

    2.free命令

    free命令是一个快速查看内存使用情况的方法,
    使用-h参数可以输出方便查看的结果。

    free -h
    命令输出结果如下:

                  total        used        free      shared  buff/cache   available
    Mem:           125G        9.2G        105G        482M         10G        115G
    Swap:          4.0G          0B        4.0G
    

    可以看到总的物理内存为125G,
    已经被使用的内存为9.2G,
    另外被系统缓存使用的内存为10G,
    还剩余105G的空闲内存,
    由于系统使用的10G缓存可以在需要时被回收,
    实际可用内存为115G。

    3.ps命令

    ps命令可以实时的显示各个进程的内存使用情况。
    查看内存使用信息,重要的参数说明如下:

    参数 英文说明 中文说明
    %MEM percent of physical memory used 物理内存使用率
    VSZ total amount of virtual memory used 总的虚拟内存使用量
    RSS total amount of physical memory used 总的物理内存使用量

    可以使用"–sort"选项对进程进行排序,例如按RSS进行排序:
    ps aux --sort -rss
    命令输出结果如下:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root     22633  0.1  4.8 23799212 6425856 ?    Sl   Apr18  15:39 java -Dproc_rangeradmin
    mysql    32134  0.1  1.0 17463044 1364236 ?    Sl   Apr17  18:17 /home/mysql/mysql-5.7.25-linux-glibc2.12-x86_64/bin/mysqld --basedir=/home/mysql/m
    solr     10360  0.0  0.4 7340152 530224 ?      Sl   Apr16  13:35 /usr/java/jdk1.8.0_151/bin/java -server -Xms2g -Xmx2g -XX:NewRatio=3 -XX:SurvivorR
    root      8323  0.0  0.1 698056 231796 ?       Ssl  Mar25   6:03 /usr/sbin/rsyslogd -n
    root      1278  0.0  0.1 262704 156520 ?       Ss   Mar25   3:12 /usr/lib/systemd/systemd-journald
    gdm       2601  0.0  0.1 2157664 145200 ?      Sl   Mar25   9:58 /usr/bin/gnome-shell
    root      2494  0.0  0.0 417756 24700 tty1     Ssl+ Mar25   0:13 /usr/bin/X :0 -background none  
    ......
    

    4.top命令

    top命令提供了实时的运行中的程序的资源使用统计。
    你可以根据内存的使用和大小来进行排序。
    查看内存使用信息,重要的参数说明如下:

    参数 中文说明
    VIRT 进程占用的虚拟内存
    RES 进程占用的物理内存
    SHR 进程使用的共享内存
    %CPU 进程占用CPU的使用率
    %MEM 进程使用的物理内存和总内存的百分比

    top命令输出结果如下:

    top - 14:24:46 up 33 days, 21:22,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks: 370 total,   1 running, 369 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.5 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st, 99.4 id_exact,  0.0 hi_exact,  0.0 irq_exact
    KiB Mem : 13179273+total, 11080779+free,  9615360 used, 11369584 buff/cache
    KiB Swap:  4194300 total,  4194300 free,        0 used. 12084785+avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    18185 root      20   0  157984   2452   1496 R   5.6  0.0   0:00.03 top
        1 root      20   0  195988   9168   4084 S   0.0  0.0   9:13.49 systemd
        2 root      20   0       0      0      0 S   0.0  0.0   0:00.94 kthreadd
        3 root      20   0       0      0      0 S   0.0  0.0   0:01.21 ksoftirqd/0
        5 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
        8 root      rt   0       0      0      0 S   0.0  0.0   0:00.55 migration/0
        9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
       10 root      20   0       0      0      0 S   0.0  0.0   6:44.59 rcu_sched
       11 root      rt   0       0      0      0 S   0.0  0.0   0:12.11 watchdog/0
       12 root      rt   0       0      0      0 S   0.0  0.0   0:10.40 watchdog/1
    

    退出top命令使用Ctrl+C组合键。

    5.vmstat命令

    vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。
    例如内存情况,不仅显示物理内存,也统计虚拟内存。
    vmstat -s
    命令输出结果如下:

        131792736 K total memory
          9615604 K used memory
         15133592 K active memory
          4193128 K inactive memory
        110806776 K free memory
             2132 K buffer memory
         11368224 K swap cache
          4194300 K total swap
                0 K used swap
          4194300 K free swap
          7590401 non-nice user cpu ticks
            16543 nice user cpu ticks
          1001961 system cpu ticks
       9362676485 idle cpu ticks
            15230 IO-wait cpu ticks
                0 IRQ cpu ticks
            17625 softirq cpu ticks
                0 stolen cpu ticks
          2396149 pages paged in
         39214328 pages paged out
                0 pages swapped in
                0 pages swapped out
        758920765 interrupts
        609731270 CPU context switches
       1553504530 boot time
          3710939 forks
    

    6.参考文章

    Linux下查看内存使用情况方法总结
    查看Linux磁盘及内存占用情况

    展开全文
  • 计算机RAM内存储存值

    2016-05-26 14:52:18
    计算机运行时,使用随机储存器(RAM)存储信息 RAM通常位于计算机的内部,并且易失,及必要时将被擦出 并被替换为新的信息,同时仅当计算机开启时,其他信息才可用,一旦计算机被关闭,其中信息将...每个字节的内存

    计算机运行时,使用随机储存器(RAM)存储信息 RAM通常位于计算机的内部,并且易失,及必要时将被擦出

    并被替换为新的信息,同时仅当计算机开启时,其他信息才可用,一旦计算机被关闭,其中信息将丢失。


    每一台计算机都安装了一定数量的RAM。系统中的RAM通常以MB 为单位一次4MB的系统拥有4*1024KB 等于4194304个字节

    计算机的随机储存器是依次逐字节排列的。每个字节的内存都有唯一的地址,用于标识该字节,该地址可用于该字节同内存中的其他字节区分开来,内存的地址是一次指定的 最小的数值为0; 最大的数值取决于系统的内存容量。

    展开全文
  • ESP32有520kB的内部RAM空间可以使用,这对于一般的情况是够用的,但是如果设备需要涉及音频或者显示图像等处理时,需要更大的内存空间来处理这些数据。ESP32支持扩展外部RAM,其实乐鑫已经在其ESP32 WROVER系列模组...
  • ROM RAM 内存 外存

    2017-02-05 19:40:05
    如图记忆
  • MemoryTamer for Mac是一款自动释放内存的软件,运行在菜单栏中,可以帮助用户快速释放内存,保证有足够的内存开启新的程序使用。MemoryTamer支持智能清理内存,在电脑运行的过程中自动工作,丝毫不会影响电脑的运行...
  • public String getUsedRamMemory(){// 获取android当前可用ram内存大小 long used = info.totalMem - info.availMem ; String usedRam = Formatter.formatFileSize(context, used); return usedRam; } //...
  • 点击上方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!像任何其他的操作系统一样,GNU / Linux已经有效地实施了内存管理甚至更多。但是,如果有任何进程...
  • 在WinCE系统中,Kernel是如何使用内存的,如何知道内存的大小?是通过config.bib文件的描述,我们会在config.bib文件中MEMORY段定义WinCE内核所占用RAM的起始地址和大小,比如: MEMORY  NK 80001000 01E00000
  • 内存释放软件 IObit RAM

    2012-08-26 16:11:26
    听歌,游戏,电影,网上冲浪,时间长了电脑卡的像蜗牛1样,不光...IObit旗下的 Advanced SystemCare 这是1款强悍的系统工具,清理LJ,优化系统,里面有1款很实用的小工具,RAM内存释放工具,单独提取出来,供大家使用。
  • RAM ROM内存区别

    2019-05-09 12:13:22
    RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。ROM(Read-Only Memory)即只读内存,是一种只能读出事先所存数据的固态半导体存储器。 区别 ...
  • RAM内存

    2013-10-20 16:55:00
    内存不全是RAM,让我们看看当今的Intel计算机是如何连接各个组件的吧。下图展示了主板上的主要组件: 现代主板的示意图,北桥和南桥构成了芯片组。 当你看图时,请牢记一个至关重要的事实:CPU一点也不知道它...
  • RAMMap内存查看器

    2019-08-15 00:46:58
    用于查看计算机内存分布情况,包括虚拟内存和物理内存
  • SoftPerfect RAM Disk是一款免费的RAM内存盘软件,更难能可贵的是,它还带有中文界面,让国人使用起来简单。可以快速创建一个内存盘,文件系统可以选择RAW/FAT/FAT32/NTFS。盘符可以任意选择,直接加载为可移动...
  • RAMMap 查看内存占用

    2017-11-20 11:36:10
    RAMMap(电脑物理内存使用分析工具)是一款由微软Sysinternals公司开发的高级Windows物理内存使用情况分析工具,它使用不同的方式在不同的标签内显示物理内存的使用信息。
  • 内存ram容量计算

    2020-05-09 14:54:07
    ram容量通常是指随机存储器的内存容量,是内存条的关键性参数。内存的容量一般都是2的整次方倍,比如64MB、128MB、256MB等,内存容量越大越有利于系统的运行。进入21世纪初期的台式机中主流采用的内存容量为2GB或4GB...
  • 手机内存RAM、ROM简介

    千次阅读 2018-01-07 18:30:11
    手机内存RAM、ROM简介
  • 它把系统主板上的系统ROM BIOS和适配器卡上的视频ROM BIOS等拷贝到系统RAM内存中去运行,其地址仍使用它们在上位内存中占用的原地址(如图1.7所示)。 确切地说,是将ROM中的数据,拷贝至RAM。由于ROM所采用的是...
  • public long getAvailMemory() { //RAM内存大小  //(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);   ActivityManager am =(ActivityManager)getSystemService(ACTIVITY
  • 内存增强:系统内存增强(RAM)的简化
  • 内存管理十 MTK平台内存RAM大小拆解

    千次阅读 2019-01-15 19:53:54
     本文以MTK平台2G RAM的设备为例,对RAM进行详细的拆解,对于2G的手机在设置->存储中, 会看到总内存的大小为2G,这里的2G也可以通过ADB命令来获取到: (1)获取meminfo: cat /proc/meminfo  ...
  • STM8L的RAM内存模型

    千次阅读 2013-12-19 18:26:31
    STM8L的RAM内存模型 一、RAM空间 在内存映射图上可以看到STM8L的RAM划分为2部分,如下: 2K的RAM空间包含513个字节的Stack,经过深入研究发现,其实RAM被划分为:short range、long range、stack这3个部分。...
  • STT-RAM取代DRAM内存

    2020-08-10 15:18:19
    自旋转移扭矩随机存取存储器(STT-RAM)技术希望用其下一代MRAM取代DRAM,最终取代NAND。它结合了DRAM的成本优势,SRAM的快速读写性能以及闪存的非易失性。据说STT-RAM还解决了第一代现场交换MRAM的主要缺点。 STT-...
  • KEIL查看内存ram

    千次阅读 2011-11-19 16:53:05
    怎样在Keil中查看内部RAM单元的内容? 在keil中进入debug模式后,键入D:50H,可以查看内部RAM从50H开始的单元 怎样查看内部ROM和外部ROM? ROM是统一编址的 可以用C(Code)命令查看 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,327
精华内容 5,330
关键字:

ram内存