您的位置:首页 > 移动开发 > IOS开发

(原創) 如何有效減少Nios II EDS所編譯程式碼大小? (IC Design) (Nios II)

2008-01-20 15:05 561 查看
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模式。

int 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手冊。

Reference

Nios II Software Developer's Handbook

紫藤2NiosII如何降低代碼長度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