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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

模擬設(shè)備驅(qū)動(dòng)

Xilinx賽靈思官微 ? 來源:djl ? 作者:Neil Johnson Soheil S ? 2019-07-24 15:19 ? 次閱讀

模擬(Mocking)是嵌入式系統(tǒng)開中用于單元測試和測試驅(qū)動(dòng)的一種技術(shù)。模擬的好處在于通過刪除不相關(guān)的從屬代碼,它允許開發(fā)者很容易地隔離和單元測試其中一部分代碼。在嵌入式系統(tǒng)中,這些從屬代碼可能被當(dāng)作由設(shè)備驅(qū)動(dòng)和硬件運(yùn)行的功能集合而存在。在這篇博客中,我們將討論關(guān)于模擬設(shè)備驅(qū)動(dòng)和硬件以及使用GoogleTest和GoogleMock來測試應(yīng)用程序代碼

在我們的例子中,目標(biāo)硬件是Zynq-7000 SoC的ZedBoard。之所以挑選Zedboard是因?yàn)樗写罅繐碥O和很多簡便可用的參考設(shè)計(jì)。不過其不足是,一板難求!——由于需求量大,這塊開發(fā)板的運(yùn)送時(shí)間超過2個(gè)月。不過目標(biāo)硬件送達(dá)延遲對嵌入式開發(fā)者來說是個(gè)普遍問題。沒有目標(biāo)硬件,嵌入式開發(fā)者通常只有兩種選擇:

等待,或…

在沒有硬件的情況下開發(fā)并測試高質(zhì)量應(yīng)用

我們的選擇是不等待:-)

我們的應(yīng)用是一個(gè)視頻演示平臺。在這個(gè)平臺上,Zynq SoC中ARM Cortex-A9 MPCore CPU上運(yùn)行的軟件創(chuàng)建一系列視頻幀,將它們通過由Xilinx IP核組建的硬件流水線傳輸?shù)?a target="_blank">HDMI視頻輸出。我們的目的就是通過模擬設(shè)備驅(qū)動(dòng)來寫入和測試整個(gè)應(yīng)用程序。然后,當(dāng)收到ZedBoard后,我們就可以用真正的設(shè)備驅(qū)動(dòng)來重新部署我們的應(yīng)用了。

模擬設(shè)備驅(qū)動(dòng)功能

我們選擇一個(gè)對我們單元測試很好的粒度(granularity)水平,因此我們能夠從一系列很小的步驟開始建立和測試我們的應(yīng)用程序, 每一步測試完畢后再進(jìn)行下一步。例如,軟件功能是用xiic_l.中的Xiic_DynInit()函數(shù)對目標(biāo)硬件I2C 控制器基地址進(jìn)行適當(dāng)?shù)某跏蓟?/p>

模擬設(shè)備驅(qū)動(dòng)

為了模擬像Xiic_DynInit()這樣的設(shè)備驅(qū)動(dòng)程序,我們的應(yīng)用包含賽靈思設(shè)備驅(qū)動(dòng)頭文件xiic_l.h,正如你通常做的一樣。然后我們新建我們自己的該函數(shù)實(shí)現(xiàn)的存根來代替從libxil.a中鏈接真正的設(shè)備驅(qū)動(dòng)代碼。這存根始于空的實(shí)現(xiàn)體,由此我們可以流水清除Makefile然后build,確保編譯器和鏈接器都沒問題(大多數(shù)有經(jīng)驗(yàn)的開發(fā)者也許不會(huì)有這個(gè)習(xí)慣,但是這是個(gè)開始階段,我們覺得有幫助)。

模擬設(shè)備驅(qū)動(dòng)

下一步是在存根下插入真正的功能,我可以使用這些功能來模擬設(shè)備驅(qū)動(dòng)的功能。這就是要用到GoogleMock。GoogleMock 是一個(gè)C++框架,我們用它來模擬C函數(shù)(實(shí)際上GoogleMock只是個(gè)C++框架,對C++不熟悉的開發(fā)者不必為此擔(dān)心。所有的事都會(huì)由單內(nèi)襯(one-liner)的宏和函數(shù)完成,所以你會(huì)感到在沒C++知識下創(chuàng)建和使用模擬也很容易)。

