完整是一个含糊不清的词.它可能意味着不同的温度,电压以及具有不同元件容差的一系列器件.当你站点MemTest86时,我想我明白了.我见过的大多数项目都是基于C的,无法测试所有内容.

有记录的算法,如行走位等.很大程度上取决于你的RAM类型.我想你有某种类型的SDRAM. SDRAM有许多不同的周期.有单拍读/写,银行到银行转移,终止突发等.

就个人而言,我们有一个系统,当通过以太网(DMA)进行SSH传输时,5%的电路板会出现问题. SSH涉及加密,这是CPU /内存密集型,DMA引擎通常执行与CPU(带缓存)不同的SDRAM周期.

这是一些要求,

>用于驻留代码的非SDRAM内存.

>裸金属框架(无缓存,中断,DMA等)

>关闭DCache.

>打开代码的ICache.

另一个限制要求是运行时间.完整的SDRAM测试可能需要数年才能在单板上运行.我发现伪随机地址/数据测试效果很好.只需获取与SDRAM大小相关的数字,并将其用作增量.最简单的情况是1.您可能希望找到其他人不断更改行,库和设备大小;银行规模-1例如;然而素数会更好,因为你有不同的位数一直在变化.关闭缓存后,您可以使用char,short,int和long long指针来测试一些不同的突发长度.这些测试会很慢.您将需要使用ldm / stm对来模拟完整的SDRAM突发,这些更常见于缓存,因此您应该使用ldm / stm来模拟它们.这也是最快的测试之一.

typedef unsigned char b8;

typedef unsigned short b16;

typedef unsigned long b32;

typedef unsigned long long b64;

/* Use a macro to speed code. The compiler will use constants for

* _incr and _wrap instead of registers which cause spilling. A

* macro centralizes the memory test logic.

*/

#define MEMTEST(name,type,_incr,_wrap) ...

/* Sequential tests. */

MEMTEST(do_mem_seq8, b8, 97, 1)

MEMTEST(do_mem_seq16, b16, 50839, 1)

MEMTEST(do_mem_seq32, b32, 3999971, 1)

MEMTEST(do_mem_seq64, b64, 3999971, 1)

/* Random tests. These test try to randomize both the data and the

* address access.

*/

/* 97/0x61 prime for char and 9999991/0x989677 prime for 64MB. */

MEMTEST(do_mem_rnd8,b8,97,9999991)

/* 50839/C697 large prime for 64k and 9999991/0x989677 prime for 64MB. */

MEMTEST(do_mem_rnd16,b16,50839,9999991)

/* 3999971/3D08E3 prime and 9999991/0x989677 prime for 64MB. */

MEMTEST(do_mem_rnd32,b32,3999971,9999991)

/* 3999971/3D08E3 prime and 9999991/0x989677 prime for 64MB. */

MEMTEST(do_mem_rnd64,b64,3999971,9999991)

incr是数据增量,wrap是地址增量.突发的算法将是相同的.这是一些内联gcc汇编程序,

register ulong t1 asm ("r0") = 0; \

register ulong t2 asm ("r4") = t1 + incr; \

register ulong t3 asm ("r6") = t2 + incr; \

register ulong t4 asm ("r8") = t3 + incr; \

/* Run an entire burst line. */ \

__asm__ (" stmia %[ptr], {%0,%1,%2,%3}\r\n" : : \

"r" (t1), "r" (t2), "r" (t3), "r" (t4), \

[ptr]"r" (start + (addr<<2)) : \

"memory" ); \

/* Read four 32 bits values. */ \

__asm__ (" ldmia %[ptr], {%0, %1, %2, %3}\r\n" : \

"=r" (t1), "=r" (t2), "=r" (t3), "=r" (t4) : \

[ptr]"r" (start + (addr<<2)) ); \

这些测试很简单,应该适合代码缓存,这将最大限度地增加RAM的压力.我们的主要问题是DQS延迟,这对DDR-SDRAM至关重要,可能与温度和电压有关,并且会随PCB布局和材料而变化.

如果要使用SDRAM芯片优化存储器控制器寄存器,则可以使用Cachbench.它也可能对测试有用.

另请参阅:Unix Stack Exchange (same question).我在Linux下使用了这些基于C的测试套件,但它们在我们的案例中没有暴露任何问题.对于上面描述的内容,memtest86 algorithms可能没有压力(对于PCB故障);虽然测试7或burnBX测试很接近.我认为memtest86可以解决DRAM芯片问题,而不是电路板设计问题.

编辑:另一个问题是与SDRAM芯片的瞬态/串扰.如果您的设备驱动程序是高电流或高频设备,SDRAM接口可能会发生串扰,或者由于电源变化而获得双时钟.因此RAM测试可能没有问题,SDRAM错误仅在使用特定硬件部分时发生.另外请注意,Android设备不使用动态时钟并更改SDRAM频率.当时钟改变时,信号可以穿过共振.

