工業和家用電器市場中的各種應用要求使用數學運算來實現不同的算法和計算。基于 Cortex?-M0+的單片機包含加法、減法和乘法指令。Cortex-M0+架構沒有用于除法運算的匯編指令,除法邏輯可以根據不同的編譯器而變化。基于 Arm? Cortex-M0+的單片機(MCU)具有一個可配置選項,可通過該選項使用快速乘法器進行乘法運算。基于該可配置選項,乘法運算可以為單個周期指令到最多 32 個周期指令不等。 SAMC21(一款 Cortex-M0+ MCU)非常適合需要數學計算的應用。SAMC21 MCU 具有可進行乘法運算的快速單周期乘法器選項,還具有一個新的外設,稱為除法和平方根加速器(Division and Square RootAccelerator,DIVAS),可用于執行快速除法和平方根運算。
概念
適用于Arm架構的應用程序二進制接口(ABI)包含一系列標準,其中有些是開放的標準,還有一些是 Arm 架構專用標準。ABI 可管控各種基于 Arm 的執行環境中二進制文件和開發工具的互操作。支持 Arm MCU 的編譯器需符合這些標準。這些標準的其中一項是適用于 Arm 架構的運行時 ABI。此標準為 ABI 指定輔助函數,使之能夠支持 C、C++和算術運算。對于除法,編譯器會用各自的庫代碼替換除法和模運算符(即,使用重復減法來實現除法)。該庫代碼將數百個字節添加到代碼存儲器,MCU 消耗 50 到 400 之間任意數量的時鐘周期,具體取決于操作數的大小。編譯器可通過過載運行時ABI 輔助方法來使用 DIVAS 功能。DIVAS 展現出的性能優于編譯器除法(即,比除法 65535/3 少 50 個時鐘周期)。DIVAS 支持整數平方根運算,而不需要任何額外的庫依賴關系。
解決方案/實現
DIVAS 只支持 32 位整數除法。用于除法運算的運行時 ABI 輔助方法過載,以便編譯器了解除法應使用DIVAS 功能進行除法。根據運行時 ABI 標準,32 位整數除法函數在 r0 中返回商,或在{r0, r1}中返回商和余數。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
原文標題:文檔:如何利用 Cortex?-M0+ 單片機實現更快的數學計算
文章出處:【微信號:MicrochipTechnology,微信公眾號:Microchip微芯】歡迎添加關注!文章轉載請注明出處。
相關推薦
時,應考慮以下幾個因素:能力確定要連接到UPS的設備的電源要求。選擇具有足夠容量的UPS,以在所需的持續時間內處理負載。電池運行時間考慮在停電期間需要UPS供電多長時間
發表于 12-06 09:28
?148次閱讀
逆變器的使用需要了解影響電池性能和整體運行時間的因素。讓我們深入探討最大化電源設置的關鍵考慮因素。逆變器效率:逆變器的效率至關重要。當逆變器將電池的DC電能轉換為交流
發表于 10-18 10:41
?323次閱讀
電子發燒友網站提供《C2000?MCU的運行時堆棧大小監測.pdf》資料免費下載
發表于 09-11 09:30
?0次下載
變壓器空載運行時功率因數低是一個常見的電氣工程問題。功率因數是指在交流電路中,實際功率與視在功率的比值。在變壓器空載運行時,由于沒有負載,變壓器的輸出功率為零,但仍然存在輸入功率,因此功率因數會很低
發表于 08-26 11:09
?1999次閱讀
眾所周知,直線電機采用了簡化的結構設計,沒用中間的傳動機構,能夠減少振動和共振,使得運行時的噪音得到了較好地控制。 直線電機的主要原材料是磁鐵和銅線,由此也能看出,它的工作原理是基于磁懸浮技術,而磁懸浮技術
發表于 08-12 11:37
?445次閱讀
使用壽命。?電機過載的原因主要包括負載過大、?供電電壓異常、?轉子阻力過大等。? ? 電動機的過載保護指的是在電機承受超過其額定負載時,通過一系列保護措施保護電動機的安全運行。電動機有多種過載
發表于 07-21 15:30
?2329次閱讀
具有重要意義。本文將詳細介紹如何使用三菱PLC編程實現累計運行時間的統計功能。 一、概述 累計運行時間是指設備或系統在一定時間內的總運行時間。在工業生產中,對設備的累計運行時間進行統計
發表于 06-20 11:31
?2372次閱讀
變頻器作為現代工業控制領域的重要設備,廣泛應用于電機調速控制中。然而,在實際應用中,有時會遇到變頻器帶動電機運行時產生抖動的問題。這種抖動不僅影響電機的正常運行,還可能對生產效率和設備壽命造成
發表于 05-31 14:43
?5809次閱讀
我使用的是 AURIX TC397 開發板,可以在運行時從 Tricore 域對 SWAP UCB 進行編程,但無法從 HSM 域進行編程。 我需要這種功能,以便在固件更新后交換存儲庫。 是否有我
發表于 05-31 06:37
STM8S 在IAR軟件仿真Simulator怎么查看運行時間?在某些芯片通信時,會要求延時5us,10us,150ms等,這些延時不需要太精確,只要大概就好,但怎么在Simulator仿真里能通過斷點查看,即兩個斷點之間的運行時間呢?
除了通過IO輸出外圍用儀器測試,能
發表于 05-09 07:48
stm32cubeIDE 代碼運行時間,如何查看?就如 keil 調試時候那樣,可以測試代碼的運行時間。但是在stm32cubeIDE 中,一直沒有找到這個功能,不知道哪位高人可以提示下在哪里查看的?
發表于 04-16 08:10
我想知道如何在運行時計算設計中使用的時鐘頻率(設計使用時鐘組件),尤其是組件內部的時鐘,例如 UART。
例如,使用 clock_getSourceRegister () 返回
發表于 01-24 06:09
我有一個項目需要在現場更新 SOTA。 這需要在運行時更新必要的 UCB 值。 我已經看過擦除/編程 PFLASH 和 DFLASH 的示例代碼,但我還沒有找到任何特定于 UCB 內存的代碼。 我
發表于 01-22 07:18
變壓器空載運行時功率因數很低是什么原因? 變壓器空載運行時功率因數很低的原因有多種可能,以下將逐一介紹這些可能性。 1. 磁化電流造成的功率因數低:當變壓器空載運行時,變壓器的鐵芯需要維持磁通的運動
發表于 01-19 13:58
?4661次閱讀
請問M480系列的MCU,可以獲取單次上電的CLK運行時長嗎?
例如 設定一個變量,long 型的,記錄自上電的運行時長。謝謝!
發表于 01-16 07:38
評論