999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NIOS II系統(tǒng)的異步串行通信功能的實現(xiàn)

2011-08-20 14:32:10顏麗莎朱力宏
關(guān)鍵詞:嵌入式調(diào)試方法

顏麗莎 朱力宏

(鄭州鐵路職業(yè)技術(shù)學(xué)院,河南 鄭州 450052)

NIOS II系統(tǒng)是Altera公司推出的32位RSIC嵌入式處理器。它具有完善的軟件開發(fā)套件,包括編譯器、集成開發(fā)環(huán)境、JTAG調(diào)試等,設(shè)計者能夠用Altera Quarter II開發(fā)軟件的SOPC Builde系統(tǒng)開發(fā)工具創(chuàng)建處理器系統(tǒng),并能夠根據(jù)需求添加其組件。[1]

通用異步收發(fā)器(UART),是嵌入式系統(tǒng)上很常用的一個串行接口,由于其方便、簡單、易用等特性,在嵌入式系統(tǒng)中扮演著十分重要的角色。UART通過電平轉(zhuǎn)換可實現(xiàn)RS232、RS485、RS422等工業(yè)標(biāo)準(zhǔn)的接口,在相關(guān)工業(yè)控制通信中應(yīng)用十分廣泛。UART通信主要通過RXD和TXD兩條信號線,即可實現(xiàn)全雙工串行通信。

在一些應(yīng)用中,往往需要兩三個甚至多個串口,選用現(xiàn)成的MCU方案,顯然很難滿足需求。由于UART作為一個組件與其相關(guān)外設(shè)的IP放在SOPC Builder里,可供用戶直接調(diào)用。因此,基于FPAG芯片的NIOS系統(tǒng),可根據(jù)需求方便地配置出多個,甚至是幾十個串口,而且可任意分配引腳。因此,討論和采用NIOS II系統(tǒng)實現(xiàn)串口通信功能具有重要的實際意義。

在以往的關(guān)于基于NIOS II系統(tǒng)串口使用的文章中,往往只針對于寄存器控制等某一細(xì)節(jié)問題進(jìn)行討論。實際使用中,串口的軟件控制可以通過HAL系統(tǒng)庫、寄存器等幾種不同的控制方法實現(xiàn)。其每一種方法又各有優(yōu)劣,適合于不同的應(yīng)用場合。本文從NIOS II系統(tǒng)中串口硬件定制入手,重點討論幾種不同軟件控制方法的實現(xiàn)及特點,并提供了詳細(xì)的例程代碼,為NIOS II系統(tǒng)的使用開發(fā)者提供設(shè)計參考。

1 硬件設(shè)計

本設(shè)計中要實現(xiàn)帶NIOS II的FPGA系統(tǒng)與其它系統(tǒng)間的串行通訊,首先要建立硬件連接。在硬件設(shè)計中,通常采用接口芯片MAX3232構(gòu)成RS232硬件電路實現(xiàn)不同系統(tǒng)間的電平匹配。

在Quartus II中新建工程,將圖形設(shè)計作為頂層文件,通過SOPC將NIOS II系統(tǒng)模塊建立到頂層文件中。NIOS II處理器提供了豐富的外圍設(shè)備,可以根據(jù)需求在SOPC Builder中添加,其中主要包括UART串口IP核。

UART核實現(xiàn)了基于FPGA的嵌入式系統(tǒng)與外部器件之間的串行字符流通信。該核可實現(xiàn)RS-232協(xié)議,提供可以調(diào)節(jié)的波特率、校驗、停止/數(shù)據(jù)位,以及可選的RTS/CTS控制信號,用戶可以根據(jù)需要配置該核。

UART核提供了一個簡單的寄存器映像Avalon從端口,它允許Avalon主外設(shè)(如NIOS II處理器)簡單地通過讀和寫控制寄存器與該核實現(xiàn)通信。

該核可直接由SOPC Builder工具創(chuàng)建,創(chuàng)建完成后的接口信號有RXD、TXD、CTX和RTS(其中后兩項可選)。定制時,可通過配置對話框設(shè)定UART核的各項參數(shù)。

主要參數(shù)有:

(1)波特率設(shè)置選項

UART核可以實現(xiàn)RS-232的所有標(biāo)準(zhǔn)波特率。波特率可以設(shè)定為固定波特率和可變波特率。當(dāng)設(shè)定為固定波特率時,通過下拉框可選115200/9600等,不能通過軟件修改。可變波特率可以通過寫divisor寄存器設(shè)定分頻值,來改變波特率值。

(2)數(shù)據(jù)位、停止位和奇偶校驗位設(shè)置

這些參數(shù)只能在配置系統(tǒng)創(chuàng)建時設(shè)置,不能在系統(tǒng)生成后通過寫相應(yīng)的寄存器修改。

