在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式系統存儲正確性和壓力測試方案

嵌入式USB開發 ? 來源:嵌入式USB開發 ? 作者:嵌入式USB開發 ? 2023-06-08 10:45 ? 次閱讀

本文轉自公眾號,歡迎關注

嵌入式系統存儲正確性和壓力測試方案 (qq.com)

前言

嵌入式系統開發測試階段通常需要對存儲進行正確性和壓力測試,比如SRAM,DDR等,通常的做法是進行遍歷讀寫,比如寫0x55,0xAA,0x00,0xFF,遞增值等這些特殊值然后再回讀判斷是否正確等,這些測試用例是根據存儲的原理和經驗等進行總結的。實際上已經有人整理了相應的測試用例https://pyropus.ca./software/memtester/就是一個比較常用的測試代碼。

這個代碼最新版本是4.6.0,其為Unix類系統上使用設計,這些系統上可以直接安裝或者源碼編譯使用。

圖片

為了方便在MCU等環境使用,我將其進行了一些修改,方便移植使用。

https://github.com/qinyunti/memtester_mcu.git

memtester_mcu使用

clone以下倉庫https://github.com/qinyunti/memtester_mcu.git,添加代碼到自己的目錄即可。

參考README.md

實現以下依賴即可:

l:memset

l:rand

l:ULONG_MAX

lmemtester_types.h中需要

l定義幾個數據類型,ull位使用,ul為無符號基本數據類型。

typedef unsigned long ul;

typedef unsigned long long ull;

typedef unsigned long volatile ulv;

typedef unsigned char volatile u8v;

typedef unsigned short volatile u16v;

l需實現memtester_printf

然后

#include "memtester.h"

按照如下調用即可

memtester_main((ulv *)0x20004000, 0, 0x2000, 10);

其中0x20004000為待測試存儲開始地址,要ul對齊;

第二個參數表示測試用例mask,0表示所有用例都測試;

0x2000為待測試存儲區域大小,要ul對齊;

最后10為測試10個循環,壓力測試可以將該值寫的很大,一直反復測試。

測試用例介紹

memtester_tests.c中一共提供了17個測試用例,下面一一介紹。

有一些輔助函數

compare_regions: 比較兩個區域是否一致,按照ulv類型比較

test_stuck_address

測試前先調用該函數遍歷測試一下,該函數依次寫對應地址的內容為該地址,該地址的內容為該地址的取反,然后下一遍時反過來先寫該地址的內容為該地址的取反,然后寫對應地址的內容為該地址,然后再回讀。

測試第一遍時

比如開始地址為0x20000000基本類型為32位,則0x20000000處的值為0x20000000

0x20000004處的值為0xDFFFFFFB;

測試第二遍時

比如開始地址為0x20000000基本類型為32位,則0x20000000處的值為0xDFFFFFFF

0x20000004處的值為0x20000004;

依此類推共測試16遍。

test_random_value :隨機測試

先隨機寫待測試區域的前面一半和后面一半為同樣的值,然后再回讀前面一半和后面一半是否一樣。

test_xor_comparison :異或隨機值測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都和同一個隨機值異或,然后再回讀比較。

test_sub_comparison :減隨機值測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都減同一個隨機值,然后再回讀比較。

test_mul_comparison :乘以隨機值測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都乘以同一個隨機值,然后再回讀比較。

test_div_comparison:除以隨機值測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都除以同一個隨機值,然后再回讀比較。

test_or_comparison :或隨機值測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都或上同一個隨機值,然后再回讀比較。

test_and_comparison :與隨機值測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都與上同一個隨機值,然后再回讀比較。

test_seqinc_comparison:遞增測試

將待測試區域前面一半和后面一半的內容(上一個測試的遺留值)都從同一個隨機值開始遞增,遞增到待測試基本數據的個數,然后再回讀比較。

test_solidbits_comparison :固定位測試

將待測試區域前面一半和后面一半的內容依次寫0xFFFFFFFF和0x00000000然后再回讀比較。

Cesium64輪。

test_checkerboard_comparison :交錯位測試

將待測試區域前面一半和后面一半的內容依次寫0x55555555和0xAAAAAAAA然后回讀測試。

測試64輪。

test_blockseq_comparison :字節遞增測試

將待測試區域前面一半和后面一半的內容依次寫0x00000000-0x01010101~0x02020202...0xFFFFFFFF這中字節遞增,然后回讀測試。

test_walkbits0_comparison :1滑動測試

將待測試區域前面一半和后面一半的內容依次寫如下值然后回讀測試:

共64輪

前面32輪的值

第一輪寫0x00000001

第二輪寫0x00000002

1往左滑動

后面32輪反向滑動

第32輪寫0x80000000

第33輪寫0x40000000

test_walkbits1_comparison :0滑動測試

將待測試區域前面一半和后面一半的內容依次寫如下值然后回讀測試:

共64輪

前面32輪的值

第一輪寫0xFFFFFFFE

第二輪寫0xFFFFFFFD

0往左滑動

后面32輪反向滑動

第32輪寫0x7FFFFFFF

第33輪寫0xBFFFFFFF

test_bitspread_comparison :間隔1,0滑動測試

與1滑動類似,只是使用間隔1位的兩個1進行滑動

將待測試區域前面一半和后面一半的內容依次寫如下值然后回讀測試:

共64輪

前面32輪的值

第一輪寫

(1<<0) | (1<<2) ~

0xFFFFFFFF ^ (1<<0) | (1<<2)~ 取反

(1<<0) | (1<<2)~ 后面重復

0xFFFFFFFF ^ (1<<0) | (1<<2)

第二輪寫 在第一輪基礎上滑動

(1<<1) | (1<<3) ~

0xFFFFFFFF ^ (1<<1) | (1<<3)~ 取反

(1<<1) | (1<<3) ~ 后面重復

0xFFFFFFFF ^ (1<<1) | (1<<3)

后面32輪反向滑動

第32輪寫

(1<<31) | (1<<33) ~

0xFFFFFFFF ^ (1<<31) | (1<<33)~ 取反

(1<<31) | (1<<33)~ 后面重復

0xFFFFFFFF ^ (1<<31) | (1<<33)

第33輪寫 在第一輪基礎上滑動

(1<<30) | (1<<32) ~ 取反

0xFFFFFFFF ^ (1<<30) | (1<<32)~ 后面重復

(1<<30) | (1<<32) ~

0xFFFFFFFF ^ (1<<30) | (1<<32)

test_bitflip_comparison :位翻轉

32輪

第一輪

重復8次

1<<0,0xFFFFFFFF^(1<<0) 重復到寫完緩沖區

第2輪

重復8次

1<<1,0xFFFFFFFF^(1<<1) 重復到寫完緩沖區

...

第32輪

重復8次

1<<31,0xFFFFFFFF^(1<<31) 重復到寫完緩沖區

test_8bit_wide_random :字節寫

將待測試區域前面一半和后面一半的內容分別按照基本類型操作和字節操作方式寫入隨機值然后回讀對比

test_16bit_wide_random :16位寫

將待測試區域前面一半和后面一半的內容分別按照基本類型操作和16位操作方式寫入隨機值然后回讀對比

實測

移植比較簡單,參考README.md即可,在某個CORTEX-M3的MCU上測試如下

圖片

總結

以上測試可以看出

1.盡可能的隨機,以避免每次測試都一樣,rand還可以先srand一下使得每次測試都不一樣。

2.測試相鄰位的影響,0x55,0xAA, 全0全0等,比如1和0的滑動,間隔1,0的滑動,位翻轉等。

3.遍歷到所有的值,比如遞增,隨機值等。

我們還可以添加總結自己的用例進行完善,實際測試時也可減少一些循環次數加快測試。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5082

    文章

    19123

    瀏覽量

    305151
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3593

    瀏覽量

    129466
  • 存儲
    +關注

    關注

    13

    文章

    4314

    瀏覽量

    85842
  • sram
    +關注

    關注

    6

    文章

    767

    瀏覽量

    114689
  • 移植
    +關注

    關注

    1

    文章

    379

    瀏覽量

    28130
