《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > NiosII處理器軟件代碼優化方法
NiosII處理器軟件代碼優化方法
摘要: NiosII嵌入式系統的一個重要問題就是軟件代碼量的大小,這關系到存放代碼的存儲器件容量大小,因此控制和減小程序代碼量是降低系統成本的重要方法,必須首先從處理器的啟動順序開始研究。
Abstract:
Key words :

引 言

Altera公司的NiosII軟核處理器具有完全可定制特性、高性能、較低的產品和實旌成本、易用性、適應性以及不會過時等優勢。使用NiosII處理器,將不會局限于預先制造的處理器技術,而是根據用戶的標準定制處理器,按照需要選擇合適的外設、存儲器和接口。此外,還可以輕松集成用戶專有的功能,使設計具有獨特的競爭優勢。

NiosII處理器的軟件開發是建立在ANSlC基礎上的。NiosII IDE是NiosⅡ系列嵌入式處理器的主要軟件開發工具。用戶可以在NiosII IDE中完成所有的軟件開發任務,如編輯、編譯、下載、調試和閃存編程。NiosII嵌入式系統的一個重要問題就是軟件代碼量的大小,這關系到存放代碼的存儲器件容量大小,因此控制和減小程序代碼量是降低系統成本的重要方法,必須首先從處理器的啟動順序開始研究。

1 NiosII處理器啟動順序和程序入口地址

NiosII處理器的啟動可采用兩種方式:自動初始化和用戶自定義初始化。ANSIC標準定義應用程序可以通過調用main()來開始執行。在調用main()之前,應用程序假定運行環境和所有的服務系統都被初始化并準備運行。初始化可以被硬件抽象層(HAL)系統庫自動執行。程序員不需要考慮系統的輸出設備以及如何初始化每一個外設,HAL會自動初始化整個系統。

另外,ANSIC標準也提供了一個可變的入口點程序,以避免自動初始化。ANSIC標準還定義程序員能手動初始化任何所用的硬件。alt_main()函數提供了一個獨立式的編程環境,能夠完全控制系統的初始化。獨立式編程環境可以使程序員手動編寫初始化系統的代碼。

HAL提供的系統初始化代碼按以下啟動順序運行:

①啟動指令和數據高速緩沖存儲器;

②配置堆棧;

③配置全局指針;

④通過鏈接器提供的_bss_start和_bss_end來零初始化BSS層,_bss_stan和_bss_end是開始和結束BSS的命令;

⑤如果當前系統沒有啟動下載器,就復制.rwdata、.rodata,或者剩下的部分到RAM;

⑥調用alt_main()。

如果不調用alt_main()函數,則系統默認運行步驟如下:

①調用ALT_OS_INIT()來執行任何操作系統所特有的初始化。如果HAL是在操作系統里運行的,那么初始化alt_fd_list_lock命令。它町以控制訪問HAL文件系統,初始化中斷控制器并執行中斷。

②調用alt_sys_init()函數,以初始化系統里所有的驅動裝置和軟件組成部分。

③重新設置C標準I/O通道(stdin,stdout,stderr),以使用合適的器件。

④調用main()。

⑤調用exit()。rnain()的返回代碼作為exit()的輸入。

在NiosII IDE工程中,只需簡單定義alt_main()就可以實現用戶的啟動順序,而且能夠選擇HAL的服務程序。如果應用程序需要一個alt_main()入口點程序,可以復制默認的執行作為開始點,根據要求來定制它。

alt_main()這個函數是不能返回的,其原型是:voidalt_main()。

使用獨立式編程環境會增加NiosII程序編寫的復雜性。獨立式編程環境的主要作用在于減小代碼量,但要使用這種方法,需要對NiosII處理器的外設和驅動編寫都非常熟悉才行。

在NiosII IDE中也可以通過某些選項來減小HAL系統庫容量,從而達到減小代碼量的目的,比使用獨立式編程環境容易得多。

 

2 減小代碼量的方法

2.1 打開編譯器優化選項

在nios2-elf-gcc編譯器中使用“-O3”選項,代碼可以被最大限度地優化,包括代碼的大小和執行速度。需要注意的是,編譯器優化可能會帶來一些意想不到的結果。另外,必須在用戶工程和系統庫中都使用-O3選項,如圖l所示。

圖

2.2 使用小封裝的驅動庫

