色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

一種基于UART&SPI接口驗證工具的設計與實現

電子工程師 ? 來源:現代電子技術第24期 ? 作者:李欣偉 ? 2021-04-08 09:33 ? 次閱讀

摘要:隨著WLAN(無線局域網)的普及,各種接口的WLAN網卡層出不窮,像UART,SPI,USB等。為了驗證接口的功能、性能和兼容性是否符合需求,在此提出了一種支持UART&SPI接口的驗證工具。傳統的接口驗證采用手動驗證的方法,即手動修改UART接口的波特率或SPI接口的大小端等來達到遍歷所有用例的目的,傳統方法存在效率低,容易漏測測試用例等缺陷。而該工具通過命令通道完成上位機和下位機的協商,保持接口參數同步;數據通道驗證在該接口參數下的功能和性能,實現了接口的功能和性能驗證的自動化,大大提高了測試效率,保證測試用例的覆蓋率。該工具適用于多種平臺下的UART和SPI接口驗證。

0 引言

隨著WLAN的廣泛應用,越來越多的芯片廠商投入到WLAN芯片開發上。因此各種接口的WLAN芯片成為了各大廠商發展的主要方向。目前主流的接口有:USB,SDIO,UART,SPI等。

公司設計了一款支持多接口、多協議的無線局域網802.11n(1T1R)的SoC芯片。該SoC芯片集成了SDIO,SPI,UART等接口。為了驗證各個接口是否能夠達到設計需求,需要對各個接口進行功能、性能和兼容性的測試。所謂接口驗證,是指以接口為測試對象,詳細測試接口功能和性能。本文中是指UART接口和SPI接口。對于UART接口,需要對接口的波特率、數據長度、奇偶校驗位、停止位、流控、異常錯誤等進行驗證。對于SPI接口,需要對接口的大小端、工作模式、工作速率等進行驗證。

1 接口單元驗證的必要性

1.1 接口單元驗證簡介

如圖1所示,是接口單元驗證的示意圖。測試板有兩個UART接口和一個SPI接口。下位機完成固件部分,也就是直接操作硬件;而上位機完成測試用例管理和接口驅動兩部分。

o4YBAGBuXCKAA3rjAAAujlG6rSQ997.png

1.2 對接口進行單元驗證的原因

(1)驗證接口的功能是否實現。保證設備能夠正確枚舉,各種配置下數據收發通路暢通。

(2)對各個接口的性能有一個準確的把握。有了接口性能數據后,可以幫助在系統測試階段定位問題。在系統測試階段,性能瓶頸一方面來自于接口,一方面來自于WiFi。在接口驗證階段獲得這個數據后可以幫助分析和定位問題。

(3)在平臺兼容性測試中,由于平臺的兼容性主要與接口有關,與WiFi無關,如果把兼容性放到系統測試階段去做,無形中增加了定位問題的難度。

1.3 傳統接口驗證的方法及缺陷

傳統的驗證方法是將上位機與下位機分離開來。首先上位機修改參數,之后下位機修改參數,編譯固件、運行,上位機與下位機進行通信。上位機與下位機之間沒有協商,直接進行通信。以UART接口的功能驗證為例來說明一下接口驗證方法的缺陷。

UART的功能驗證主要是各種配置下(波特率、數據長度、奇偶校驗位、停止位的組合)是否能夠準確無誤地傳輸數據。如果按照這種測試方法的話,測試效率很低。另外一個方面,由于主觀因素的影響,采用手動的方法容易漏測測試用例。

綜上,傳統接口單元驗證方法的缺陷為:測試效率低;容易漏測測試用例。

2 接口驗證工具的設計

2.1 硬件架構

2.1.1 PC下的硬件結構

如圖2所示,描述的是PC環境下的UART接口的驗證硬件結構圖。

pIYBAGBuXEaAFUr8AAAgGIpagQs792.png

