日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于嵌入式NiosⅡ軟核的串口直接讀寫寄存器方式編程

O 引言
    Altera公司的FPGA作為全定制芯片的一個代表正在得到日益廣泛的應用。為了用戶使用方便,Altera公司推出嵌入式軟核NiosⅡ可以便利地使用工具生成并放人FPGA芯片中。NiosⅡ軟核可以在用戶的系統(tǒng)中處理一些諸如人機接口界面、內(nèi)部時序邏輯控制、外部設備初始化等工作。通用異步收發(fā)器(UART),是嵌入式系統(tǒng)上很常用的一個串行接口,由于其方便、簡單、易用等特性,在嵌入式系統(tǒng)中依然扮演著十分重要的角色。所以Altera才把UART作為一個連接Nios/NiosⅡ與其相關(guān)外設的IP放在SoPC Builder里面供用戶使用。Nios一代調(diào)試甚至直接用串口。
    NiosⅡ處理器是Intel公司為Altera公司推出的一個32位精簡指令處理器軟核。在Altera公司推出的軟件SoPC中加載NiosⅡ軟核和相應的外圍接口以及與定義相應的自定義指令,然后對設計進行綜合,下載到FPGA中就可以方便地實現(xiàn)一個具有高速DSP功能的嵌入式處理器。
    NiosⅡ處理器的軟件開發(fā)是建立在ANSI C基礎上的。NiosⅡIDE是NiosⅡ系列嵌入式處理器的主要軟件開發(fā)工具。用戶可以在NiosⅡIDE中完成所有的軟件開發(fā)任務,如編輯、編譯、下載、調(diào)試和閃存編程。NiosⅡ嵌入式系統(tǒng)的一個重要問題就是軟件代碼量的大小,這關(guān)系到存放代碼的存儲器件容量大小,因此控制和減小程序代碼量是降低系統(tǒng)成本的重要方法,必須首先從處理器的啟動順序開始研究。

1 串口C語言方式編程
    使用該方法要加上下面語句:

    執(zhí)行上面程序可以得到串口輸出結(jié)果。
    如果不調(diào)用alt_main()函數(shù),則系統(tǒng)默認運行步驟如下:
    (1)調(diào)用alt_os_int()函數(shù)來執(zhí)行任何操作系統(tǒng)所特有的初始化。如果HAL是在操作系統(tǒng)里運行的,那么初始化alt_fd_list_lock命令。它可以控制訪問HAL文件系統(tǒng),初始化中斷控制器并執(zhí)行中斷。
    (2)調(diào)用alt_sys_init()函數(shù),以初始化系統(tǒng)里所有的驅(qū)動裝置和軟件組成部分。
    (3)重新設置C標準I/O通道(stdin,stdout,stderr),以使用合適的器件。
    (4)調(diào)用main()。
    (5)調(diào)用exit()。main()的返回代碼作為exit()的輸入。
    該方式使用串口比較簡單,但是占用的存儲資源比較大,編譯時間也較長。


[!--empirenews.page--]
2 串口直接讀寫寄存器方式編程
2.1 串口初始化

    NiosⅡ的串口編程有多種方式,比較多的是采用標準C語言寫法,占用程序空間比較大。NiosⅡ處理器的啟動可采用2種方式:自動初始化和用戶自定義初始化。ANSI C標準定義應用程序可以通過調(diào)用main()來開始執(zhí)行。在調(diào)用main()之前,應用程序假定運行環(huán)境和所有的服務系統(tǒng)都被初始化并準備運行。初始化可以被硬件抽象層(HAL)系統(tǒng)庫自動執(zhí)行。程序員不需要考慮系統(tǒng)的輸出設備以及如何初始化每一個外設,HAL會自動初始化整個系統(tǒng)。
    另外,ANSI C標準也提供了一個可變的入口點程序,以避免自動初始化。ANSI C標準還定義程序員能手動初始化任何所用的硬件。alt_ main()函數(shù)提供了一個獨立式的編程環(huán)境,能夠完全控制系統(tǒng)的初始化。獨立式編程環(huán)境可以使程序員手動編寫初始化系統(tǒng)的代碼。
    HAL提供的系統(tǒng)初始化代碼按以下啟動順序運行:
    (1)啟動指令和數(shù)據(jù)高速緩沖存儲器;
    (2)配置堆棧;
    (3)配置全局指針;
    (4)通過鏈接器提供的_bss_start和_bss_end來零初始化BSS層,_bss_start和_bss_end是開始和結(jié)束BSS的命令;
    (5)如果當前系統(tǒng)沒有啟動下載器,就復制.rwdata,.rodata或者剩下的部分到RAM;
    (6)調(diào)用alt_main()。
    在NiosⅡIDE工程中,只需簡單定義alt_main()就可以實現(xiàn)用戶的啟動順序,而且能夠選擇HAL的服務程序。如果應用程序需要一個alt_ main()入口點程序,可以復制默認的執(zhí)行作為開始點,根據(jù)要求來定制它。

    使用獨立式編程環(huán)境會增加NiosⅡ程序編寫的復雜性。獨立式編程環(huán)境的主要作用在于減小代碼量,但要使用這種方法,需要對NiosⅡ處理器的外設和驅(qū)動編寫都非常熟悉才行。在NiosⅡIDE中也可以通過某些選項來減小HAL系統(tǒng)庫容量,從而達到減小代碼量的目的,比使用獨立式編程環(huán)境容易得多。
    串口部分程序初始化代碼如下:
    //串口中斷初始化  

