chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

高實(shí)時(shí)性程序優(yōu)化設(shè)計(jì)

先楫半導(dǎo)體HPMicro ? 2024-07-03 08:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

工程苗小兵

先楫資深FAE工程師

電力電子與電力傳動(dòng)專業(yè)碩士研究生,一個(gè)從事了20多年的功率控制的工程小兵,有多年的電機(jī)驅(qū)動(dòng)和電源控制經(jīng)驗(yàn),專注電力電子控制方向。

簡(jiǎn) 介

先楫半導(dǎo)體為客戶提供了480MHz - 1GHz的不同主頻高性能MCU,適用于不同高算力、實(shí)時(shí)控制要求的場(chǎng)合。在電機(jī)、電源應(yīng)用場(chǎng)合,需要us級(jí)響應(yīng)和運(yùn)算,對(duì)響應(yīng)時(shí)間的一致性、快速性都有非常高的要求。隨著MCU主頻提高,MCU的存儲(chǔ)方式和總線頻率也更加多樣化,先楫MCU中內(nèi)部有ILM、DLM、AXI_SRAM、flash等多種存儲(chǔ)空間,但同時(shí)不同存儲(chǔ)需要的時(shí)鐘也不同,給軟件工程師設(shè)計(jì)帶來(lái)很大困擾。先楫在官網(wǎng)已經(jīng)提供了優(yōu)化DSP和FFT運(yùn)算、使用片上SRAM等相關(guān)應(yīng)用文檔。

本文重點(diǎn)簡(jiǎn)述基于電機(jī)、電源應(yīng)用的具體代碼優(yōu)化方案。

經(jīng)驗(yàn)分享

1

ILM程序優(yōu)化

以下展示的是HPM6280的系統(tǒng)框圖

b034b3e4-38d1-11ef-a655-92fbcf53809c.png

CPU內(nèi)部包含了ILM、DLM、cache,這些內(nèi)存都可達(dá) 600Mhz主頻。AXI總線上有AXI_SRAM和ILM_SLV、DLM_SLV,訪問(wèn)頻率可達(dá)200MHz,總線寬度64bit,可以cache緩存。XPI接口為QSPI總線,最高頻率133Mhz,雙沿采樣,通常只有4bit寬度。其中AHB總線還有32kbyte SRAM,但主要用于外設(shè)存儲(chǔ),這里不做贅述。

b0635730-38d1-11ef-a655-92fbcf53809c.png

實(shí)際應(yīng)用中程序都會(huì)放到flash中存儲(chǔ),而XPI的接口速度極大限制了代碼執(zhí)行效率。此外,由于XPI接口是可以cache緩存,導(dǎo)致XPI執(zhí)行時(shí)cache命中和沒(méi)有命中的運(yùn)行時(shí)間差別非常大,代碼一致性很差。為了方便客戶使用,可以生成工程時(shí)選用debug/release模式,指定程序在ILM中執(zhí)行。隨后通過(guò)先楫manufacture tool可以實(shí)現(xiàn)鏡像功能,即生成在從FLASH 加載的RAM啟動(dòng)鏡像。通過(guò)這種方式實(shí)現(xiàn)代碼完全在ILM中執(zhí)行。

鏡像助手可將SDK中的debug/release 構(gòu)建的應(yīng)用轉(zhuǎn)化為FLASH啟動(dòng)鏡像。

關(guān)鍵參數(shù):

固件首地址相對(duì)容器首地址偏移

加載地址

入口點(diǎn)地址

b091d0ce-38d1-11ef-a655-92fbcf53809c.png

2

SEGGER編譯優(yōu)化在AXI_RAM執(zhí)行

由于ILM空間限制,很多電源或電機(jī)復(fù)雜應(yīng)用無(wú)法將程序全部放到ILM中執(zhí)行,會(huì)導(dǎo)致因讀取存儲(chǔ)速度限制了CPU算力。

HPM6200、HPM6E00系列在AXI總線的大容量SRAM可以配置成程序存儲(chǔ),其中HPM6260、HPM6E60還可以將CPU1的ILM、DLM配置到AXI總線上,基本滿足了絕大部分應(yīng)用。AXI RAM主頻可達(dá)200Mhz,64bit位寬,有cache緩存,可以大大減少程序讀取對(duì)CPU性能的影響。