其中PCI通過JTAG接口控制測試板,完成固件的下載。PC2與測試板通過UART接口連接,UART0接口是命令接口,主要傳輸PC2對測試板的命令及測試板的響應;UART1是數據接口,主要傳輸PC2和測試板之間的數據。

2.1.2 嵌入式平臺下的硬件結構

如圖3所示,描述的是嵌入式平臺下UART接口和SPI接口的驗證硬件結構圖。

o4YBAGBuXFOAFNFlAAAueU9pgQM440.png

其中PCI通過JTAG接口控制測試板,完成固件的下載。PC2通過串口控制嵌入式平臺。在驗證UART接口時,連接測試板與嵌入式平臺的兩個UART口,UART0接口是命令接口,主要傳輸嵌入式平臺對測試板的命令及測試板的響應;UART1是數據接口,主要傳輸嵌入式平臺與測試板之間的數據。

在驗證SPI接口時,連接測試板與嵌入式平臺的UART0口及SPI接口。同樣地,UART0是命令接口,主要傳輸嵌入式平臺與測試板的命令傳輸;SPI是數據接口,傳輸嵌入式平臺與測試板之間的數據。

2.2 軟件結構

驗證軟件結構見圖4,其中DUT設備為驗證的對象。

o4YBAGBuXG2AaxO3AABXS0ilrRM452.png

(1)用例管理層

主要生成各種測試用例。對于UART接口來說,包括UART波特率、數據長度、停止位、奇偶校驗位等屬性組合的設置及高級設置項等。

對于SPI接口來說,主要包括SPI的各種模式、各種時鐘、大小端及上下行數據的測試用例的生成。

(2)配置接口層

依據配置程序與驅動程序命令/事件接口定義完成各種命令的發送,并做相應的事件處理。

(3)驅動接口層

依據配置程序與驅動程序命令/事件接口定義對配置程序發送的命令進行解析,同時對硬件的狀態信息進行響應。

(4)硬件接口層

主要負責驅動與固件接口操作,對DUT設備進行設置,對DUT進行寫命令/數據,或從DUT設備獲取狀態/數據信息。

3 接口驗證工具的實現

考慮到兼容各個嵌入式平臺(Linux系統),故整個上位機軟件工作在Linux系統下。從圖5可以看出,整個軟件的實現主要由配置程序、驅動程序及固件3部分組成。本文重點介紹配置程序及驅動程序部分。

o4YBAGBuXICABpoVAABFJs2DxtA943.png

3.1 配置程序

配置程序主要由測試用例管理和配置接口層兩部分組成,主要完成測試用例管理及測試用例的生成。

3.1.1 測試用例管理

測試用例管理部分主要完成測試用例的分發、定位以及測試結果的收集。為了兼容各個Linux版本,測試用例管理部分不采用界面的形式進行管理,而是采用命令行的形式運行。用例管理部分可以選擇單個或多個測試用例進行測試。例如:uart_test case1 case2是對第一、二個測試用例進行測試,uart_test all是對所有的測試用例進行測試。測試用例管理部分會根據測試用例ID自動定位到相應的程序執行。圖5是測試用例管理部分的流程圖。

3.1.2 測試用例的生成

以UART接口為例,描述一個完整的測試用例。圖6描述的是一個UART接口的完整的測試用例。從途中可以清晰地看出配置程序是如何協調上位機與下位機之間的通信的。

pIYBAGBuXJiAD38YAAG4QrfyXk8525.png

本文提出的驗證工具與以往的驗證工具最大的區別在于配置程序可以協調上位機與下位機。上位機與下位機并不是完全分離的,而是由配置程序統一協調,分別給上位機和下位機下發命令修改參數及通信。

3.1.3 兼容性的實現

由于對SPI接口來說,要求兼容PC機和多個嵌入式平臺,所以在程序的設計上要考慮兼容性的問題。

兼容性問題需要考慮兩個方面:

(1)數據類型的重定義。

(2)采用分層設計的思想。