HAL為處理器的外沒提供了兩種驅動庫:一種是執行速度快,但代碼量大的版本;另一種是小封裝版本。默認情況下,HAL系統使用是代碼量大的版本,可以選擇Reduced device drivers選項來選擇小封裝版本,從而減小代碼量,如圖2所示。

 

圖

2.3 使用新的C語言庫

完整的ANSTC標準庫通常不適用于嵌入式系統,HAL提供了一系列經過裁減的新的ANSI C標準庫,占用非常小的代碼量??梢赃x擇Small C library選項來選擇新的ANSI C標準庫,如圖3所示。

圖

2.4 去掉不使用的驅動庫

當NiosIl系統中有外設時,NiosII IDE認為這些設備需要驅動,因此在HAL系統中加入了相應的驅動庫。如果在用戶的程序中并不需要使用到這些外設,也可以在初始化時不加載這些驅動庫。

當用戶的程序并沒有使用到NiosII系統中某些設備(如SPI通信接口)時,應在系統中將這些設備完全移除。這樣,既可以減小軟件代碼量,又可以減少占用的FPGA資源。最常見的一個例子就是系統中的F1ash存儲芯片。在用戶程序中通常不會對Flash芯片進行寫操作,因此不需要加載Flash驅動庫,可以在工程屬性的preprocessor選項中加入“-DALT_NO_CFI_FLASH”,使得HAL系統不將Flash芯片驅動加入系統庫中。

2.5 使用_exit()函數

在默認情況下,HAL系統會調用exit()函數作為用戶程序的結束。exit()函數主要完成兩部分工作:清除所有C語言庫中的I/O緩存;調用在atexit()函數中的所有函數。實際上,相當于main()函數中return語句在執行之前必須要完成的工作。

而在嵌入式系統中用戶程序是不會退出main()函數的,所以exit()這段代碼是多余的,可以去掉。在用戶程序中可以用_exit()來代替exit(),_exit()程序不執行任何操作且無需對用戶程序做改動,只需在工程屬性的pre-processor選項中加入“-Dexit=_exit”。

3 總 結

通過上述方法,對一個簡單的helloworld程序進行代碼量優化。程序如下:

 

 

程序代碼量優化
程序代碼量優化

 

