999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MDK和μC/OS-III的開(kāi)發(fā)過(guò)程存儲(chǔ)空間優(yōu)化

2016-11-26 08:17:47汪成義
關(guān)鍵詞:優(yōu)化系統(tǒng)

汪成義

(湖北經(jīng)濟(jì)學(xué)院信息工程學(xué)院,武漢430205)

基于MDK和μC/OS-III的開(kāi)發(fā)過(guò)程存儲(chǔ)空間優(yōu)化

汪成義

(湖北經(jīng)濟(jì)學(xué)院信息工程學(xué)院,武漢430205)

為了降低成本,充分挖掘低端Cortex-M處理器的潛在能力,需要突破其存儲(chǔ)器空間不足的限制。通過(guò)分析問(wèn)題與優(yōu)化測(cè)試得知,如果能合理利用開(kāi)發(fā)工具M(jìn)DK提供的微代碼庫(kù)、交叉模塊優(yōu)化、分級(jí)優(yōu)化等優(yōu)化手段,可以大大提升存儲(chǔ)器空間的有效利用率。與此同時(shí),基于實(shí)時(shí)操作系統(tǒng)μC/OS-III的應(yīng)用系統(tǒng)可以根據(jù)需要進(jìn)行一系列裁減、優(yōu)化。測(cè)試結(jié)果表明,其優(yōu)化效果明顯。

MDK;μC/OS-III;Cortex-M;存儲(chǔ)器

引 言

MDK是ARM公司微控制器開(kāi)發(fā)工具(Microcontroller Development Kit)的簡(jiǎn)稱(chēng),其核心是集項(xiàng)目管理、源碼編輯、系統(tǒng)調(diào)試、外圍電路仿真于一身的集成開(kāi)發(fā)環(huán)境μVision[1],以及針對(duì)不同硬件平臺(tái)的編譯鏈接工具。實(shí)時(shí)操作系統(tǒng)μC/OS-III最典型的應(yīng)用平臺(tái)是基于ARM公司不同架構(gòu)的Cortex-M系列處理器,Cortex-M主要應(yīng)用于對(duì)成本以及功耗較為敏感的微控制器或終端設(shè)備,其產(chǎn)品從低端到高端又分為Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4到Cortex-M7等子系列,不同芯片公司的子系列往往又有多個(gè)型號(hào)的處理器。在激烈的市場(chǎng)競(jìng)爭(zhēng)中,到底是為滿足越來(lái)越復(fù)雜的應(yīng)用而選擇高配置處理器,還是為降低成本而選擇較低配置的處理器,一直是個(gè)令人糾結(jié)的問(wèn)題,而當(dāng)應(yīng)用系統(tǒng)中引入實(shí)時(shí)操作系統(tǒng)后(如μC/OS-III),片內(nèi)存儲(chǔ)器空間消耗增大,空間問(wèn)題成為型號(hào)應(yīng)用限制的關(guān)鍵問(wèn)題之一。本文主要以低成本的中低端配置處理器為研究對(duì)象,分析在μC/OS-III應(yīng)用開(kāi)發(fā)過(guò)程中可能會(huì)遇到的存儲(chǔ)器空間不足的問(wèn)題及不同環(huán)節(jié)的解決辦法。

1 應(yīng)用開(kāi)發(fā)過(guò)程存在的空間問(wèn)題

在產(chǎn)品開(kāi)發(fā)過(guò)程中,為了實(shí)現(xiàn)產(chǎn)品的功能需要提供足夠的程序存儲(chǔ)空間和運(yùn)行空間,還要為產(chǎn)品的功能擴(kuò)展、軟件升級(jí)與維護(hù)預(yù)留一定的空間。對(duì)中低端處理器來(lái)說(shuō),成本降低了,但存儲(chǔ)器空間可能面臨不足,表現(xiàn)如下:

(1)處理器存儲(chǔ)空間自身不足

