如何有效减少Nios II EDS所编译程式码大小

如何有效减少Nios II EDS所编译程式码大小

ID:40823741

大小:315.78 KB

页数:11页

时间:2019-08-08

如何有效减少Nios II EDS所编译程式码大小_第1页
如何有效减少Nios II EDS所编译程式码大小_第2页
如何有效减少Nios II EDS所编译程式码大小_第3页
如何有效减少Nios II EDS所编译程式码大小_第4页
如何有效减少Nios II EDS所编译程式码大小_第5页
资源描述:

《如何有效减少Nios II EDS所编译程式码大小》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、(原創)如何有效減少NiosIIEDS所編譯程式碼大小?(ICDesign)(NiosII)作者:真OO无双  来源:博客园  发布时间:2008-01-2015:05  阅读:1288次  原文链接  [收藏]  Abstract由於體積和成本因素,嵌入式系統的記憶體都很小,所以系統開發人員都很在意編譯出的程式碼大小,本文討論減少NiosIIEDS編譯程式碼大小的方法。使用環境:NiosIIEDS7.2SP1Introduction以DE2而言,on-chipmemory最多只能49KB,SRAM只有512KB,SDRAM也只有8MB,這和Intelx86平

2、台動不動都有上G的記憶體不同,尤其有時為了簡化debug因素,只用on-chipmemory時,最常遇到的就是on-chipmemory塞不下所編譯的程式碼,以下討論幾種能有效減少NiosII程式碼的方法。Solution1.使用Release模式預設為Debug模式,由於需要debugsymbol,檔案大小較大。選好project,按右鍵,ActiveBuildConfiguration->勾選Relase。由於NiosIIEDS除了軟體project外,還會自帶一個systemlibraryproject,兩個project都要改成Release模式。2.

3、調整gcc參數NiosIIEDS預設的gcc並沒有啟動最佳化,可以調成-O3或者-Os。選好project,按右鍵,Properties,左側選C/C++Build,在左側TotalSettingstab選General,在右側OptimizationLevels選Optimizemost(-O3)或Optimizesize(-Os),效果可能要自己實際試試看,且將DebugLevel選None。 3.使用Reduceddevicedrivers一些周邊提供了兩種模式的驅動程式,一種強調的是『速度』,一種強調的是『檔案大小』,NiosIIEDS預設使用強調『速

4、度』的驅動程式,勾選ReducedDeviceDrivers可有效減少程式碼大小。選好project,按右鍵,SystemLibraryProperties,將Reduceddevicedrivers打勾。4.縮小Maxfiledescriptors常數預設為32,根據NiosIISoftwareDeveloper'sHandbook說法,將此常數變小有助於減少編譯程式碼大小。選好project,按右鍵,SystemLibraryProperties,設定Maxfiledescriptors常數。5.將stdout、stderr、stdin設為null若你的軟

5、體程式完全沒用到stdout、stderr、stdin,可將此設為null,將可略為減少編譯程式碼大小。選好project,按右鍵,SystemLibraryProperties,將stdout、stderr、stdin設為null。6.使用SmallClibrary若你使用到ANSIC函數,可選擇使用SmallClibrary,這是gcc為嵌入式系統重新量身訂作的ANSICstandardlibrary。選好project,按右鍵,SystemLibraryProperties,將SmallClibrary打勾。7.使用UNIX-StyleFileI/O若你

6、還想進一步減少編譯程式碼大小,就連SmallClibrary都不要用,事實上,NiosII的HAL已經提供了UNIX-StyleFileI/O函數,直接使用將可有效減少編譯程式碼大小。8.自己實作ANSIC函數若你只需要一小部份的ANSIC函數,事實上可以自己實作,而不要使用整個ANSIClibrary。如getchar()函數:1int getchar(void) {2  char c;3  return ( read (0, &c, 1) == 1) ? (unsigned char) c : EOF;4}9.使用Lightwieghtdevicedriv

7、erAPI一些周邊如JTAGUART、UART、Optrex16207LCD支援LightweightdevicedriverAPI,可減少編譯程式碼大小。選好project,按右鍵,SystemLibraryProperties,將LightweightdevicedriverAPI打勾。10.使用Minimalcharacter-modeAPI若你僅使用簡單的IO功能,可不需includeANSI的stdio.h,而用sys/alt_stdio.h取代,sys/alt_stdio.h提供了alt_printf()、alt_putchar()、alt_put

8、str()與alt_getchar()

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。