segger編譯器可以自動(dòng)生成flash加載到RAM的拷貝代碼,只要在linker文件中配置相應(yīng)特性,不需要額外修改flash拷貝代碼。

在linker文件中重新劃分AXI RAM,增加代碼區(qū)域。在軟件中指定代碼生成后存放區(qū)域。

通過(guò)SDK GUI直接指定修改后的linker文件,即可實(shí)現(xiàn)代碼在ILM+AXIRAM中執(zhí)行。

b0be2e58-38d1-11ef-a655-92fbcf53809c.png

代碼指定區(qū)域可以通過(guò)SEEGER IDE批量指定文件或文件夾的程序放置區(qū)域,也可以在函數(shù)名前面增加函數(shù)宏定義。

b0ecbb88-38d1-11ef-a655-92fbcf53809c.pngb126fc8a-38d1-11ef-a655-92fbcf53809c.png

3

GCC編譯優(yōu)化在AXI_RAM執(zhí)行

先楫產(chǎn)品支持Andes加速指令,可以加速三角函數(shù)、指數(shù)運(yùn)算等復(fù)雜運(yùn)行速度,但同時(shí)需要GCC編譯器支持。

在linker文件中重新劃分AXI RAM,增加代碼區(qū)域。在軟件中指定代碼生成后存放區(qū)域。

與segger編譯器不同,GCC編譯需要增加額外代碼實(shí)現(xiàn)flash加載到RAM的拷貝,需要修改相應(yīng)的reset.c文件。

支持Andes加速指令需要引用hpm_math.h庫(kù)文件,會(huì)調(diào)用libdspf.a、libdspd.a、libdsp.a等封裝庫(kù)。由于封裝庫(kù)非明文代碼,無(wú)法通過(guò)常規(guī)方法指定代碼存放區(qū)域,導(dǎo)致調(diào)用該代碼時(shí)會(huì)因代碼放置在flash降低整體執(zhí)行速度。需要在linker文件中額外配置響應(yīng)代碼區(qū)域分配。

GCC編譯后無(wú)法像segger一樣編譯后通過(guò)圖形顯示生成代碼的占有率,且map文件閱讀性差。對(duì)gcc編譯的map文件需要引用AMAP.EXE工具。

b15589ec-38d1-11ef-a655-92fbcf53809c.png

b42bfd04-38d1-11ef-a655-92fbcf53809c.png

b45aa87a-38d1-11ef-a655-92fbcf53809c.png

GCC編譯需要增加額外代碼實(shí)現(xiàn)flash加載到RAM的拷貝,相應(yīng)代碼位于 SOC/HPM6XXX/TOOLCHAINS/GCC/reset.c中。


在reset.c中函數(shù)c_startup實(shí)現(xiàn)flash到RAM程序的拷貝。

程序運(yùn)行時(shí),會(huì)以start.s開(kāi)始,進(jìn)入main函數(shù)之前先調(diào)用c_startup 函數(shù)完成程序搬移,在客戶的應(yīng)用代碼中不會(huì)因程序放置位置不同而增加額外操作。

b49859ae-38d1-11ef-a655-92fbcf53809c.png

4

優(yōu)化小知識(shí)

segger編譯器會(huì)將所有常數(shù)默認(rèn)為定點(diǎn)數(shù),即使該常數(shù)為小數(shù),也需要在對(duì)應(yīng)常數(shù)前加強(qiáng)制浮點(diǎn)轉(zhuǎn)換或者在常數(shù)后面加“f”做說(shuō)明。

函數(shù)的inline定義在optimization level=0時(shí)是無(wú)效的,需要把優(yōu)化等級(jí)設(shè)為1或更高。

建議將常用函數(shù)或變量通過(guò)attribute屬性定義到“.fast”和“.fast_ram”。

先楫MCU為多總線系統(tǒng),當(dāng)CPU讀寫(xiě)外設(shè)時(shí)會(huì)有時(shí)鐘同步問(wèn)題,建議在配置外設(shè)時(shí)盡量提高外設(shè)頻率,減少時(shí)鐘同步延遲。