對(duì)于低端Cortex-M處理器,存儲(chǔ)空間在32 KB的Flash存儲(chǔ)器/8 KB的SDRAM存儲(chǔ)器以下,對(duì)于中端Cortex-M處理器,存儲(chǔ)空間在256 KB的Flash存儲(chǔ)器/ 64 KB的SDRAM存儲(chǔ)器以下。Micrium公司在其網(wǎng)站已提供了針對(duì)十幾家微控制器廠商不同型號(hào)芯片的μC/ OS-III版本,其一般要求128 KB的Flash存儲(chǔ)器/32 KB 的SDRAM存儲(chǔ)器或以上,個(gè)別型號(hào)的配置為64 KB的Flash存儲(chǔ)器/16 KB的SDRAM存儲(chǔ)器。在實(shí)際應(yīng)用中,若用戶任務(wù)較多,并且有圖形用戶界面、網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)庫(kù)等,如果不作優(yōu)化處理,空間要求會(huì)快速提高,則要求256 KB的Flash存儲(chǔ)器/64 KB的SDRAM存儲(chǔ)器或以上,若如此,沒(méi)有成本優(yōu)勢(shì),且功能擴(kuò)展也會(huì)受限。

(2)不合理消耗導(dǎo)致的空間不足

在基于ARM公司的MDK開(kāi)發(fā)工具進(jìn)行應(yīng)用開(kāi)發(fā)的過(guò)程中,若不充分利用MDK對(duì)ARM處理器優(yōu)化,或利用的不恰當(dāng),會(huì)導(dǎo)致空間的不必要消耗。基于μC/OS-III的應(yīng)用系統(tǒng)設(shè)置不合理或變量定義不恰當(dāng),也會(huì)引起不必要的空間消耗。當(dāng)處理器型號(hào)選定之后,μC/OS-III應(yīng)用開(kāi)發(fā)空間問(wèn)題的解決主要依賴開(kāi)發(fā)工具參數(shù)的合理設(shè)置和軟件自身空間消耗安排的合理化,下面就此展開(kāi)分析。

2 空間占用情況分析

2.1 存儲(chǔ)器空間占用信息

考慮到空間分布與硬件平臺(tái)緊密相關(guān),下面就以NXP公司基于Cortex-M3的LPC1347微控制器為分析對(duì)象,其片內(nèi)有64 KB的Flash存儲(chǔ)器,8 KB(IRAM0)+2 KB(IRAM1)+2 KB(USB IRAM)即共計(jì)16 KB的RAM存儲(chǔ)器[2],并設(shè)定μC/OS-III的優(yōu)先級(jí)數(shù)為64個(gè),建立2個(gè)系統(tǒng)任務(wù)和2個(gè)用戶任務(wù)的最基本應(yīng)用情形,以此作為下面分析空間變化情況的參考基準(zhǔn)。測(cè)試時(shí),所用工具鏈?zhǔn)荕DK-ARM Standard Version 5.11.0.0版本,對(duì)應(yīng)Arm Link的版本是V5.04.0.49。構(gòu)造對(duì)象(指編譯并鏈接)后輸出信息為“Program Size:Code=34820-RO data= 1748 RW-data=216 ZI-data=8964”,查看對(duì)應(yīng)生成的map文件,發(fā)現(xiàn)含有涉及空間的詳細(xì)信息,最后三行信息如圖1所示。

圖1 map文件中的存儲(chǔ)器空間信息

圖中信息說(shuō)明,該工程所生成的應(yīng)用系統(tǒng)占用RAM的大小為9 180字節(jié)(即8.96 KB),是RW數(shù)據(jù)和ZI數(shù)據(jù)兩項(xiàng)之和,占用ROM大小為36 784字節(jié)(即35.92 KB),是Code、RO數(shù)據(jù)和RW數(shù)據(jù)三項(xiàng)之和。其中,Code為代碼大小,RO數(shù)據(jù)為常數(shù)大小,RW數(shù)據(jù)為已初始化為非零的全局變量大小,ZI數(shù)據(jù)為未初始化或初始化為零的變量大小。

