收藏 分销(赏)

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

上传人:xrp****65 文档编号:7230798 上传时间:2024-12-28 格式:DOCX 页数:11 大小:315.78KB 下载积分:10 金币
下载 相关 举报
如何有效减少Nios II EDS所编译程式码大小.docx_第1页
第1页 / 共11页
如何有效减少Nios II EDS所编译程式码大小.docx_第2页
第2页 / 共11页


点击查看更多>>
资源描述
(原創) 如何有效減少Nios II EDS所編譯程式碼大小? (IC Design) (Nios II) 作者:真 OO无双  来源:博客园  发布时间:2008-01-20 15:05  阅读:1288 次  原文链接   [收藏]   Abstract 由於體積和成本因素,嵌入式系統的記憶體都很小,所以系統開發人員都很在意編譯出的程式碼大小,本文討論減少Nios II EDS編譯程式碼大小的方法。 使用環境:Nios II EDS 7.2 SP1 Introduction 以DE2而言,on-chip memory最多只能49KB,SRAM只有512KB,SDRAM也只有8MB,這和Intel x86平台動不動都有上G的記憶體不同,尤其有時為了簡化debug因素,只用on-chip memory時,最常遇到的就是on-chip memory塞不下所編譯的程式碼,以下討論幾種能有效減少Nios II程式碼的方法。 Solution 1.使用Release模式 預設為Debug模式,由於需要debug symbol,檔案大小較大。 選好project,按右鍵,Active Build Configuration -> 勾選Relase。由於Nios II EDS除了軟體project外,還會自帶一個system library project,兩個project都要改成Release模式。 2.調整gcc參數 Nios II EDS預設的gcc並沒有啟動最佳化,可以調成-O3或者-Os。 選好project,按右鍵,Properties ,左側選C/C++ Build,在左側 Total Settings tab選General,在右側Optimization Levels選Optimize most(-O3)或Optimize size(-Os),效果可能要自己實際試試看,且將Debug Level選None。   3.使用Reduced device drivers 一些周邊提供了兩種模式的驅動程式,一種強調的是『速度』,一種強調的是『檔案大小』,Nios II EDS預設使用強調『速度』的驅動程式,勾選Reduced Device Drivers可有效減少程式碼大小。 選好project,按右鍵,System Library Properties ,將Reduced device drivers打勾。 4.縮小Max file descriptors常數 預設為32,根據Nios II Software Developer's Handbook說法,將此常數變小有助於減少編譯程式碼大小。 選好project,按右鍵,System Library Properties ,設定Max file descriptors常數。 5.將stdout、stderr、stdin設為null 若你的軟體程式完全沒用到stdout、stderr、stdin,可將此設為null,將可略為減少編譯程式碼大小。 選好project,按右鍵,System Library Properties ,將stdout、stderr、stdin設為null。 6.使用Small C library 若你使用到ANSI C函數,可選擇使用Small C library,這是gcc為嵌入式系統重新量身訂作的ANSI C standard library。 選好project,按右鍵,System Library Properties ,將Small C library打勾。 7.使用UNIX-Style File I/O 若你還想進一步減少編譯程式碼大小,就連Small C library都不要用,事實上,Nios II的HAL已經提供了UNIX-Style File I/O函數,直接使用將可有效減少編譯程式碼大小。 8.自己實作ANSI C函數 若你只需要一小部份的ANSI C函數,事實上可以自己實作,而不要使用整個ANSI C library。如getchar()函數: 1int getchar(void) { 2  char c; 3  return ( read (0, &c, 1) == 1) ? (unsigned char) c : EOF; 4} 9.使用Lightwieght device driver API 一些周邊如JTAG UART、UART、Optrex 16207 LCD支援Lightweight device driver API,可減少編譯程式碼大小。 選好project,按右鍵,System Library Properties ,將Lightweight device driver API打勾。 10.使用Minimal character-mode API 若你僅使用簡單的IO功能,可不需include ANSI的stdio.h,而用sys/alt_stdio.h取代,sys/alt_stdio.h提供了alt_printf()、alt_putchar()、alt_putstr()與alt_getchar(),如此將可減少編譯程式碼大小。 11.移除不需要的驅動程式 若有硬體周邊存在,無論你軟體程式是否存取該硬體,Nios II EDS預設會幫你加上該硬體的驅動程式,如此將會增加編譯程式碼大小,請手動移除不需要的硬體驅動程式。 12.避免Clean exit Clean exit會將所有C函數內部I/O buffer清除,並呼叫任何對atexit()註冊的函數,Nios II EDS預設使用Clean exit。 選好project,按右鍵,System Library Properties ,不要選Clean exit(flush buffers)。   13.勾選Program never exits 嵌入式系統通常不會結束,所以可勾選Program never exits減少exit所造成的負擔。 選好project,按右鍵,System Library Properties ,勾選Program never exits。 14.不要使用C++ Nios II EDS預設支援C++,但C++所編譯的程式碼大小較大,建議使用純C語言撰寫。 選好project,按右鍵,System Library Properties ,不要勾選Support C++。 See Also (原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2) Conclusion 我只是將Nios II Software Developers's Handbook中提到的方法簡單的加以整理,更詳細請直接參考Altera手冊。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服