1、nios EDS 程序大小摘要由於體積和成本因素,嵌入式系統的記憶體都很小,所以系統開發人員都很在意編譯出的程式碼大小,本文討論減少Nios II EDS編譯程式碼大小的方法。使用環境:Nios II EDS 7.2 SP1介绍以DE2而言,在芯片记忆最多只能49KB, SRAM只有512KB, SDRAM也只有8MB,這和英特尔x86平台動不動都有上G的記憶體不同,尤其有時為了簡化调试因素,只用在芯片记忆時,最常遇到的就是在芯片记忆塞不下所編譯的程式碼,以下討論幾種能有效減少Nios II程式碼的方法。解答1.使用发行模式預設為调试模式,由於需要调试标志,檔案大小較大。選好项目,按右鍵,活跃
2、修造配置- 勾選Relase。由於Nios II EDS除了軟體项目外,還會自帶一個系统程序库项目,兩個项目都要改成发行模式。2.調整gcc參數Nios II EDS預設的gcc並沒有啟動最佳化,可以調成- O3或者- Os。選好项目,按右鍵,物产,左側選C/C+修造,在左側总设置选中選水平(- O3)或优选大小(- Os),效果可能要自己實際試試看,且將将军,在右側選优选多数的优化调试平实選无。 3.使用减少的设备驱动程序一些周邊提供了兩種模式的驅動程式,一種強調的是速度,一種強調的是檔案大小, Nios II EDS預設使用強調速度的驅動程式,勾選减少了设备驱动程序可有效減少程式碼大小。選
3、好项目,按右鍵,系统程序库物产,將减少了设备驱动程序打勾。4.縮小最大文件标码常數預設為32,根據Nios II软件开发商的手册說法,將此常數變小有助於減少編譯程式碼大小。選好项目,按右鍵,系统程序库物产,設定最大文件标码常數。5.將stdout、stderr、stdin設為零位若你的軟體程式完全沒用到stdout、stderr、stdin,可將此設為零位,將可略為減少編譯程式碼大小。選好项目,按右鍵,系统程序库物产,將stdout、stderr、stdin設為零位。6.使用小C程序库若你使用到ANSI C函數,可選擇使用小C程序库,這是gcc為嵌入式系統重新量身訂作的ANSI C标准图书馆。
4、選好项目,按右鍵,系统程序库物产,將小C程序库打勾。7.使用Unix样式文件输入/输出若你還想進一步減少編譯程式碼大小,就連小C程序库都不要用,事實上, Nios II的HAL已經提供了Unix样式文件输入/输出函數,直接使用將可有效減少編譯程式碼大小。8.自己實作ANSI C函數若你只需要一小部份的ANSI C函數,事實上可以自己實作,而不要使用整個ANSI C程序库。如getchar ()函數:getchar1的int (空隙)2炭灰c;3回归(读(0, &c, 1) = 1) ?(未签名的炭灰) c :EOF;49.使用Lightwieght设备驱动程序API一些周邊如JTAG UART
5、、UART、Optrex 16207 LCD支援轻量级设备驱动程序API,可減少編譯程式碼大小。選好项目,按右鍵,系统程序库物产,將轻量级设备驱动程序API打勾。10.使用最小的字符方式API若你僅使用簡單的IO功能,可不需包括ANSI的stdio.h,而用sys或者alt_stdio.h取代、sys或者alt_getchar alt_stdio.h提供了alt_printf ()、alt_putchar ()、alt_putstr ()的與(),如此將可減少編譯程式碼大小。11.移除不需要的驅動程式若有硬體周邊存在,無論你軟體程式是否存取該硬體, Nios II EDS預設會幫你加上該硬體的驅動程式,如此將會增加編譯程式碼大小,請手動移除不需要的硬體驅動程式。12.避免干净的出口清洗出口會將所有C函數內部输入/输出缓冲清除,並呼叫任何對atexit ()註冊的函數, Nios II EDS預設使用干净的出口。選好项目,按右鍵,系统程序库物产,不要選干净的出口(充足的缓冲)。 13.勾選节目从未退出嵌入式系統通常不會結束,所以可勾選节目从未退出減少出口所造成的負擔。選好项目,按右鍵,系统程序库物产,勾選节目从未退出。14.不要使用C+Nios II EDS預設支援C+,但C+所編譯的程式碼大小較大,建議使用純C語言撰寫。選好项目,按右鍵,系统程序库物产,不要勾選支持C+。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1