




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(原創) 如何有效減少Nios II EDS所編譯程式碼大小? (IC Design) (Nios II)作者:真 OO无双来源:博客园发布时间:2008-01-20 15:05阅读:1288 次原文链接 收藏 Abstract由於體積和成本因素,嵌入式系統的記憶體都很小,所以系統開發人員都很在意編譯出的程式碼大小,本文討論減少Nios II EDS編譯程式碼大小的方法。使用環境:Nios II EDS 7.2 SP1Introduction以DE2而言,on-chip memory最多只能49KB,SRAM只有512KB,SDRAM也只有8MB,這和Intel x86平台動不動都有上G的記憶體不同,尤其有時為了簡化debug因素,只用on-chip memory時,最常遇到的就是on-chip memory塞不下所編譯的程式碼,以下討論幾種能有效減少Nios II程式碼的方法。Solution1.使用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 Developers 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()函數:1intgetchar(void)2charc;3return(read(0,&c,1)=1)?(unsignedchar)c:EOF;49.使用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 exitClean 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司员工岗前培训
- 浩方优化方案汇报总结
- 依法治校工作总结
- 云南师范大实验中学2026届化学九上期中综合测试模拟试题含解析
- 2025-2026学年统编版(2024)小学语文二年级上册第二单元测试题及参考答案
- 株洲市重点中学2026届九上化学期中监测试题含解析
- 2026届山东省枣庄台儿庄区四校联考化学九年级第一学期期中综合测试模拟试题含解析
- 金融工程模拟试题及答案
- 2026届云南省曲靖罗平县联考化学九上期末检测试题含解析
- 2026届广东省北亭实验学校九年级化学第一学期期中检测试题含解析
- 土方内倒合同(2025年版)
- 《运算放大器介绍》课件
- ktv消防安全培训制度
- GB/T 44923-2024成年人三维头部模型
- GB 20072-2024乘用车后碰撞安全要求
- 新课标高中化学实验目录人教
- 【培训课件】《统计法》宣传课件 建立健全法律制度依法保障数据质量
- 九年级(上册)历史教材课后习题参考答案【人教部编版】
- 食堂日管控周排查月调度记录表
- 初中音乐教学课件走进京剧
- 智能传感与检测技术 课件 第4章压电式传感器
评论
0/150
提交评论