(3)流控制

當(dāng)流控制選項Include CTS/RST pin& contro lregister bits選中時,UART核的cts、dcts、rts、idcts等寄存器位直接反映流控制信號,如果該選項未被選中時,這些狀態(tài)位總是讀為0。

UART核中的Avalon接口可選擇實現(xiàn)流傳輸模式。這允許主設(shè)備僅在UART準(zhǔn)備接收一個字符時寫數(shù)據(jù),且僅在UART有效數(shù)據(jù)時讀數(shù)據(jù),當(dāng)選項Include end-of-packet register是on狀態(tài)時,UART核可以結(jié)束一個與主設(shè)備之間的流模式數(shù)據(jù)傳輸。它能自動將接收的字符寫到存儲器中,直到RxD端接收到一個指定的字符為止。結(jié)束字符由endofpacket寄存器決定。

2 軟件編程

建立硬件IP核完成硬件設(shè)計以后,在NIOS II集成開發(fā)環(huán)境里,通過軟件編程及設(shè)置實現(xiàn)UART的控制。對于NIOS處理器用戶來說,我們總結(jié)了有下列三種控制UART的編程方法。

2.1 采用HAL系統(tǒng)庫驅(qū)動

用戶可以使用ANSI C標(biāo)準(zhǔn)庫函數(shù)訪問UART核,例如printf()和getchar()等。ioctl()請求允許HAL用戶直接控制UART核與硬件相關(guān)的功能。

HAL系統(tǒng)庫API支持對UART核功能部件的完全訪問。NIOS II程序把UART核看成是一個字符模式設(shè)備,使用ANSIC標(biāo)準(zhǔn)庫函數(shù)發(fā)送和接收數(shù)據(jù)。

下面的代碼是一個最簡單的串口通信程序,具體功能是使用printf函數(shù)將一個字符顯示到stdout設(shè)備上。

需要注意的是,這個例子中的SOPC Builder系統(tǒng)包含了一個名為uart0的UART核,采用這種方法的UART編程,要在NIOS II IDE的工程配置選項中將所使用的串口設(shè)備uart_0配置為stout。這種方法最簡單,代碼最少。但是缺點:1.效率較低;2.由于占用了stout等通道,調(diào)試時,無法用jtag_uart通過NIOS II內(nèi)部控制臺打印信息。

2.2 采用C標(biāo)準(zhǔn)庫函數(shù)調(diào)用

通過使用C標(biāo)準(zhǔn)庫函數(shù)對UART設(shè)備完成特定字符操作,這是對串口UART核的標(biāo)準(zhǔn)使用方法。如下面實例:

在本例中,SOPC Builder系統(tǒng)包含了一個名為uart1的UART核,該核不需要配置為stdout設(shè)備,程序中把UART設(shè)備作為HAL系統(tǒng)支持的文件類型打開并使用標(biāo)準(zhǔn)的文件操作函數(shù)對UART核進(jìn)行讀寫。[2]

這種方法將串口作為一個設(shè)備調(diào)用,代碼相對簡單,但運行效率較低,適用實時性要求不高的場合。

2.3 通過UART寄存器操作。

NIOS II軟核的串口直接讀寫寄存器方式的編程方法,與C語言的標(biāo)準(zhǔn)輸入/輸出語句相比,可極大地縮短程序執(zhí)行時間,并使得CPU能同時處理其他事務(wù)。

頭文件“altera_avalon_uart_regs.h”中定義了UART寄存器映射。[3]如下為根據(jù)寄存器實現(xiàn)UART功能的驅(qū)動程序uart.h文件的節(jié)選:

這段程序采用寄存器控制的方法實現(xiàn)了單個字節(jié)的發(fā)送。

這種方法采用寄存器直接控制串口,程序較為復(fù)雜,但執(zhí)行效率最高,時間最短。

在Nios IDE集成開發(fā)環(huán)境中將程序進(jìn)行編譯和仿真后,可直接通過JTAG下載線進(jìn)行在線Debug調(diào)試,也可利用Flash燒寫工具Flash programer,通過JTAG下載接口,將*.pof文件和*.jdi文件燒寫到片外Flash中后,實現(xiàn)脫機(jī)工作。最后將系統(tǒng)與計算機(jī)RS232串口相連通過串口調(diào)試助手進(jìn)行通訊實驗。

3 串口通信調(diào)試

在NIOS II中調(diào)試“Hello world!”的范例的時候,經(jīng)常會出現(xiàn)這樣的錯誤:nios2 terminal:can't open uart:Permission denied。這是因為在調(diào)試程序時,打開了另外的串口調(diào)試工具,或者認(rèn)為是串口偵聽器。實際上NIOS II中已經(jīng)集成了串口調(diào)試工具(串口偵聽器)。

