首頁 > 評(píng)測 > 又一款I(lǐng)oT開發(fā)板-ADICUP3029開發(fā)板評(píng)測

又一款I(lǐng)oT開發(fā)板-ADICUP3029開發(fā)板評(píng)測

  • 作者:zhanzr
  • 來源:21ic
  • [導(dǎo)讀]
  • 最近在深圳的嵌入式展上,MOUSER攜手ADI等廠牌推出現(xiàn)場免費(fèi)送開發(fā)板的活動(dòng),筆者也去薅了一把羊毛。ADI的板子,平常大家應(yīng)該接觸的不多,從ADICUP3029來管窺一豹吧。

評(píng)測方面代碼移植沒有什么可講的, 因?yàn)閷儆跇?biāo)準(zhǔn)代碼.這里只把結(jié)果貼出來:

Without Microlib:

Microseconds for one run through Dhrystone[30-4730]: 15.7

Dhrystones per Second: 63829.8

With Microlib:

Microseconds for one run through Dhrystone[29-6509]: 21.6

Dhrystones per Second: 46296.3

這個(gè)結(jié)果符合一般Cortex M3內(nèi)核的性能,至于與其他處理器對(duì)比,就留給讀者自己去進(jìn)行了.另外作者還做了Coremark的評(píng)測移植,限于篇幅這里贅述.感興趣的讀者可以去文末的Git頁面中下載相關(guān)代碼進(jìn)一步研究.

Demo3:硬件SHA計(jì)算例子評(píng)測

隨著IoT應(yīng)用逐漸展開,還有最近比特幣的瘋狂走勢,相信很多程序員開始更深入研究加密算法與Hash算法.SHA256屬SHA2的一種,簡單來講是計(jì)算Hash值的一種算法.特點(diǎn)是結(jié)果與原數(shù)據(jù)相關(guān)極小,且原始數(shù)據(jù)的些微變動(dòng)能引起結(jié)果的巨大改變.比如看下面的例子:

SHA256("The quick brown fox jumps over the lazy dog")

d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

SHA256 ("The quick brown fox jumps over the lazy dog.")

ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c

這些特點(diǎn)使得SHA算法廣泛應(yīng)用在當(dāng)今的加密通信中.很多人下載大文件之后會(huì)比較其sha或者md5值來驗(yàn)證是否下載完整或者未被改動(dòng)的文件,這是sha算法的一種簡單應(yīng)用.

如果用軟件實(shí)現(xiàn)SHA256算法,對(duì)于嵌入式平臺(tái)來講最大問題是性能.在加密通信過程中,SHA算法往往要反復(fù)執(zhí)行.所以ADuCM3029這個(gè)芯片內(nèi)置了硬件加速模塊,這里看看如何使用這個(gè)模塊來計(jì)算SHA256值. 首先準(zhǔn)備三個(gè)測試用例,后面用以驗(yàn)證計(jì)算結(jié)果:

image16.png

具體使用硬件加速器的簡要步驟:

/* Open the crypto device */

eResult = adi_crypto_Open(CRYPTO_DEV_NUM, DeviceMemory, sizeof(DeviceMemory), &hDevice);

/* Register Callback */

eResult = adi_crypto_RegisterCallback (hDevice, CryptoCallback, NULL);

/* Format SHA message 1 */

SHA_FormatInput(

Sha1_Message ,

sizeof(Sha1_Message)*8u,

Sha1_FormattedMessage,

sizeof(Sha1_FormattedMessage)*8u

);

這里為什么要對(duì)輸入進(jìn)行格式化呢,因?yàn)锳DuCM302x的SHA硬件加速器需要的數(shù)據(jù)的字序與輸入的數(shù)據(jù)字序不同且不能在線調(diào)整字序,導(dǎo)致需要重新排列一下子.后來的產(chǎn)品改進(jìn)了這點(diǎn),使用起來更方便.這個(gè)可以說是ADuCM302x的一個(gè)小bug.

/* Submit the buffer for SHA hashing */

eResult = adi_crypto_SubmitBuffer (hDevice, &Buffer1);

/* Enable the device */

eResult = adi_crypto_Enable (hDevice, true);

/* retrieve the submitted buffer from the driver */

eResult = adi_crypto_GetBuffer (hDevice, &pGottenBuffer);

/* Disable the device */

eResult = adi_crypto_Enable (hDevice, false);

簡單來講,就是把數(shù)據(jù)格式化為加速器所需要的格式,提交給它,再等輸出即可.

與前面的代碼一樣,請(qǐng)到文末的連接中下載此例程的完整工程代碼.

Cross Core Embedded Studio篇

這個(gè)工具是ADI公司自己推出的開發(fā)工具,目的是兼容ADI所有器件的開發(fā).風(fēng)格上來說是Eclipse的,所以界面操作也不需要再次熟悉的過程.唯一有點(diǎn)小問題的是正式版本要花錢買,對(duì)于自己DIY或者預(yù)算有限的微小公司,價(jià)格不能算便宜.好在ADI公司考慮到了這一點(diǎn),在這個(gè)開發(fā)板中附帶了一個(gè)有限版本License.用這個(gè)License就可以使用Studio來開發(fā)ADICUP3029.

17.png

圖 開發(fā)板專用License

下載安裝不用說了,第一次運(yùn)行需要輸入License:

image18.png

圖 輸入License

一路next下來就可以了.但是安裝注冊(cè)成功現(xiàn)在還不能開發(fā)這個(gè)芯片,因?yàn)樗闹С职沒有被安裝.這個(gè)支持包跟Keil MDK的是一樣子的,理論上直接導(dǎo)入MDK的支持包即可.但是為了便于描述,還是通過Studio這個(gè)工具來下載.

image19.png

image19.png圖 這個(gè)菜單很隱晦

image20.png

圖 連圖標(biāo)也跟Keil MDK中的一樣的CMSIS Package Manager

打開這個(gè)界面,安裝什么就跟Keil MDK的操作一樣了.感到有點(diǎn)奇怪的是,其他公司的支持包也列在上面了,如果安裝了其他公司的支持包是否也能用這個(gè)工具來開發(fā)相應(yīng)芯片呢?限于篇幅原因,作者這里不節(jié)外生枝了.

image21.png

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+