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

基于MDK和μC/OS-III的開發過程存儲空間優化

2016-11-26 08:17:47汪成義
單片機與嵌入式系統應用 2016年10期
關鍵詞:優化系統

汪成義

(湖北經濟學院信息工程學院,武漢430205)

基于MDK和μC/OS-III的開發過程存儲空間優化

汪成義

(湖北經濟學院信息工程學院,武漢430205)

為了降低成本,充分挖掘低端Cortex-M處理器的潛在能力,需要突破其存儲器空間不足的限制。通過分析問題與優化測試得知,如果能合理利用開發工具MDK提供的微代碼庫、交叉模塊優化、分級優化等優化手段,可以大大提升存儲器空間的有效利用率。與此同時,基于實時操作系統μC/OS-III的應用系統可以根據需要進行一系列裁減、優化。測試結果表明,其優化效果明顯。

MDK;μC/OS-III;Cortex-M;存儲器

引 言

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

1 應用開發過程存在的空間問題

在產品開發過程中,為了實現產品的功能需要提供足夠的程序存儲空間和運行空間,還要為產品的功能擴展、軟件升級與維護預留一定的空間。對中低端處理器來說,成本降低了,但存儲器空間可能面臨不足,表現如下:

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

對于低端Cortex-M處理器,存儲空間在32 KB的Flash存儲器/8 KB的SDRAM存儲器以下,對于中端Cortex-M處理器,存儲空間在256 KB的Flash存儲器/ 64 KB的SDRAM存儲器以下。Micrium公司在其網站已提供了針對十幾家微控制器廠商不同型號芯片的μC/ OS-III版本,其一般要求128 KB的Flash存儲器/32 KB 的SDRAM存儲器或以上,個別型號的配置為64 KB的Flash存儲器/16 KB的SDRAM存儲器。在實際應用中,若用戶任務較多,并且有圖形用戶界面、網絡協議、數據庫等,如果不作優化處理,空間要求會快速提高,則要求256 KB的Flash存儲器/64 KB的SDRAM存儲器或以上,若如此,沒有成本優勢,且功能擴展也會受限。

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

在基于ARM公司的MDK開發工具進行應用開發的過程中,若不充分利用MDK對ARM處理器優化,或利用的不恰當,會導致空間的不必要消耗。基于μC/OS-III的應用系統設置不合理或變量定義不恰當,也會引起不必要的空間消耗。當處理器型號選定之后,μC/OS-III應用開發空間問題的解決主要依賴開發工具參數的合理設置和軟件自身空間消耗安排的合理化,下面就此展開分析。

2 空間占用情況分析

2.1 存儲器空間占用信息

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

圖1 map文件中的存儲器空間信息

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

2.2 映像的加載與執行視圖

為便于理解,結合LPC1347的存儲器結構和Arm-Link對存儲器映像的分布規律,將圖1中信息進一步總結為如圖2所示映像分布。

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

圖2 存儲器映像分布情況

3 MDK編譯參數對空間的優化

作為ARM公司提供的開發工具,MDK對ARM架構處理器提供了針對性很強的優化選擇和細節參數設置選項,與存儲器空間優化緊密相關的主要包括3個方面的優化選項。

3.1 微代碼庫

MDK針對ARM架構處理器提供了一套可代替標準庫的微縮型的運行庫Micro LIB,它去掉了一些不必要的庫函數,如time()等,同時也因改造而讓部分庫函數運行起來更慢,如memcpy()等[4],但能顯著減少應用系統對Flash存儲器和SDRAM存儲器空間的占用。

3.2 交叉模塊優化

MDK的交叉模塊優化主要是通過二次編譯的方法,去除未使用的函數,從而減少應用系統對Flash存儲器空間的占用。

3.3 C/C++分級優化

MDK針對C/C++的應用開發提供了4級優化選擇,其關鍵是在調試信息的詳細程度與系統性能之間進行不同的選擇。具體見表1。

表1 C/C++分級優化選項

4 優化測試與分析

在工程文檔不變,通過修改編譯參數選項的設置,形成不同組合,并逐一在編譯通過并能正常調試情況下記錄測試數據,測試結果如表2所列。其中,打鉤表示被選中,存儲器空間大小的單位是字節。