2.2 映像的加載與執(zhí)行視圖

為便于理解,結(jié)合LPC1347的存儲(chǔ)器結(jié)構(gòu)和Arm-Link對(duì)存儲(chǔ)器映像的分布規(guī)律,將圖1中信息進(jìn)一步總結(jié)為如圖2所示映像分布。

其中,加載視圖是根據(jù)映像執(zhí)行之前加載到存儲(chǔ)器的地址,描述映像的區(qū)或節(jié)的組成情況;執(zhí)行視圖則是根據(jù)映像執(zhí)行時(shí)的地址,描述映像的區(qū)或節(jié)的組成情況[3]。由圖2可知,程序執(zhí)行前需占用ROM空間大小由RW節(jié) (或區(qū),下同)和RO節(jié)(含Code和RO數(shù)據(jù))組成,程序執(zhí)行時(shí),需將ROM中的RW節(jié)映射到RAM的RW節(jié),因?yàn)榇鎯?chǔ)空間不夠,初始化為0的全局變量一部分內(nèi)容映射到起始地址為0x1000 0000的IRAM0 中,一部分內(nèi)容映射到起始地址為0x2000 0000的IRAM1中。由此可知,減少Code和RO數(shù)據(jù)的空間占用,只對(duì)ROM有利,減少ZI的空間占用,只對(duì)RAM有利,而減少RW的空間占用,對(duì)ROM和RAM都有利。

圖2 存儲(chǔ)器映像分布情況

3 MDK編譯參數(shù)對(duì)空間的優(yōu)化

作為ARM公司提供的開(kāi)發(fā)工具,MDK對(duì)ARM架構(gòu)處理器提供了針對(duì)性很強(qiáng)的優(yōu)化選擇和細(xì)節(jié)參數(shù)設(shè)置選項(xiàng),與存儲(chǔ)器空間優(yōu)化緊密相關(guān)的主要包括3個(gè)方面的優(yōu)化選項(xiàng)。

3.1 微代碼庫(kù)

MDK針對(duì)ARM架構(gòu)處理器提供了一套可代替標(biāo)準(zhǔn)庫(kù)的微縮型的運(yùn)行庫(kù)Micro LIB,它去掉了一些不必要的庫(kù)函數(shù),如time()等,同時(shí)也因改造而讓部分庫(kù)函數(shù)運(yùn)行起來(lái)更慢,如memcpy()等[4],但能顯著減少應(yīng)用系統(tǒng)對(duì)Flash存儲(chǔ)器和SDRAM存儲(chǔ)器空間的占用。

3.2 交叉模塊優(yōu)化

MDK的交叉模塊優(yōu)化主要是通過(guò)二次編譯的方法,去除未使用的函數(shù),從而減少應(yīng)用系統(tǒng)對(duì)Flash存儲(chǔ)器空間的占用。

3.3 C/C++分級(jí)優(yōu)化

MDK針對(duì)C/C++的應(yīng)用開(kāi)發(fā)提供了4級(jí)優(yōu)化選擇,其關(guān)鍵是在調(diào)試信息的詳細(xì)程度與系統(tǒng)性能之間進(jìn)行不同的選擇。具體見(jiàn)表1。

表1 C/C++分級(jí)優(yōu)化選項(xiàng)

4 優(yōu)化測(cè)試與分析

在工程文檔不變,通過(guò)修改編譯參數(shù)選項(xiàng)的設(shè)置,形成不同組合,并逐一在編譯通過(guò)并能正常調(diào)試情況下記錄測(cè)試數(shù)據(jù),測(cè)試結(jié)果如表2所列。其中,打鉤表示被選中,存儲(chǔ)器空間大小的單位是字節(jié)。