我們選擇模擬GoogleMock中的一些設(shè)備驅(qū)動(dòng),叫做xdriverMock。在xdriverMock中,有我們感興趣的每個(gè)函數(shù)的聲明。例如 Xiic_DynInit(),我們使用MOCK_METHOD1,用來定義一個(gè)輸入變量的函數(shù)。(類似的,也有MOCK_METHOD2,MOCK_METHOD3之類的來聲明有任意個(gè)輸入變量的函數(shù)。)MOCK_METHOD宏定義了很多一般特性使得編寫單元測試和測試相互作用變得非常容易。更多好處還在后面。

模擬設(shè)備驅(qū)動(dòng)

作為我們 xdriverMock的一部分,我們也有叫做getXdriverMock()和destroyXdriverMock()的全局函數(shù)分別來實(shí)例化和析構(gòu)這個(gè)mock對象。如果你熟悉C++,getXdriverMock()和destroyXdriverMock()函數(shù)很像是構(gòu)造函數(shù)和析構(gòu)函數(shù);它們構(gòu)造一個(gè)xdriverMock的實(shí)例用于測試,然后析構(gòu)作為碎片收集。在具體實(shí)現(xiàn)的文件里這些方法看上去如下:

模擬設(shè)備驅(qū)動(dòng)

這個(gè)難題的最后一塊就是調(diào)用GoolgeMock來填充Xiic_DynInit()函數(shù)的存根應(yīng)用 。如下所示:

模擬設(shè)備驅(qū)動(dòng)

有了這個(gè),我們就成功地用GoogleMock代替了真正設(shè)備驅(qū)動(dòng)的功能。對單元測試來說,我們現(xiàn)在有了對設(shè)備驅(qū)動(dòng)功能完整的控制,也擺脫了對硬件的依賴。記住我們的首要任務(wù)是驗(yàn)證分配給 I2C控制器的基地址,現(xiàn)在我們可以開始編寫驗(yàn)證應(yīng)用程序正常工作的單元測試了。

測試你的第一個(gè)功能

為了用我們新的設(shè)備驅(qū)動(dòng)模擬器開始編寫測試,我們首先需要建立GoogleTest線束,這相對簡單,涉及新建測試單元實(shí)例,叫做licCtrl的類和xdriverMock的一個(gè)副本。如果你的測試單元是純粹的C函數(shù)而不是像我們這樣的C++類,當(dāng)然你就只要直接調(diào)用C函數(shù),不必管該類實(shí)例了。

模擬設(shè)備驅(qū)動(dòng)

對單元測試來說,大多數(shù)有關(guān)GoogleMock的相互作用是通過EXPECT_CALL宏發(fā)生的。有了這個(gè)宏,我們能夠驗(yàn)證我們的應(yīng)用程序滿足所有期望的與設(shè)備驅(qū)動(dòng)的相互作用。通常的做法例如,我們的應(yīng)用程序通過叫做init()的licCtrl的一個(gè)成員函數(shù)來調(diào)用Xiic_DynInit()。確認(rèn)運(yùn)行的測試如下:

模擬設(shè)備驅(qū)動(dòng)

測試程序的第一行中,我們使用EXPECT_CALL來說明,當(dāng)測試期間輸入值等于HDMI I2C基地址時(shí),XIic_DynInit()函數(shù)應(yīng)當(dāng)被調(diào)用一次。第二行是調(diào)用我們iicCtrl應(yīng)用代碼里的init()方法。如果init()方法無法用我們期望的地址調(diào)用Xiic_DynInit()函數(shù),一個(gè)斷言將在該模擬中發(fā)生,并且測試以失敗告終。否則,測試通過。

這個(gè)測試的模式很通用,這也是我們選擇在這兒展示的原因。不過,你可以設(shè)置更為復(fù)雜的預(yù)期來測試,例如返回值,指針的值和參考變量等等。