表2中數據表明,空間優化程度最高的是微代碼庫、交叉模塊優化加C/C++的O2優化級的組合選項。結合表1,想要獲得良好的調試感受,又要有好的空間優化率,微代碼庫、交叉模塊優化加O0優化級的組合選項,以及微代碼庫、交叉模塊優化加O1優化級的組合選項,則更具有優勢,并在實踐中得到驗證。

表2 編譯參數對工程空間優化的影響

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

4.1 任務空間合理優化

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

4.2 優化分析

為了方便對比,所有測試均不加編譯優化選項,測試結果如表3所列。表中信息表明,通過裁減不必要的內核對象,可有效減少系統對ROM和RAM的要求;調整優先級數和改變堆棧大小,對ROM沒影響,但對RAM有明顯影響;由于const數組是放在RO數據區中,static和不修飾數組是放在RW數據區中,如果不必要,一些大的常量數組需加const修飾,以減少對RAM的要求。

表3 μC/OS-III自身空間優化測試

結 語

本文針對MDK開發工具鏈,將實時操作系統μC/OS -III移植到中低端配置的Cortex-M系列處理器,在進行后續應用開發時,對遇到的存儲器空間不足的問題尋求解決辦法。實驗表明,綜合利用開發工具及應用系統的不同優化方法,并在開發的不同階段靈活運用,效果會更好。文中所述問題和解決辦法對沒有用到μC/OS-III的其他應用開發過程具有同樣的參考意義。

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

猜你喜歡
優化系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
WJ-700無人機系統
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
主站蜘蛛池模板: 666精品国产精品亚洲| 亚洲丝袜第一页| 国产性爱网站| 欧美一区国产| 久久久久88色偷偷| 中文无码伦av中文字幕| 亚洲精品无码抽插日韩| 不卡网亚洲无码| 亚洲欧洲国产成人综合不卡| 中文无码精品a∨在线观看| av在线人妻熟妇| 国产成人凹凸视频在线| 国产精品乱偷免费视频| 国产视频你懂得| 波多野结衣一区二区三区AV| 日a本亚洲中文在线观看| 华人在线亚洲欧美精品| 一区二区理伦视频| 亚洲天堂成人| 日韩无码黄色网站| 国产欧美视频在线观看| 亚洲欧美日韩成人在线| 毛片网站免费在线观看| 久久天天躁狠狠躁夜夜2020一| 国产精品夜夜嗨视频免费视频| 国产美女在线观看| 亚洲男人在线| 亚洲欧美日韩另类在线一| 日韩中文精品亚洲第三区| 亚洲精品制服丝袜二区| 亚洲熟女中文字幕男人总站| 日本在线视频免费| 91精品国产情侣高潮露脸| 午夜福利在线观看成人| 中文字幕无码中文字幕有码在线| 国产自产视频一区二区三区| 一区二区日韩国产精久久| 免费在线看黄网址| 韩国v欧美v亚洲v日本v| 欧美精品三级在线| 亚洲国产日韩欧美在线| 久久人体视频| 香蕉久久国产超碰青草| 亚洲中文字幕日产无码2021| 91久久偷偷做嫩草影院电| 亚洲第一成年人网站| 国产精品视频系列专区| 99人体免费视频| 人人91人人澡人人妻人人爽| 青青操视频在线| 伊人久久大香线蕉成人综合网| 亚洲高清国产拍精品26u| 精品伊人久久大香线蕉网站| 91精品国产91久无码网站| 亚洲AV一二三区无码AV蜜桃| 制服丝袜无码每日更新| 中文字幕自拍偷拍| 免费看美女自慰的网站| 国产成人综合久久精品下载| 欧美精品aⅴ在线视频| 久久精品欧美一区二区| 天天干天天色综合网| 欧洲亚洲欧美国产日本高清| 香蕉视频在线观看www| 久久久久亚洲AV成人网站软件| 国产特级毛片| 国产日本欧美亚洲精品视| 亚洲欧美人成电影在线观看| 国产人碰人摸人爱免费视频| 国产h视频在线观看视频| 国产欧美视频一区二区三区| 国产精品一区在线观看你懂的| 极品国产一区二区三区| 91国内视频在线观看| 色婷婷电影网| 亚洲福利一区二区三区| 97av视频在线观看| 日韩成人在线视频| 精品亚洲麻豆1区2区3区| 久久综合色天堂av| 播五月综合| 精品亚洲麻豆1区2区3区|