收藏 人收藏

    評論

    相關推薦

    嵌入式系統測試相關資料分享

    嵌入式系統測試21.導彈控制屬于嵌入式系統在()方面的應用。正確答案:D. 軍用2.下列()不是
    發表于 10-27 06:38

    實時系統嵌入式操作系統的相關資料下載

    實時系統嵌入式操作系統實時系統可以看成對外部事件能夠及時響應的系統。這種系統最重要的特征是時間
    發表于 12-14 08:33

    使用memtester工具對嵌入式Linux內存壓力進行測試

    使用memtester工具對嵌入式Linux內存壓力測試新的改變Memtest工具工具編譯與使用使用命令使用格式測試新的改變內存是電子計算機的最重要組成要素之一。 與內存對應的就是外存
    發表于 12-15 06:29

    嵌入式硬件系統存儲體系

    慕課電子科技大學.嵌入式系統.第二章.嵌入式硬件系統(第一部分.嵌入式系統
    發表于 12-17 08:08

    嵌入式系統系統測試和可靠評估

    引入多種嵌入式系統系統測試方法;根據ISO 9000 國際質量標準,提出一種切實可行的可靠評估方案
    發表于 04-16 09:29 ?16次下載

    嵌入式系統系統測試和可靠評估

    引入多種嵌入式系統系統測試方法;根據ISO 9000 國際質量標準,提出一種切實可行的可靠評估方案
    發表于 05-15 14:41 ?14次下載

    基于CodeTest工具的DCS系統嵌入式測試設計與實現

    介紹了CodeTest嵌入式測試工具及其在大型DCS系統嵌入式測試中一種獨特測試
    發表于 07-06 16:24 ?28次下載

    最新嵌入式系統數字邏輯測試解決方案

    最新嵌入式系統數字邏輯測試解決方案:TLA6000系列邏輯分析儀。 嵌入式系統技術、市場發展趨
    發表于 12-17 11:50 ?40次下載
    最新<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>數字邏輯<b class='flag-5'>測試</b>解決<b class='flag-5'>方案</b>

    基于虛擬存儲嵌入式存儲系統的設計方法

    基于虛擬存儲嵌入式存儲系統的設計方法   1、引言   嵌入式系統嵌入式硬件
    發表于 11-05 16:10 ?773次閱讀
    基于虛擬<b class='flag-5'>存儲</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>存儲系統</b>的設計方法

    淺析嵌入式存儲系統設計方法

    淺析嵌入式存儲系統設計方法  嵌入式存儲系統嵌入式硬件和固化在硬件平臺中的嵌入式
    發表于 01-26 16:32 ?1108次閱讀
    淺析<b class='flag-5'>嵌入式</b><b class='flag-5'>存儲系統</b>設計方法

    淺論嵌入式系統離線測試

    隨著嵌入式系統的發展,迫切需要在嵌入式系統開發階段對嵌入式系統進行離線
    發表于 09-26 14:59 ?863次閱讀

    嵌入式中如何給內存做壓力測試

    大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是內存讀寫正確性壓力測試程序memtester。 在嵌入式系統中,內存(RAM
    的頭像 發表于 04-04 18:20 ?3116次閱讀
    <b class='flag-5'>嵌入式</b>中如何給內存做<b class='flag-5'>壓力</b><b class='flag-5'>測試</b>?

    嵌入式測試

    一、嵌入式軟件測試的方法  嵌入式軟件測試分為4個階段,即模塊測試、集成測試
    發表于 10-19 18:32 ?18次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>測試</b>

    嵌入式系統測試2

    嵌入式系統測試21.導彈控制屬于嵌入式系統在()方面的應用。正確答案: D. 軍用2.下列()
    發表于 10-19 18:33 ?10次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b><b class='flag-5'>測試</b>2

    嵌入式軟件接口怎么測試,嵌入式系統接口測試策略.doc

    嵌入式系統接口測試策略嵌入式系統接口測試策略摘要:在日益廣泛應用的
    發表于 10-20 19:06 ?16次下載
    <b class='flag-5'>嵌入式</b>軟件接口怎么<b class='flag-5'>測試</b>,<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>接口<b class='flag-5'>測試</b>策略.doc
    主站蜘蛛池模板: 天堂网传媒| 日本黄段视频| 天堂网址| 如色网| 女人张腿让男子桶免费动态图| www.你懂的| 四虎永久免费地ww4hu57| 视频在线观看一区二区| 色狠狠xx| 午夜亚洲视频| 超级乱淫视频播放日韩| 在线你懂得| 国产午夜人做人视频羞羞| 夜夜操网| 4438x五月天| 国产热| 日本免费a级片| 国产成在线人视频免费视频| 国产精品久久1024| 老师受年下高h男| 老外一级黄色片| 婷婷综合五月天| 欧美成人免费夜夜黄啪啪| 天天精品视频在线观看资源| a天堂影院| 黄网在线免费看| 亚洲a在线观看| 激五月| 色女仆影院| 青青热久免费精品视频在线观看| 免费亚洲成人| 国产午夜免费视频片夜色| 天堂免费在线视频| 天天天狠天天透天天制色| www色综合| 久久国产精品网| 久久天天躁夜夜躁狠狠85麻豆 | 成人性视频网站| 亚洲一区二区三区精品视频| 深爱婷婷激情网| 91正在 播放|