2.2 串口收發(fā)通信程序
    串口的收發(fā)可采用查詢和中斷方式,中斷方式要更好一些。
    查詢方式發(fā)送子程序代碼如下:


   [!--empirenews.page--] 查詢方式接收子程序代碼如下:

    因為串口的中斷號是惟一的,所以中斷方式接收發(fā)送只能在一個中斷函數(shù)內(nèi)。中斷方式接收發(fā)送子程序代碼如下:

    該中斷處理程序可進行中斷方式接收發(fā)送,如果程序需要進行精確的接收發(fā)送,還需加上中斷程序和主程序的相互控制變量。
2.3 串口通信調(diào)試
    在Nios中調(diào)試“Hello world!”范例的時候往往會出現(xiàn)這樣的錯誤:nios2-terminal:can‘t open uart:Permission denied。這是因為在調(diào)試程序時,打開了另外的串口調(diào)試工具,或者可以說是串口偵聽器。但實際上NIOS IDE中已經(jīng)集成了串口調(diào)試工具,或者串口偵聽器。在任務管理器中nios2-terminal.exe就是這個偵聽串口的進程。
    所以,如果用NIOS IDE來觀察發(fā)送的數(shù)據(jù),就不要用其他的串口調(diào)試工具,如果在編譯之前就打開了其他的串口偵聽器,編譯鏈接的時候就會出現(xiàn)上述的錯誤。而在程序編譯鏈接后再去打開其他的串口偵聽器,串口就會因為nios2-terminal.exe占用而無法打開。解決的方法,如果想用NIOS IDE觀察的話就不要事先打開其他的串口調(diào)試工具。而如果想用其他的串口調(diào)試工具來觀察數(shù)據(jù),通過USB_BLASTER將數(shù)據(jù)下載到板子后,刪除任務管理器中的nios2_terminal.exe,然后打開串口調(diào)試工具。如果程序沒有問題,運行后就可以看到數(shù)據(jù)。

3 結(jié)果與討論
    為證明以上程序的可運用性,特別制作了電路來驗證,芯片使用EP3C40,PC端使用串口調(diào)試助手,波特率為19 200 b/s,8位數(shù)據(jù)位,1位停止位,無校驗位。實驗結(jié)果如圖2所示。


    經(jīng)實驗證明,該方法簡單可靠,可以生成比較小的代碼。

4 結(jié)語
    本文討論了嵌入式軟核NiosⅡ中串口模塊的編程方法,給出了串口模塊編程的示例代碼,經(jīng)實際運用,效果良好,具有一定的參考意義。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在這篇文章中,小編將對工業(yè)機器人的相關(guān)內(nèi)容和情況加以介紹以幫助大家增進對工業(yè)機器人的了解程度,和小編一起來閱讀以下內(nèi)容吧。

關(guān)鍵字: 工業(yè)機器人 機器人 編程

現(xiàn)在網(wǎng)上有很多播放量巨高的免費編程項目教程,很多學編程的同學可能都看過,就導致大家可能寫在簡歷上的內(nèi)容都差不多。

關(guān)鍵字: 項目 編程 簡歷

串口作為單片機開發(fā)的一個常用的外設,應用范圍非常廣。大部分時候,串口需要接收處理的數(shù)據(jù)長度是不定的。那么怎么才能判斷一幀數(shù)據(jù)是否結(jié)束呢,今天就以STM32單片機為例,介紹幾種接收不定長數(shù)據(jù)的方法。

關(guān)鍵字: 單片機 串口 STM32

經(jīng)過幾十年發(fā)展,嵌入式技術(shù)已經(jīng)用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強的屬性,讓很多非嵌入式領域的同學望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來越多領域,包括了家居,商業(yè),工業(yè),農(nóng)業(yè)等領域,不僅吸引...

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 技術(shù)

隨著IT技術(shù)飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)進入了“物聯(lián)網(wǎng)”時代。物聯(lián)網(wǎng)中需要的大量設備不在依賴人與人之間的交互產(chǎn)生聯(lián)系,更多通過協(xié)議、通信、程序設計等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計算機的智能但并不以通...

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機

最近看到APP上,給我推送了很多類似的回答,借此機會,也想著重新審視一下自己的學習歷程,以及結(jié)合自身和大牛,分享一些學習經(jīng)驗,希望對大家有所啟發(fā)和幫助。

關(guān)鍵字: APP 嵌入式 C語言

本文中,小編將對無線模塊予以介紹,如果你想對無線模塊的詳細情況有所認識,或者想要增進對它的了解程度,不妨請看以下內(nèi)容哦。

關(guān)鍵字: 無線模塊 寄存器 處理器

萬物智聯(lián)時代,嵌入式技術(shù)及其應用的形態(tài)將更加豐富和多元,同時也將日益呈現(xiàn)深度物理融合、混合架構(gòu)共存、群體智能協(xié)同、網(wǎng)絡安全攸關(guān)等諸多新的計算特性。顯然,經(jīng)典的嵌入式系統(tǒng)體系結(jié)構(gòu)、軟硬件技術(shù)和開發(fā)方法都已很難應對新趨勢下的...

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機

物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,是互聯(lián)網(wǎng)與嵌入式系統(tǒng)發(fā)展到高級階段的融合。通用計算機經(jīng)歷了從智慧平臺到互聯(lián)網(wǎng)的獨立發(fā)展道路;嵌入式系統(tǒng)則經(jīng)歷了智慧物聯(lián)到局域智慧物聯(lián)的獨立發(fā)展道路。

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機

今天,小編將在這篇文章中為大家?guī)砉た刂靼宓挠嘘P(guān)報道,通過閱讀這篇文章,大家可以對工控主板具備清晰的認識,主要內(nèi)容如下。

關(guān)鍵字: 工控主板 嵌入式 主板

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