3.2 驅動程序

驅動程序主要包括驅動接口層和硬件接口層。其中驅動接口層主要完成將配置程序的命令或數據進行解析,通過接口發送出去,而硬件接口層主要負責驅動與硬件(固件)接口操作,負責對DUT設備進行設置,對待測設備進行寫命令/數據,或從DUT設備獲取狀態/數據信息。

3.2.1 UART接口驅動開發

UART協議比較簡單,本文不對UART協議進行介紹。由于在LINUX系統下,對串口有相當好的支持。Linux下把串口看作一個文件來處理,故對串口的讀寫操作相當于對文件直接進行讀寫操作。這樣我們可以直接調用系統函數如open,write,read,close等對串口進行操作。

需要注意的是,對串口的寫操作比較容易,但是讀操作存在著阻塞I/O的問題。在對串口進行讀取操作的時候,如果使用的是RAW模式,每個read系統調用將返回當前串行輸入緩沖區中存在的字節數。如果沒有數據,將會一直阻塞到有字符到達或者間隔時鐘到期,或者發生錯誤此時可采用異步讀取。所謂異步讀取,指的是先查詢串口,看串口是否可用,直到串口可用了再去讀就可以避免阻塞I/O的問題。

3.2.2 SPI接口驅動開發

(1)SPI概述

SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時或者硬件復用兩根數據線),也是所有基于SPI的設備共有的,它們是MISO,MOSI,SCK,CS。

MOSI為主設備數據輸出,從設備數據輸入;MISO為主設備數據輸入,從設備數據輸出;SCK為時鐘信號,由主設備產生;CS為從設備使能信號,由主設備控制。

(2)SPI驅動開發

在Linux下開發SPI驅動有兩種方式,一種是采用Linux自帶的SPI子系統,一種是采用字符設備驅動的形式。本文采用了字符設備驅動的形式。在Linux 2.6內核中使用cdev結構體描述字符設備。cdev結構體如下所示。字符設備的主要工作是初始化、添加和刪除cdev的結構體,申請和釋放設備號,以及填充file_operations結構體的操作函數,實現file_operations結構體中的read(),write()和ioctl()等。

cdev結構體的dev_t成員定義了設備號,另一個重要成員file_operations定義了字符設備驅動提供給虛擬文件系統的接口函數。file_ operations結構體中的成員函數是字符設備驅動程序設計的主體內容,這些函數實際會在應用程序進行Linux的open(),write(),read(),close()等系統調用時最終被調用。

Linux字符設備驅動主要由以下幾部分組成:

(1)字符設備驅動模塊加載與卸載函數

在字符設備驅動模塊加載函數中應該實現設備號的申請和cdev的注冊,對應的是insmod過程,而在卸載函數中應實現設備號的釋放和cdev的注銷,對應的是rmmod過程。

(2)字符設備驅動的file_operations結構體中成員函數

file_operations結構體中成員函數是字符設備驅動與內核的接口,是用戶空間對Linux進行系統調用最終的落實者。

(3)加載字符設備驅動之后,在用戶空間建立一個設備節點,在用戶空間就可以對設備進行操作了,操作方式操作文件的方式相同。

3.2.3 驅動與固件的接口

驅動與固件之間的交互是通過自定義的“AT+”協議,協議交互流程見圖7。

pIYBAGBuXNuAYsNcAACn_NUYcF4090.png

AT+命令主要包括3個:“AT+”:判斷串口鏈路是否正常。如果正常,返回OK;不正常,返回error;“AT+set”:接口參數設置命令。如果參數設置完成,返回OK;不正常,返回error;“AT+send”:數據發送命令。如果數據發送/接收正確,返回OK;否則,返回error。

4 結語

本文介紹的工具適用于UART接口和SPI接口的功能、性能和兼容性測試,可實現測試的自動化。采用該測試工具,一方面提高了測試效率,大大節約了人力資源,時間和人力成本節約了50%以上;另一方面可以保證測試用例100%的覆蓋。