表2中數(shù)據(jù)表明,空間優(yōu)化程度最高的是微代碼庫(kù)、交叉模塊優(yōu)化加C/C++的O2優(yōu)化級(jí)的組合選項(xiàng)。結(jié)合表1,想要獲得良好的調(diào)試感受,又要有好的空間優(yōu)化率,微代碼庫(kù)、交叉模塊優(yōu)化加O0優(yōu)化級(jí)的組合選項(xiàng),以及微代碼庫(kù)、交叉模塊優(yōu)化加O1優(yōu)化級(jí)的組合選項(xiàng),則更具有優(yōu)勢(shì),并在實(shí)踐中得到驗(yàn)證。

表2 編譯參數(shù)對(duì)工程空間優(yōu)化的影響

為了支持不同任務(wù)間的調(diào)度,高效地實(shí)現(xiàn)應(yīng)用系統(tǒng)功能,μC/OS-III提供了包括信號(hào)量、互斥信號(hào)量、消息隊(duì)列、事件標(biāo)志組、軟件定時(shí)器、內(nèi)存分區(qū)等內(nèi)核對(duì)象。對(duì)一個(gè)實(shí)際的應(yīng)用系統(tǒng)來(lái)說(shuō),一旦功能、性能要求確定,設(shè)計(jì)方案明確,其所需的操作系統(tǒng)內(nèi)核對(duì)象就可以確定,從而可對(duì)不需要的內(nèi)核對(duì)象進(jìn)行裁減,即可有效降低對(duì)代碼空間和內(nèi)存空間的要求。裁減方法主要是在os_cpu.h文件中針對(duì)相應(yīng)的內(nèi)核對(duì)象進(jìn)行去使能處理,即將全部對(duì)應(yīng)項(xiàng)的預(yù)定義值由1u改為0u即可[5]。

4.1 任務(wù)空間合理優(yōu)化

由于μC/OS-III在系統(tǒng)初始化時(shí),會(huì)進(jìn)行一定的空間預(yù)分配,可通過(guò)應(yīng)用需要評(píng)估可能的優(yōu)先級(jí)需求數(shù),適當(dāng)加以余量,確定最大優(yōu)先級(jí)數(shù),并修改os_cpu.h文件中OS_CFG_PRIO_MAX的預(yù)定義值(如由缺省的64u改為16u等),從而改變系統(tǒng)內(nèi)核中OSPrioTbl[i]、OSRdy List[i]等所占用空間的大小。在μC/OS-III中,在創(chuàng)建每個(gè)任務(wù)時(shí),需單獨(dú)指定任務(wù)控制塊,且每個(gè)任務(wù)都有獨(dú)立的堆棧,其大小可單獨(dú)設(shè)定,并在任務(wù)生存期始終占據(jù)著內(nèi)存空間,其優(yōu)化方法是,借助所統(tǒng)計(jì)的對(duì)應(yīng)任務(wù)堆棧的使用情況,結(jié)合限值和預(yù)留余量(如30%),為每個(gè)任務(wù)確定合理的堆棧大小。

4.2 優(yōu)化分析

為了方便對(duì)比,所有測(cè)試均不加編譯優(yōu)化選項(xiàng),測(cè)試結(jié)果如表3所列。表中信息表明,通過(guò)裁減不必要的內(nèi)核對(duì)象,可有效減少系統(tǒng)對(duì)ROM和RAM的要求;調(diào)整優(yōu)先級(jí)數(shù)和改變堆棧大小,對(duì)ROM沒(méi)影響,但對(duì)RAM有明顯影響;由于const數(shù)組是放在RO數(shù)據(jù)區(qū)中,static和不修飾數(shù)組是放在RW數(shù)據(jù)區(qū)中,如果不必要,一些大的常量數(shù)組需加const修飾,以減少對(duì)RAM的要求。

表3 μC/OS-III自身空間優(yōu)化測(cè)試

結(jié) 語(yǔ)

