工業(yè)和家用電器市場中的各種應(yīng)用要求使用數(shù)學(xué)運算來實現(xiàn)不同的算法和計算。基于 Cortex?-M0+的單片機包含加法、減法和乘法指令。Cortex-M0+架構(gòu)沒有用于除法運算的匯編指令,除法邏輯可以根據(jù)不同的編譯器而變化?;?Arm? Cortex-M0+的單片機(MCU)具有一個可配置選項,可通過該選項使用快速乘法器進行乘法運算。基于該可配置選項,乘法運算可以為單個周期指令到最多 32 個周期指令不等。 SAMC21(一款 Cortex-M0+ MCU)非常適合需要數(shù)學(xué)計算的應(yīng)用。SAMC21 MCU 具有可進行乘法運算的快速單周期乘法器選項,還具有一個新的外設(shè),稱為除法和平方根加速器(Division and Square RootAccelerator,DIVAS),可用于執(zhí)行快速除法和平方根運算。
概念
適用于Arm架構(gòu)的應(yīng)用程序二進制接口(ABI)包含一系列標(biāo)準(zhǔn),其中有些是開放的標(biāo)準(zhǔn),還有一些是 Arm 架構(gòu)專用標(biāo)準(zhǔn)。ABI 可管控各種基于 Arm 的執(zhí)行環(huán)境中二進制文件和開發(fā)工具的互操作。支持 Arm MCU 的編譯器需符合這些標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)的其中一項是適用于 Arm 架構(gòu)的運行時 ABI。此標(biāo)準(zhǔn)為 ABI 指定輔助函數(shù),使之能夠支持 C、C++和算術(shù)運算。對于除法,編譯器會用各自的庫代碼替換除法和模運算符(即,使用重復(fù)減法來實現(xiàn)除法)。該庫代碼將數(shù)百個字節(jié)添加到代碼存儲器,MCU 消耗 50 到 400 之間任意數(shù)量的時鐘周期,具體取決于操作數(shù)的大小。編譯器可通過過載運行時ABI 輔助方法來使用 DIVAS 功能。DIVAS 展現(xiàn)出的性能優(yōu)于編譯器除法(即,比除法 65535/3 少 50 個時鐘周期)。DIVAS 支持整數(shù)平方根運算,而不需要任何額外的庫依賴關(guān)系。
解決方案/實現(xiàn)
DIVAS 只支持 32 位整數(shù)除法。用于除法運算的運行時 ABI 輔助方法過載,以便編譯器了解除法應(yīng)使用DIVAS 功能進行除法。根據(jù)運行時 ABI 標(biāo)準(zhǔn),32 位整數(shù)除法函數(shù)在 r0 中返回商,或在{r0, r1}中返回商和余數(shù)。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
原文標(biāo)題:文檔:如何利用 Cortex?-M0+ 單片機實現(xiàn)更快的數(shù)學(xué)計算
文章出處:【微信號:MicrochipTechnology,微信公眾號:Microchip微芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
相關(guān)推薦
電子發(fā)燒友網(wǎng)站提供《C2000?MCU的運行時堆棧大小監(jiān)測.pdf》資料免費下載
發(fā)表于 09-11 09:30
?0次下載
具有重要意義。本文將詳細介紹如何使用三菱PLC編程實現(xiàn)累計運行時間的統(tǒng)計功能。 一、概述 累計運行時間是指設(shè)備或系統(tǒng)在一定時間內(nèi)的總運行時間。在工業(yè)生產(chǎn)中,對設(shè)備的累計運行時間進行統(tǒng)計
發(fā)表于 06-20 11:31
?1769次閱讀
變頻器作為現(xiàn)代工業(yè)控制領(lǐng)域的重要設(shè)備,廣泛應(yīng)用于電機調(diào)速控制中。然而,在實際應(yīng)用中,有時會遇到變頻器帶動電機運行時產(chǎn)生抖動的問題。這種抖動不僅影響電機的正常運行,還可能對生產(chǎn)效率和設(shè)備壽命造成
發(fā)表于 05-31 14:43
?4701次閱讀
stm32cubeIDE 代碼運行時間,如何查看?就如 keil 調(diào)試時候那樣,可以測試代碼的運行時間。但是在stm32cubeIDE 中,一直沒有找到這個功能,不知道哪位高人可以提示下在哪里查看的?
發(fā)表于 04-16 08:10
我有一個項目需要在現(xiàn)場更新 SOTA。 這需要在運行時更新必要的 UCB 值。 我已經(jīng)看過擦除/編程 PFLASH 和 DFLASH 的示例代碼,但我還沒有找到任何特定于 UCB 內(nèi)存的代碼。 我
發(fā)表于 01-22 07:18
電機過載保護是什么原因造成的 電機過載保護怎么解決? 電機過載保護是指在電機運行時因為電流過載而引起的一種保護措施。電機
發(fā)表于 12-25 11:32
?4555次閱讀
請教各位高手,我剛接觸變頻,問大家?guī)讉€問題:
一、變頻器具有限制電流的功能,為什么電機運行時,還能過載?
二、限制了電流的轉(zhuǎn)矩電流,是不是電機的輸入電流同樣也會受到限制?
三、限制了電機
發(fā)表于 12-25 07:28
變頻電機低速運行時,轉(zhuǎn)速變化大嗎?詳解轉(zhuǎn)速變化的影響因素? 變頻電機低速運行時,轉(zhuǎn)速變化較小的原因有多個。下面將從電機結(jié)構(gòu)、電機參數(shù)、負載特性等方面詳細解釋這些影響因素。 1. 電機結(jié)構(gòu) 變頻電機
發(fā)表于 12-21 10:50
?1007次閱讀
JVM(Java虛擬機)是Java程序的運行環(huán)境,它提供了內(nèi)存管理機制來管理Java程序所需的運行時數(shù)據(jù)內(nèi)存。這些運行時數(shù)據(jù)內(nèi)存包括堆內(nèi)存、棧內(nèi)存、方法區(qū)(元數(shù)據(jù)區(qū))、程序計數(shù)器和本地
發(fā)表于 12-05 14:09
?472次閱讀
JVM是Java Virtual Machine(Java虛擬機)的縮寫,它是Java編程語言的運行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機器代碼,并且在運行時管理Java程序的內(nèi)存。JVM
發(fā)表于 12-05 14:08
?471次閱讀
當(dāng)RUN信號為TRUE時,開始計時,為FALSE時停止計時,單次運行時間清零,長按RESET為5秒時,單次和總運行時間都清零。
發(fā)表于 11-27 09:59
?1673次閱讀
如何在 CFD 設(shè)計中利用網(wǎng)格維護幾何形狀并減少運行時間?
發(fā)表于 11-24 17:07
?444次閱讀
? ? ? ?實施制造執(zhí)行系統(tǒng)(MES)的好處很多。其中,MES軟件可以通過多種方式幫助增加機器的正常運行時間。正常運行時間是指制造機械或設(shè)備的效率和可用性。每當(dāng)機器停機(無論原因如何)時,制造商
發(fā)表于 11-14 15:28
?2次下載
緊密耦合的容器運行時繼承了主機操作系統(tǒng)的安全態(tài)勢和攻擊面。運行時或主機內(nèi)核中的任何漏洞及其利用都會成為攻擊者的潛在切入點。
發(fā)表于 11-03 15:24
?596次閱讀
運行時環(huán)境(RTE) AUTOSAR CP運行時環(huán)境(RTE)是AUTOSAR架構(gòu)中的核心組件,它實現(xiàn)了AUTOSAR虛擬功能總線(VFB)的接口,并提供了通信基礎(chǔ)設(shè)施和訪問基礎(chǔ)軟件組件(如操作系統(tǒng)
發(fā)表于 10-27 15:44
?1226次閱讀
評論