編輯:jq

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

    關注

    2

    文章

    657

    瀏覽量

    73085
  • PCI
    PCI
    +關注

    關注

    4

    文章

    666

    瀏覽量

    130251
  • SoC芯片
    +關注

    關注

    1

    文章

    610

    瀏覽量

    34905
收藏 人收藏

    評論

    相關推薦

    spi master接口的fpga實現

    串行外圍接口 大致了解: spi是個同步協議,數據在master和slaver間交換通過時鐘sck,由于它是同步協議,時鐘速率就可以各種變換。 sck:主機提供,從機不能操控,從器件由主機產生的時鐘控制。數據只有在sck來了的上升沿或者下降沿才傳輸。 高級
    的頭像 發表于 11-16 10:35 ?354次閱讀
    <b class='flag-5'>spi</b> master<b class='flag-5'>接口</b>的fpga<b class='flag-5'>實現</b>

    恩智浦FRDM-MCXA153 RT-Thread實踐指南 實現和優化RT-Thread的SPI驅動

    串行外設接口(SPI)是一種廣泛使用的同步串行通信接口,在嵌入式系統中扮演著重要角色。本文將深入探討如何在NXP MCXA153 MCU上實現
    的頭像 發表于 11-14 08:58 ?1092次閱讀
    恩智浦FRDM-MCXA153 RT-Thread實踐指南 <b class='flag-5'>實現</b>和優化RT-Thread的<b class='flag-5'>SPI</b>驅動

    一種簡單高效配置FPGA的方法

    本文描述了一種簡單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口SPI)閃存配置FPGA設備。這種方法減少了硬件組件、板空間和成本。
    的頭像 發表于 10-24 14:57 ?558次閱讀
    <b class='flag-5'>一種</b>簡單高效配置FPGA的方法

    SPI接口靜電放電防護方案

    SPI(Serial Peripheral Interface,串行外圍設備接口),是Motorola公司提出的一種同步串行接口技術,是一種
    的頭像 發表于 09-20 15:31 ?375次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>靜電放電防護方案

    TDA4系列的SPI啟用和驗證

    電子發燒友網站提供《TDA4系列的SPI啟用和驗證.pdf》資料免費下載
    發表于 09-04 10:50 ?2次下載
    TDA4系列的<b class='flag-5'>SPI</b>啟用和<b class='flag-5'>驗證</b>

    SPIUART、RGMII、JTAG接口的低電壓轉換

    電子發燒友網站提供《SPIUART、RGMII、JTAG接口的低電壓轉換.pdf》資料免費下載
    發表于 08-30 11:09 ?0次下載
    <b class='flag-5'>SPI</b>、<b class='flag-5'>UART</b>、RGMII、JTAG<b class='flag-5'>接口</b>的低電壓轉換

    MSPM0指導手冊UARTSPI

    電子發燒友網站提供《MSPM0指導手冊UARTSPI.pdf》資料免費下載
    發表于 08-28 11:35 ?2次下載
    MSPM0指導手冊<b class='flag-5'>UART</b>轉<b class='flag-5'>SPI</b>

    是否可以從SPI閃存啟動HSPI接口

    是否可以從 SPI 閃存啟動HSPI接口? 如果是這樣,是否可以使用 uart 啟動模式/樂鑫下載工具下載此 SPI 閃存? 感謝您的幫助。
    發表于 07-08 07:35

    【GD32F303紅楓派開發板使用手冊】第十九講 SPI-SPI NOR FLASH讀寫實驗

    SPI(Serial Peripheral interface),顧名思義是串行外設接口,和UART不同的是,SPI是同步通訊接口,所以帶有
    的頭像 發表于 06-19 10:12 ?1225次閱讀
    【GD32F303紅楓派開發板使用手冊】第十九講 <b class='flag-5'>SPI-SPI</b> NOR FLASH讀寫實驗

    總結usart、uart、i2c、spi區別及相關知識

    USART、UART、I2C和SPI是四不同的串行通信協議,它們各自具有獨特的特點和應用領域
    的頭像 發表于 04-10 09:47 ?1763次閱讀
    總結usart、<b class='flag-5'>uart</b>、i2c、<b class='flag-5'>spi</b>區別及相關知識

    具備自動主機喚醒功能且符合功能安全標準的汽車類SPI/UART通信接口BQ79600-Q1數據表

    電子發燒友網站提供《具備自動主機喚醒功能且符合功能安全標準的汽車類SPI/UART通信接口BQ79600-Q1數據表.pdf》資料免費下載
    發表于 03-21 16:06 ?0次下載
    具備自動主機喚醒功能且符合功能安全標準的汽車類<b class='flag-5'>SPI</b>/<b class='flag-5'>UART</b>通信<b class='flag-5'>接口</b>BQ79600-Q1數據表

    TC1728沒有LIN接口,只有UART接口,可以用UART接口實現LIN接口嗎?

    TC1728沒有LIN接口,只有UART接口。可以用UART接口實現LIN接口嗎?
    發表于 02-06 06:51

    藍牙串口通訊總線——I2C/SPI/UART

    嵌入式工程師在做串口通信調試工作的時候,會經常用到I2C、SPIUART這3條總線,I2C、SPIUART這三通信總線在嵌入式領域很常
    的頭像 發表于 01-22 09:41 ?1625次閱讀
    藍牙串口通訊總線——I2C/<b class='flag-5'>SPI</b>/<b class='flag-5'>UART</b>

    什么是串口(UART)?串口的組成和FPGA實現

    串口作為常用的三大低速總線(UARTSPI、IIC)之,在設計眾多通信接口和調試時占有重要地位。
    的頭像 發表于 01-03 11:43 ?1.5w次閱讀
    什么是串口(<b class='flag-5'>UART</b>)?串口的組成和FPGA<b class='flag-5'>實現</b>

    UVVM(通用 VHDL 驗證方法)

    UVVM(通用 VHDL 驗證方法) 簡介? UVVM(通用 VHDL 驗證方法)是一種免費的開源方法和庫,用于開發非常結構化的基于 VHDL 的測試平臺。 概述、可讀性、可維護性、可擴展性和重用性
    發表于 01-02 12:59
    主站蜘蛛池模板: 暖暖 免费 高清 日本视频大全| 好爽胸大好深好多水| 鬼灭之刃花街篇免费樱花动漫 | 亚洲欧美精品无码大片在线观看| 新影音先锋男人色资源网| 亚洲国产精品自在自线观看 | 日本高清天码一区在线播放| 色人格影院第四色| 亚洲AV久久久久久久无码| 伊人久久大香线蕉综合亚洲| 4388成人| 大桥未久电影在线| 国产亚洲999精品AA片在线爽| 久久久久久久久a免费| 欧美精品成人久久网站| 少妇大荫蒂毛多毛大| 一二三四在线高清中文版免费观看电影| 2020国产欧洲精品视频| 第七色 夜夜撸| 狠狠色色综合站| 男女久久久国产一区二区三区| 日韩精品无码视频一区二区蜜桃 | 手机在线免费| 一区二区三区国产亚洲网站| a视频免费在线观看| 国产青青草原| 老师机影院| 天堂Av亚洲欧美日韩国产综合| 一边吃奶一边添P好爽故事| SM脚奴调教丨踩踏贱奴| 国产偷窥盗摄一区二区| 免费看成人毛片| 丫鬟粗大狠狠贯穿h| 99国产亚洲精品无码成人| 国产精品一区二区20P| 快播av种子| 午夜宅宅伦电影网| 999精品国产人妻无码系列| 国产精品自在在线午夜蜜芽tv在线| 久久中文电影| 性色AV一区二区三区咪爱四虎|