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

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

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

評測方面代碼移植沒有什么可講的, 因為屬于標準代碼.這里只把結(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

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

Demo3:硬件SHA計算例子評測

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

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

d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

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

ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c

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

如果用軟件實現(xiàn)SHA256算法,對于嵌入式平臺來講最大問題是性能.在加密通信過程中,SHA算法往往要反復執(zhí)行.所以ADuCM3029這個芯片內(nèi)置了硬件加速模塊,這里看看如何使用這個模塊來計算SHA256值. 首先準備三個測試用例,后面用以驗證計算結(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

);

這里為什么要對輸入進行格式化呢,因為ADuCM302x的SHA硬件加速器需要的數(shù)據(jù)的字序與輸入的數(shù)據(jù)字序不同且不能在線調(diào)整字序,導致需要重新排列一下子.后來的產(chǎn)品改進了這點,使用起來更方便.這個可以說是ADuCM302x的一個小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ù)格式化為加速器所需要的格式,提交給它,再等輸出即可.

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

Cross Core Embedded Studio篇

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

17.png

圖 開發(fā)板專用License

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

image18.png

圖 輸入License

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

image19.png

image19.png圖 這個菜單很隱晦

image20.png

圖 連圖標也跟Keil MDK中的一樣的CMSIS Package Manager

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

image21.png

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

網(wǎng)友評論