HPM6260以及HPM6E60可以通過(guò)ILM_SLV、DLM_SLV接口可以將CPU1的內(nèi)部存儲(chǔ)作為AXI_RAM使用。

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

    關(guān)注

    147

    文章

    18881

    瀏覽量

    396650
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11268

    瀏覽量

    224678
  • 程序優(yōu)化設(shè)計(jì)

    關(guān)注

    0

    文章

    3

    瀏覽量

    1314
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于米爾RK3576的環(huán)視實(shí)時(shí)方案解析

    與功能實(shí)現(xiàn)程序流程圖一套標(biāo)準(zhǔn)的360環(huán)視處理流水線已在開(kāi)發(fā)板上成功實(shí)現(xiàn),驗(yàn)證了其功能可行:1.傳感器配置: 4路720P分辨率魚(yú)眼攝像頭,精確固定于模擬車輛的四周。2.核心處理流水線:畸變矯正: 利用
    發(fā)表于 11-28 16:57

    關(guān)于raw os 的強(qiáng)實(shí)時(shí)

    rawos 由于采用了特殊的系統(tǒng)處理方式,可以把系統(tǒng)最大關(guān)中斷時(shí)間降到0us.影響一個(gè)系統(tǒng)實(shí)時(shí)最客觀的參數(shù)是其系統(tǒng)的最大關(guān)中斷時(shí)間。在2440 板子上空跑一個(gè)實(shí)時(shí)操作系統(tǒng)的話,vxworks
    發(fā)表于 02-27 14:37

    關(guān)于uCos實(shí)時(shí)的疑惑

    uCos 是實(shí)時(shí)內(nèi)核,但我還是有些疑問(wèn),我覺(jué)得它只能保證優(yōu)先級(jí)最高任務(wù)的實(shí)時(shí),比如,創(chuàng)建任務(wù)A, B, C, 優(yōu)先級(jí)以此為 5,6,7void TASK_A(void *parg)
    發(fā)表于 07-24 08:23

    SHT30程序可移植不強(qiáng)的問(wèn)題怎么優(yōu)化

    針對(duì)上篇文章對(duì)于程序可移植不強(qiáng)的問(wèn)題進(jìn)行優(yōu)化,基本思路是首先搭建好IIC底層驅(qū)動(dòng)程序,該程序可用于任何IIC通訊設(shè)備,然后針對(duì)不同的IIC
    發(fā)表于 02-21 06:19

    什么是實(shí)時(shí)呢?影響RTOS實(shí)時(shí)的因素都有哪些呢?

    在嵌入式實(shí)時(shí)系統(tǒng)中,一般對(duì)實(shí)時(shí)都具有很高的要求,那么什么是實(shí)時(shí)呢?實(shí)時(shí)
    發(fā)表于 06-21 16:32

    Zephyr與FreeRTOS實(shí)時(shí)測(cè)試比較

    1、Zephyr與FreeRTOS實(shí)時(shí)測(cè)試比較分析用Rhealstone基準(zhǔn)程序方法,分別測(cè)試Zephyr和FreeRTOS兩個(gè)RTOS的六個(gè)實(shí)時(shí)性能指標(biāo),發(fā)現(xiàn)Zephyr指標(biāo)較差。
    發(fā)表于 08-19 16:12

    嵌入式實(shí)時(shí)程序設(shè)計(jì)中C/C++代碼的優(yōu)化

    本文簡(jiǎn)單介紹了嵌入式實(shí)時(shí)程序設(shè)計(jì)的特點(diǎn)和嵌入式系統(tǒng)設(shè)計(jì)中語(yǔ)言的選擇,著重介紹了以下幾種在嵌入式實(shí)時(shí)程序設(shè)計(jì)中優(yōu)化 C/C++代碼的方法[關(guān)鍵
    發(fā)表于 08-07 08:47 ?15次下載

    優(yōu)化電壓IGBT,優(yōu)化電壓IGBT是什么意思

    優(yōu)化電壓IGBT,優(yōu)化電壓IGBT是什么意思 中心議題: 優(yōu)化電壓IGBT
    發(fā)表于 03-24 09:49 ?1527次閱讀
    <b class='flag-5'>優(yōu)化</b><b class='flag-5'>高</b>電壓IGBT,<b class='flag-5'>優(yōu)化</b><b class='flag-5'>高</b>電壓IGBT是什么意思

    基于RTSJ的實(shí)時(shí)嵌入式系統(tǒng)API的優(yōu)化研究

    描述了一個(gè)基于RTSJ的應(yīng)用程序接口,該API的功能是提供高級(jí)的并發(fā)實(shí)時(shí)計(jì)算結(jié)構(gòu),優(yōu)化實(shí)時(shí)嵌入式系統(tǒng)開(kāi)發(fā)。同時(shí),部署和優(yōu)化(在開(kāi)銷足跡/時(shí)間
    發(fā)表于 11-30 12:20 ?522次閱讀

    車輛工程基于某MATLAB地動(dòng)力仿真分析報(bào)告及優(yōu)化設(shè)計(jì)程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是車輛工程基于某MATLAB地動(dòng)力仿真分析報(bào)告及優(yōu)化設(shè)計(jì)程序免費(fèi)下載。
    發(fā)表于 03-04 17:24 ?12次下載

    xenomai實(shí)時(shí)的影響因素及優(yōu)化措施

    本文講述一些有利于提高xenomai實(shí)時(shí)的配置建議,部分針對(duì)X86架構(gòu),但它們的底層原理相通,同樣適用于其他CPU架構(gòu)和系統(tǒng),希望對(duì)你有用。
    的頭像 發(fā)表于 06-13 12:01 ?6882次閱讀

    實(shí)時(shí)控制系統(tǒng)中使用傳感器優(yōu)化數(shù)據(jù)可靠的3個(gè)技巧

    實(shí)時(shí)控制系統(tǒng)中使用傳感器優(yōu)化數(shù)據(jù)可靠的3個(gè)技巧
    發(fā)表于 10-28 11:43 ?0次下載
    在<b class='flag-5'>實(shí)時(shí)</b>控制系統(tǒng)中使用傳感器<b class='flag-5'>優(yōu)化</b>數(shù)據(jù)可靠<b class='flag-5'>性</b>的3個(gè)技巧

    實(shí)時(shí)控制系統(tǒng)中使用傳感器優(yōu)化數(shù)據(jù)可靠的3個(gè)技巧

    實(shí)時(shí)控制是閉環(huán)系統(tǒng)在定義的時(shí)間窗口內(nèi)收集數(shù)據(jù)、處理數(shù)據(jù)并更新系統(tǒng)的能力。作為文章“實(shí)時(shí)控制簡(jiǎn)介及其重要”的續(xù)篇,本文將詳細(xì)介紹實(shí)時(shí)控制系統(tǒng)的第一個(gè)功能塊“檢測(cè)(收集)數(shù)據(jù)”,并針對(duì)如
    的頭像 發(fā)表于 11-16 09:07 ?1185次閱讀
    在<b class='flag-5'>實(shí)時(shí)</b>控制系統(tǒng)中使用傳感器<b class='flag-5'>優(yōu)化</b>數(shù)據(jù)可靠<b class='flag-5'>性</b>的3個(gè)技巧

    實(shí)時(shí)控制系統(tǒng)中使用傳感器優(yōu)化數(shù)據(jù)可靠的3個(gè)技巧

      實(shí)時(shí)控制是閉環(huán)系統(tǒng)在定義的時(shí)間窗口內(nèi)收集數(shù)據(jù)、處理數(shù)據(jù)并更新系統(tǒng)的能力。作為文章“實(shí)時(shí)控制簡(jiǎn)介及其重要”的續(xù)篇,本文將詳細(xì)介紹實(shí)時(shí)控制系統(tǒng)的第一個(gè)功能塊“檢測(cè)(收集)數(shù)據(jù)”,并針
    發(fā)表于 03-15 09:23 ?1026次閱讀
    在<b class='flag-5'>實(shí)時(shí)</b>控制系統(tǒng)中使用傳感器<b class='flag-5'>優(yōu)化</b>數(shù)據(jù)可靠<b class='flag-5'>性</b>的3個(gè)技巧

    如何優(yōu)化MCU SPI驅(qū)動(dòng)程序以實(shí)現(xiàn)ADC吞吐速率

    如何優(yōu)化MCU SPI驅(qū)動(dòng)程序以實(shí)現(xiàn)ADC吞吐速率
    的頭像 發(fā)表于 10-24 16:03 ?1462次閱讀
    如何<b class='flag-5'>優(yōu)化</b>MCU SPI驅(qū)動(dòng)<b class='flag-5'>程序</b>以實(shí)現(xiàn)<b class='flag-5'>高</b>ADC吞吐速率