NiosII编程优化指南.doc_第1页
NiosII编程优化指南.doc_第2页
NiosII编程优化指南.doc_第3页
NiosII编程优化指南.doc_第4页
NiosII编程优化指南.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

sharedNiosII编程优化指南2009-12-04 21:43Abstract由於體積和成本因素,嵌入式系統的記憶體都很小,所以系統開發人員都很在意編譯出的程式碼大小,本文討論減少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()函數:1int getchar(void) 2char c;3return ( read (0, &c, 1) = 1) ? (unsigned char) 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 II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)Conclus

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论