這些是使用GoogleMock來模擬設(shè)備驅(qū)動(dòng)和模仿與真實(shí)硬件間的相互作用,運(yùn)行于Zynq-7000 SoC 的ARM Cortex-A9 MPCore CPU上的測試應(yīng)用程序的基本原理。然而這個(gè)例子只展示了GoogleMock模擬的一個(gè)設(shè)備驅(qū)動(dòng)函數(shù),我們有超過75個(gè)函數(shù)以相同的方式被模擬,以便讓我們在應(yīng)用程序中運(yùn)行超過100種測試;全都不用目標(biāo)硬件。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1844

    瀏覽量

    85384
  • 模擬
    +關(guān)注

    關(guān)注

    7

    文章

    1426

    瀏覽量

    83940
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28416
收藏 人收藏

    評論

    相關(guān)推薦

    擬設(shè)備模擬實(shí)體設(shè)備和云端通信

    一、虛擬設(shè)備是什么?虛擬設(shè)備是機(jī)智云云端可自動(dòng)生成的一個(gè)仿真智能硬件,可模擬要開發(fā)或正在開發(fā)的智能硬件,來進(jìn)行云端設(shè)備控制、手機(jī)APP控制、上報(bào)數(shù)據(jù)等需求。通常,使用虛
    發(fā)表于 02-16 16:55

    模擬設(shè)計(jì)的原則有哪些

    模擬設(shè)計(jì)的100條圣經(jīng)
    發(fā)表于 02-25 07:24

    擬設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)開發(fā)

     摘  要: 介紹虛擬設(shè)備驅(qū)動(dòng)程序開發(fā)的基本知識以及VxDs與WIN32應(yīng)用程序通訊的幾種常用方法,并給出了用VtoolsD開發(fā)VxDs的具體實(shí)例。     關(guān)鍵詞: 虛擬設(shè)備,
    發(fā)表于 11-18 17:25 ?38次下載

    基于開源虛擬機(jī)的模擬設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)

    在研究了QEMU虛擬機(jī)的工作原理及其I/O框架基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了模擬QBUS設(shè)備之間,基于socket設(shè)備組通信模型,模擬QBUS設(shè)備與物
    發(fā)表于 10-08 15:09 ?30次下載
    基于開源虛擬機(jī)的<b class='flag-5'>模擬設(shè)備</b>的設(shè)計(jì)與實(shí)現(xiàn)

    精密模擬設(shè)計(jì)中的噪聲分析

    精密模擬設(shè)計(jì)中的噪聲分析
    發(fā)表于 01-14 15:09 ?17次下載

    7000應(yīng)用開發(fā)技巧:模擬設(shè)備驅(qū)動(dòng)(Mocking)

    模擬設(shè)備驅(qū)動(dòng)和硬件以及使用GoogleTest和GoogleMock來測試應(yīng)用程序代碼。 在我們的例子中
    發(fā)表于 02-09 06:36 ?522次閱讀
    7000應(yīng)用開發(fā)技巧:<b class='flag-5'>模擬設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b>(Mocking)

    模擬設(shè)備高速轉(zhuǎn)換器

    模擬設(shè)備高速轉(zhuǎn)換器(HSC)接口板設(shè)計(jì)用于Eval控制為模擬器件的高速CMOS a/D轉(zhuǎn)換器提供完整的評估系統(tǒng)。HSC接口板用作高速緩沖器用于以高達(dá)50 MHz的速率捕獲數(shù)字?jǐn)?shù)據(jù)的內(nèi)存來自大多數(shù)模擬設(shè)備的HSC評估板。然后將捕獲
    發(fā)表于 07-18 16:51 ?13次下載

    TI各種模擬設(shè)計(jì)工具介紹

    TI各種模擬設(shè)計(jì)工具介紹
    發(fā)表于 10-16 12:56 ?7次下載
    TI各種<b class='flag-5'>模擬設(shè)</b>計(jì)工具介紹

    Cadence教程之如何使用VieloSo模擬設(shè)計(jì)環(huán)境進(jìn)行設(shè)計(jì)

    本手冊描述如何使用VieloSo模擬設(shè)計(jì)環(huán)境來模擬模擬設(shè)計(jì)。VieloSo模擬設(shè)計(jì)環(huán)境被記錄在一系列在線手冊中。下面的文件給你更多的信息。 FieloSo高級分析工具用戶指南提供有關(guān)蒙
    發(fā)表于 09-20 08:00 ?0次下載
    Cadence教程之如何使用VieloSo<b class='flag-5'>模擬設(shè)</b>計(jì)環(huán)境進(jìn)行設(shè)計(jì)

    PSoC Creator模擬設(shè)計(jì):如何解決模擬電壓問題

    本視頻介紹了采用PSoC Creator進(jìn)行模擬設(shè)計(jì)的各種技巧和注意事項(xiàng)。
    的頭像 發(fā)表于 07-01 12:16 ?2130次閱讀

    PSoC Creator模擬設(shè)計(jì):Analog Device Viewer

    本視頻介紹了采用PSoC Creator進(jìn)行模擬設(shè)計(jì)的各種技巧和注意事項(xiàng)。
    的頭像 發(fā)表于 07-01 12:41 ?3060次閱讀

    PSoC Creator模擬設(shè)計(jì):引腳放置的模擬及注意事項(xiàng)

    本視頻介紹了采用PSoC Creator進(jìn)行模擬設(shè)計(jì)的各種技巧和注意事項(xiàng)。
    的頭像 發(fā)表于 07-01 12:04 ?3702次閱讀

    AN639:模擬設(shè)備能耗(ADE)產(chǎn)品:常見問題

    AN639:模擬設(shè)備能耗(ADE)產(chǎn)品:常見問題
    發(fā)表于 04-24 14:32 ?2次下載
    AN639:<b class='flag-5'>模擬設(shè)備</b>能耗(ADE)產(chǎn)品:常見問題

    EE-74:模擬設(shè)備串行端口開發(fā)和故障排除指南

    EE-74:模擬設(shè)備串行端口開發(fā)和故障排除指南
    發(fā)表于 04-27 09:58 ?2次下載
    EE-74:<b class='flag-5'>模擬設(shè)備</b>串行端口開發(fā)和故障排除指南

    理解機(jī)智云虛擬設(shè)備與實(shí)際設(shè)備的關(guān)系

    在使用機(jī)智云平臺進(jìn)行設(shè)備管理和應(yīng)用開發(fā)時(shí),用戶常常會(huì)遇到虛擬設(shè)備無法控制實(shí)際設(shè)備的問題。這種情況的根源在于虛擬設(shè)備的本質(zhì)和功能定位。Q虛擬設(shè)備
    的頭像 發(fā)表于 09-22 08:02 ?239次閱讀
    理解機(jī)智云虛<b class='flag-5'>擬設(shè)備</b>與實(shí)際<b class='flag-5'>設(shè)備</b>的關(guān)系
    主站蜘蛛池模板: 日夜啪啪一区二区三区| 精品国产成人AV在线看| 午夜一级视频| 麻豆第一区MV免费观看网站| 国产 浪潮AV性色四虎| 一本大道无码AV天堂欧美 | 女的把腿张开男的往里面插| 国产无遮挡又黄又爽在线视频| 97精品在线观看| 亚洲 欧美 中文字幕 在线| 男人J放进女人P全黄网站| 国产午夜免费不卡精品理论片| 99久久精品一区二区三区| 亚洲黄色免费在线观看| 日本不卡一二三| 久久人妻AV一区二区软件| 国产福利视频一区二区| 97人妻丰满熟妇AV无码| 亚洲欧美激情精品一区二区| 肉动漫无修3D在线观看| 美女脱衣服搞鸡| 国产一区二区三区国产精品| www伊人网| 18和谐综合色区| 亚洲精品国产品国语在线试看| 全免费A敌肛交毛片免费懂色AV| 久久精品国产亚洲AV蜜臀| 国产精品久久婷婷五月色| RUNAWAY韩国动漫免费官网版| 在线不卡日本v二区| 亚洲AV久久无码精品蜜桃| 日韩经典欧美一区二区三区| 美女一级毛片免费不卡视频| 精品日产1区2卡三卡麻豆| 国产精品嫩草影视在线观看| 超碰视频在线| ewp绞死vk失禁编| 91精选国产| 中文视频在线观看| 亚洲综合色在线视频久| 亚洲精品卡2卡3卡4卡5卡区|