本文針對(duì)MDK開(kāi)發(fā)工具鏈,將實(shí)時(shí)操作系統(tǒng)μC/OS -III移植到中低端配置的Cortex-M系列處理器,在進(jìn)行后續(xù)應(yīng)用開(kāi)發(fā)時(shí),對(duì)遇到的存儲(chǔ)器空間不足的問(wèn)題尋求解決辦法。實(shí)驗(yàn)表明,綜合利用開(kāi)發(fā)工具及應(yīng)用系統(tǒng)的不同優(yōu)化方法,并在開(kāi)發(fā)的不同階段靈活運(yùn)用,效果會(huì)更好。文中所述問(wèn)題和解決辦法對(duì)沒(méi)有用到μC/OS-III的其他應(yīng)用開(kāi)發(fā)過(guò)程具有同樣的參考意義。

25

Memory Optimization in Development Process Based on MDK andμC/OS-III

Wang Chengyi

(College of Information Engineering,Hubei University of Economics,Wuhan 430205,China)

In order to reduce the cost and fully exploit the potential capability of the low end Cortex-M processor,it is necessary to break through the limitation of its memory space.Through the analysis of the problem and the optimized testing,if the microLIB,cross-module optimization,optimization levels can be used reasonably that are provided by MDK,the effective use of memory space can be greatly enhanced.At the same time,the application system based onμC/OS-III will carry out a series of cutting and optimization according to the needs.The test results show that the optimization effect is obvious.

MDK;μC/OS-III;Cortex-M;memory

TP316

A

猜你喜歡
優(yōu)化系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
WJ-700無(wú)人機(jī)系統(tǒng)
由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
主站蜘蛛池模板: 鲁鲁鲁爽爽爽在线视频观看| 日韩a在线观看免费观看| 欧美日韩v| 色噜噜狠狠狠综合曰曰曰| 久久精品国产一区二区小说| 四虎永久在线精品国产免费| 美女无遮挡免费网站| 在线另类稀缺国产呦| 久久一级电影| 亚洲毛片一级带毛片基地| 伊人五月丁香综合AⅤ| 97人人做人人爽香蕉精品| 日本午夜影院| 日本91在线| 狠狠五月天中文字幕| 国产本道久久一区二区三区| 国产精品美女免费视频大全| 99色亚洲国产精品11p| 欧美精品v欧洲精品| 一本大道无码高清| 91视频青青草| 五月天福利视频| 亚洲第一成年网| 日韩精品无码免费一区二区三区| 久久黄色影院| 99精品在线视频观看| 国产全黄a一级毛片| 日韩欧美国产三级| 2020最新国产精品视频| 国产欧美日韩在线在线不卡视频| 国产无码在线调教| 日韩乱码免费一区二区三区| 亚洲成人77777| 久久国产精品嫖妓| 欧美亚洲国产日韩电影在线| 日本精品视频| 亚洲天堂网2014| 亚洲综合在线网| 欧美一区二区自偷自拍视频| 精品国产Ⅴ无码大片在线观看81| 多人乱p欧美在线观看| 亚洲中久无码永久在线观看软件 | 午夜福利免费视频| 日韩无码视频播放| 91在线激情在线观看| 青青青草国产| 五月婷婷导航| 欧美a在线看| 玩两个丰满老熟女久久网| 国产精品夜夜嗨视频免费视频| 黄色污网站在线观看| 精品国产91爱| 蜜桃臀无码内射一区二区三区 | 国产在线观看第二页| 在线观看国产精美视频| 日韩a级毛片| 国产福利小视频在线播放观看| 婷婷久久综合九色综合88| 无码免费视频| 无码福利日韩神码福利片| 国产在线观看高清不卡| 国产网站在线看| 成人综合在线观看| 日韩无码白| 91福利片| 亚洲无码A视频在线| 漂亮人妻被中出中文字幕久久| 国产哺乳奶水91在线播放| 精品视频福利| 日本欧美一二三区色视频| 亚洲综合片| 亚洲精品午夜无码电影网| 香蕉99国内自产自拍视频| 福利片91| 欧洲一区二区三区无码| 国产另类视频| 国产美女精品人人做人人爽| 欧美一级黄片一区2区| 国产女人喷水视频| 97se亚洲| 国产亚洲欧美在线专区| 本亚洲精品网站|