linux arm 物理内存,linux – 如何在Arm Architecture硬件上进行内存测试? (像Memtest86这样)...相关推荐

  1. linux 修改时区_如何在 Ubuntu 20.04 上设置或者修改时区

    本文最先发布在: 如何在 Ubuntu 20.04 上设置或者修改时区​www.itcoder.tech 使用正确的时区,对于系统相关的任务和进程来说,是最基本的.例如,cron 守护进程,使用系统时 ...

  2. linux查物理内存,linux查询物理内存的方法有哪些

    今天有LINUX操作系统的用户跟学习啦小编说,如何用命令查看物理内存.所以下面就由学习啦小编给大家推荐一个方法! 如何用命令查看LINUX物理内存 一.查看物理内存 执行如下命令即可查看物理内存,执行 ...

  3. linux joomla安装教程,如何在Ubuntu 18.04上使用Apache安装Joomla

    Joomla是为数十万个网站提供支持的最受欢迎的开源内容管理系统之一.它是用PHP编写的,并且包含大量功能,可以使用免费和高级扩展以及主题进行扩展.使用Joomla,您可以轻松建立自己的电子商务商店, ...

  4. linux free 物理内存,Linux free显示系统内存使用

    Linux free显示系统内存使用 linux中free命令用以显示当前系统内存使用情况,相对于top 提供了更简洁的查看系统内存使用情况. 参数 -b, –bytes, 以Byte为单位显示内存使 ...

  5. linux skype安装路径,如何在Ubuntu 20.04上安装Skype

    Skype是世界上最受欢迎的通信应用程序之一.使用Skype,您可以拨打免费的在线音频和视频电话,以及拨打全球范围内的手机和固定电话的国际电话.本指南介绍了在Ubuntu 20.04上安装Skype的 ...

  6. linux桌面时区设置,如何在Ubuntu 20.04上设置或更改时区

    对于许多与系统相关的任务和进程,使用正确的时区至关重要. 例如,cron守护程序使用系统的时区执行cron作业,而日志文件中的时间戳基于系统的同一时区. 在Ubuntu上,系统的时区是在安装过程中设置 ...

  7. linux 网络对讲,基于ARM与Linux的全数字化可视对讲系统的设计与实现

    摘要: 在信息化飞速发展的今天智能家居系统已越来越多的被人们所接受,从楼宇可视对讲到紧急情况报警,再到远程家电控制,智能家居系统在人们的日常生活中扮演着重要的角色.传统的可视对讲系统都是基于模拟音视频 ...

  8. qemu搭建arm嵌入式linux开发环境

    一.基本概念 1.交叉编译 交叉编译(Cross_Compile)是指编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台. 2.bootloader BootLoader是在操作系统内核运行 ...

  9. embedded linux arm,Embedded+Linux+For+Arm.ppt

    <Embedded+Linux+For+Arm.ppt>由会员分享,可在线阅读,更多相关<Embedded+Linux+For+Arm.ppt(16页珍藏版)>请在人人文库网上 ...

  10. 嵌入式系统Linux内核开发实战指南(ARM平台) 书评

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! < ...

最新文章

  1. tushare pro接口_利用tushare获取新闻联播文字稿并制作词云
  2. elk入门_ELK堆栈入门
  3. ASP.NET获取路径的方法
  4. xcode动态改变窗口大小_详细的理论要点+3个经典案例,帮助你深入理解动态面板...
  5. python换循环颜色_python – 增加matplotlib颜色循环
  6. html5和css3打造一款创意404页面
  7. MTK 驱动(58)---MTK G-sensor
  8. Java NIO 和 IO的区别
  9. mysql 处理json_mysql存储过程处理json格式内容
  10. 从斐波那契数列讲解算法设计的思路
  11. 微型计算机常用的分区格式,教你分出整数的硬盘分区
  12. 对知识推理的认识的相关论文
  13. 腾讯 云通信 如何启动Demo
  14. 联发科mt8516价格_一颗神U创造历史:联发科MT8516
  15. 身份证识别-全方位突破,高精度,轻量级!
  16. 会议室LED大屏如何实现无线连接投屏显示?
  17. html图片颜色变深,利用CSS改变图片颜色的100种方法!
  18. 大数据之路读书笔记-16数据应用
  19. via导出书签html,书签助手,迈出换用 Via 浏览器的第一步 | App+1
  20. 关于localhost

热门文章

  1. android获取当前位置的GPS经纬度
  2. AD16 pdf打印输出彩色
  3. GBase项目管理实践总结——WBS分解的关键事项
  4. Git版本控制管理(一)--安装
  5. uniapp开发原生android插件,获取浏览器cookie
  6. svn拉取文件合并_svn 创建分支、合并分支、分支与分支合并
  7. [转载]GRADS画图
  8. win7电脑网站服务器,Win7系统
  9. KM算法--学习笔记
  10. 整流管与稳压管的参数和选择原则