在任務(wù)管理器中nios2 terminal.exe就是這個偵聽串口的進(jìn)程。所以,如果用NIOS II來觀察發(fā)送的數(shù)據(jù),就不要用其他的串口調(diào)試工具。如果在編譯之前就打開了其他的串口偵聽器,編譯鏈接的時候就會出現(xiàn)上述的錯誤。而在程序編譯鏈接后再去打開其他的串口偵聽器,串口就會因為nios2 terminal.exe占用而無法打開。

解決的方法,如果想用NIOS IDE觀察的話就不要事先打開其他的串口調(diào)試工具。而如果想用其他的串口調(diào)試工具來觀察數(shù)據(jù),通過下載器將FPGA配置文件下載到板子后,刪除任務(wù)管理器中的nios2 terminal.exe,然后打開串口調(diào)試工具。如果程序沒有問題,運行后就可以看到數(shù)據(jù)。[4]

[1]黃佳瑋,陳福深.基于NIOS II的SOPC嵌入式系統(tǒng)設(shè)計[J].電子元器件應(yīng)用,2009,(7):48-51.

[2]王剛,張瀲.基于FPGA的SOPC嵌入式系統(tǒng)設(shè)計與典型實例[M].北京:電子工業(yè)出版社,2009:255-265.

[3]唐佳,楊路明.FPGA通用數(shù)字信號處理實驗板的設(shè)計與實現(xiàn)[J].科技創(chuàng)新導(dǎo)報,2010,(18):29-30.

[4]李銳.基于嵌入式NIOS II軟核的串口直接讀寫寄存器方式編程[J].西安:現(xiàn)代電子技術(shù),2010,(14):37-39.

[5]楊英強.一種基于FPGA的UART電路實現(xiàn)[J].現(xiàn)代電子技術(shù),2005,(12):82-84.

猜你喜歡
嵌入式調(diào)試方法
基于航拍無人機(jī)的設(shè)計與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
搭建基于Qt的嵌入式開發(fā)平臺
FOCAS功能在機(jī)床調(diào)試中的開發(fā)與應(yīng)用
無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
可能是方法不對
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
調(diào)壓柜的調(diào)試與試運行探討
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 日韩国产黄色网站| 国产一级α片| 91亚洲国产视频| 99久久免费精品特色大片| 欧美精品亚洲精品日韩专区va| 狠狠亚洲婷婷综合色香| 国产亚洲精| 日韩不卡高清视频| 四虎影视库国产精品一区| 国产农村妇女精品一二区| 中文字幕欧美日韩| 亚洲成网777777国产精品| 国产国语一级毛片在线视频| 国产性猛交XXXX免费看| 永久天堂网Av| 青青青国产视频| 无码精油按摩潮喷在线播放| 中文无码毛片又爽又刺激| 久一在线视频| 夜精品a一区二区三区| 九色最新网址| 欧美日韩亚洲国产| 久久精品国产国语对白| 免费无码又爽又黄又刺激网站| 免费国产一级 片内射老| a免费毛片在线播放| 一级毛片a女人刺激视频免费 | 国产精品视频猛进猛出| 久久国产亚洲偷自| 97免费在线观看视频| 天天躁狠狠躁| 激情五月婷婷综合网| 国产成人禁片在线观看| 日本黄网在线观看| 午夜久久影院| 国产精品亚洲五月天高清| 日韩中文无码av超清| 91青青草视频| 伊人大杳蕉中文无码| 亚洲综合九九| 亚国产欧美在线人成| 秋霞国产在线| 激情网址在线观看| 91黄视频在线观看| 国产成人高清在线精品| 青青操国产| 一级不卡毛片| 亚洲综合日韩精品| 青青草国产在线视频| 无码'专区第一页| 在线无码私拍| 国产久草视频| 自拍偷拍欧美日韩| 亚洲欧美另类中文字幕| 亚洲福利片无码最新在线播放| 91偷拍一区| 亚洲欧洲日韩久久狠狠爱| 亚洲午夜福利在线| 国产精品极品美女自在线| 波多野结衣一级毛片| 四虎永久免费在线| 欧美成人午夜在线全部免费| 婷婷五月在线视频| 国产制服丝袜91在线| 97se亚洲综合不卡| 丰满人妻中出白浆| 久久国产拍爱| 久草性视频| 不卡无码网| 亚洲综合香蕉| 国产情精品嫩草影院88av| 成人午夜久久| 2021亚洲精品不卡a| 国产亚洲精品自在久久不卡| 精品無碼一區在線觀看 | 久久久久夜色精品波多野结衣| 一本无码在线观看| 风韵丰满熟妇啪啪区老熟熟女| 亚洲中文字幕av无码区| 亚洲天堂视频在线播放| 亚洲欧美日本国产专区一区| 亚洲三级成人|