在未進行任何優化之前,編譯完成后代碼量為68 KB:在經過上述優化方法編譯之后,代碼量變為7044字節。由此可見,上述優化方法十分有效,代碼量減小為原來的1/10,在NosII嵌入式系統中有重要的實用價值。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品久久久久久久久动漫| 欧美影院一区| 亚洲视频电影图片偷拍一区| 亚洲系列中文字幕| 欧美在线日韩精品| 亚洲视频在线观看三级| 国产自产女人91一区在线观看| 国产精品一级久久久| 亚洲视频免费在线| 亚洲一区美女视频在线观看免费| 在线国产精品播放| 久久女同精品一区二区| aa成人免费视频| 欧美韩日一区二区三区| 国产精品伊人日日| 国产综合第一页| 在线播放中文一区| 欧美剧在线观看| 国产精品v欧美精品v日韩| 美日韩精品免费观看视频| 欧美精品日韩三级| 久久久久久久一区二区| 激情欧美日韩| 久久在线精品| 99在线精品视频在线观看| 激情六月婷婷久久| 欧美精品三级在线观看| 亚洲一区二区成人| 亚洲精品在线一区二区| 欧美日韩精品免费在线观看视频| 激情五月婷婷综合| 欧美午夜理伦三级在线观看| 久久先锋影音av| 亚洲女人天堂av| 国产一区久久久| 一区二区三区在线免费视频| 国产精品视频一| 久久本道综合色狠狠五月| 玉米视频成人免费看| 欧美色综合天天久久综合精品| 久久久综合网站| 国产精品成人一区二区网站软件| 一区二区三区国产精华| 久久国产天堂福利天堂| 裸体丰满少妇做受久久99精品| 国产精品草莓在线免费观看| 久久免费少妇高潮久久精品99| 久久激情中文| 欧美三区在线| 国产一区二区三区av电影| 日韩午夜电影在线观看| 国产精品你懂得| 国产精品乱人伦一区二区| 亚洲欧美视频一区二区三区| 久久夜色精品国产噜噜av| 国产一区二区三区成人欧美日韩在线观看| 欧美精品v国产精品v日韩精品| 国产日韩av在线播放| 欧美理论电影在线播放| 一区二区三区你懂的| 在线播放豆国产99亚洲| 久久久亚洲人| 国产一级揄自揄精品视频| 狠狠色综合色综合网络| 影音先锋一区| 在线看国产一区| 国产日韩欧美电影在线观看| 国产精品一区免费观看| 欧美日韩国产成人在线观看| 中文精品视频一区二区在线观看| 国产精品毛片在线看| 亚洲六月丁香色婷婷综合久久| 久久国产直播| 亚洲欧美三级伦理| 蜜桃久久av| 午夜影院日韩| 亚洲精品国产精品国自产在线| 国产精品成人一区二区三区吃奶| 国内精品久久久久久| 亚洲自拍16p| 久久精品成人| 日韩一级视频免费观看在线| 亚洲裸体俱乐部裸体舞表演av| 国产日韩欧美在线播放不卡| 国产精品久久久久久妇女6080| 亚洲欧美日韩国产精品| 一本色道久久综合亚洲精品高清| 夜夜嗨av一区二区三区四区| 久久久精品一区| 亚洲二区三区四区| 国产一区二区三区精品欧美日韩一区二区三区| 欧美视频第二页| 亚洲精华国产欧美| 精品成人一区二区三区四区| 激情伊人五月天久久综合| 久久精品国产亚洲一区二区| 欧美三级电影大全| 国产欧美精品一区二区三区介绍| 欧美人与禽猛交乱配| 久久在线免费| 中日韩美女免费视频网站在线观看| 国产欧美日韩视频一区二区三区| 亚洲精品乱码| 狠狠爱www人成狠狠爱综合网| 亚洲欧洲视频在线| 韩国一区电影| 亚洲视屏在线播放| 一区二区欧美在线| 亚洲中字在线| 亚洲乱码精品一二三四区日韩在线| 国产欧美视频一区二区三区| 亚洲图片欧洲图片av| 中日韩午夜理伦电影免费| 欧美日韩综合一区| 欧美日韩一区二区欧美激情| 亚洲激情网站免费观看| 欧美色精品天天在线观看视频| 性欧美大战久久久久久久久| 欧美日韩中国免费专区在线看| 国产色爱av资源综合区| 国产综合亚洲精品一区二| 欧美在线视频导航| 亚洲视频观看| 国产精品分类| 亚洲欧美综合v| 久久综合九色欧美综合狠狠| 亚洲国产三级在线| 久久综合久久综合这里只有精品| 久久久久.com| 99国产精品国产精品毛片| 久久久欧美精品| 日韩视频一区二区三区在线播放免费观看| 欧美日韩国产一中文字不卡| 国产麻豆日韩欧美久久| 亚洲欧美日韩另类精品一区二区三区| 亚洲第一久久影院| 麻豆成人综合网| 免费观看欧美在线视频的网站| 欧美三日本三级三级在线播放| 国产综合18久久久久久| 小处雏高清一区二区三区| 国产欧美短视频| 国产欧美一区二区精品性| 亚洲精品视频啊美女在线直播| 欧美精品免费看| 黄色一区二区三区四区| 一区二区视频免费完整版观看| 欧美视频成人| 欧美久久久久免费| 亚洲一区二区三区在线播放| 欧美一区2区视频在线观看| 夜夜嗨av一区二区三区网页| 一本色道久久综合亚洲二区三区| 欧美顶级艳妇交换群宴| 亚洲欧美日韩精品久久久| 老司机精品视频一区二区三区| 亚洲日本中文字幕| 裸体丰满少妇做受久久99精品| 亚洲视频一起| 欧美性jizz18性欧美| 欧美日韩成人激情| 久久av资源网站| 亚洲专区一二三| 久久国产一区二区三区| 亚洲电影有码| 欧美成人综合一区| 91久久精品视频| 欧美日本一道本在线视频| 亚洲欧美资源在线| 国产日韩精品在线播放| 欧美日韩一卡| 欧美日韩视频不卡| 午夜视黄欧洲亚洲| 欧美一区三区二区在线观看| 国产精品99久久不卡二区| 亚洲午夜精品一区二区| 国产精品一区在线观看你懂的| 国产欧美亚洲精品| 国产精品久久久久久久久免费樱桃| 亚洲黄色成人久久久| 99精品视频免费全部在线| 久久久.com| 欧美日韩国语| 久久亚洲欧美国产精品乐播| 久久午夜激情| 久久精品国产99国产精品澳门| 久久综合九色| 亚洲区一区二| 欧美成人精品在线| 欧美电影在线观看| 国产精品伊人日日| 伊人精品成人久久综合软件| 亚洲私人影院在线观看| 亚洲深爱激情| 久久综合精品国产一区二区三区| 亚洲字幕在线观看| 一区精品在线| 亚洲精品一区二区三区不| 极品尤物一区二区三区| 亚洲欧美国产高清| 欧美午夜片在线观看| 欧美一区二区三区四区高清| 国产精品久久久久久五月尺| 欧美成人自拍| 美女视频黄a大片欧美| 欧美在线影院在线视频| 国产精品免费一区二区三区观看| 久久综合九色欧美综合狠狠| 国内揄拍国内精品少妇国语| 亚洲清纯自拍| 亚洲高清在线观看一区| 在线观看视频亚洲| 久久精品亚洲乱码伦伦中文| 在线免费观看日韩欧美| 亚洲尤物视频在线| 一区二区三区中文在线观看| 久久精品日产第一区二区三区| 在线观看久久av| 亚洲日本欧美天堂| 国产精品一区二区久激情瑜伽| 欧美激情一区二区三区成人| 日韩一级片网址| 亚洲福利精品| 国产一区二区三区成人欧美日韩在线观看| 国产精品天天看| 一本久久a久久精品亚洲| 国产精品激情电影| 亚洲欧美日韩电影| 欧美精品久久天天躁| 在线欧美影院| 欧美亚洲在线观看| 欧美在线播放高清精品| 久久久91精品国产一区二区精品| 欧美亚洲日本国产| 1024欧美极品| 影音先锋日韩资源| 国产精品亚洲第一区在线暖暖韩国| 免费日韩精品中文字幕视频在线| 国内精品免费在线观看| 国产精品一区二区a| 亚洲午夜电影网| 欧美女激情福利| 欧美精品尤物在线| 一区二区三区精品视频| 国产精品网红福利| 久久网站免费| 亚洲人成免费| 欧美大片18| 欧美一级理论性理论a| 欧美在线免费播放| 91久久国产综合久久91精品网站| 亚洲调教视频在线观看| 一区二区在线视频| 91久久精品国产| 久久亚洲欧洲| 99视频精品全部免费在线| 欧美日韩一区二| 午夜精品理论片| 久久超碰97中文字幕| 国内视频一区| 欧美激情亚洲自拍| 欧美11—12娇小xxxx| 欧美一区二区三区四区夜夜大片| 久久久精品国产99久久精品芒果| 欧美日韩在线一区二区| 欧美成人午夜激情视频| 亚洲国产网站| 国产精品美女久久| 国产一区二区在线免费观看| 欧美/亚洲一区| 欧美特黄一区| 国产精品久久久久久久久久免费| 欧美国产精品劲爆| 亚洲一区999| 亚洲成色777777在线观看影院| 久久久久久成人| 久久综合久久综合久久综合| 激情综合视频| 亚洲日本aⅴ片在线观看香蕉| 在线观看日韩av先锋影音电影院| 欧美调教视频| 黄色成人片子| 一区二区三区波多野结衣在线观看| 欧美午夜精品一区二区三区| 国产精品亚洲成人| 91久久久久久久久久久久久| 亚洲精品视频中文字幕| 久热综合在线亚洲精品| 欧美激情第三页| 欧美视频在线观看免费| 亚洲电影免费观看高清| 亚洲免费在线观看视频| 狼人天天伊人久久| 欧美午夜一区二区三区免费大片| 欧美久久婷婷综合色| 亚洲成在线观看| 亚洲女人天堂成人av在线| 午夜精品www| 午夜国产欧美理论在线播放| 裸体丰满少妇做受久久99精品| 伊人激情综合| 久久精品国产999大香线蕉| 亚洲影院色无极综合| 午夜一级久久| 国产综合色在线| 久久久国产精品亚洲一区| 亚洲免费综合| 美女黄毛**国产精品啪啪| 精品二区久久| 亚洲欧美日韩国产成人精品影院| 欧美成人综合一区| 99精品国产热久久91蜜凸| 久久久久久亚洲精品中文字幕| 在线视频日韩精品| 一区二区三区四区蜜桃| 亚洲免费视频一区二区| 久久这里只精品最新地址| 欧美三级韩国三级日本三斤| 母乳一区在线观看| 久久免费观看视频| 在线不卡中文字幕播放| 麻豆成人在线播放| 国产精品美女xx| 蜜臀久久99精品久久久久久9| 欧美日韩aaaaa| 国产综合色在线视频区| 亚洲私人影院在线观看| 欧美激情一区二区三区|