0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

支持RT-Thread操作系統(tǒng)的NIOS II CPU系統(tǒng)搭建過程詳解

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 2017-12-04 18:15 ? 次閱讀

實(shí)驗(yàn)說明

本節(jié)說明了如何基于在Qsys中搭建支持RT-Thread操作系統(tǒng)的基本NIOS II處理器系統(tǒng),并在此基礎(chǔ)上實(shí)現(xiàn)創(chuàng)建2個LED閃爍的靜態(tài)線程的示例。RT-Thread操作系統(tǒng)版本:3.0軟件版本:Quartus II 13.0開發(fā)環(huán)境:Windows7 64位旗艦版硬件平臺:小梅哥AC620 FPGA開發(fā)板嵌入式處理器:NIOS II

操作步驟

搭建支持RT-Thread操作系統(tǒng)的NIOS II CPU系統(tǒng)

在Qsys中搭建能夠支持RT-Thread操作系統(tǒng)的NIOS II 處理器系統(tǒng),除了必要的NIOS II處理器、RAM存儲器(片上RAM、SRAM、SDRAM、DDR2)、FLASH存儲器(EPCS)外,為了支持RT-Thread操作系統(tǒng)的運(yùn)行,還需要添加UART串口外設(shè)、定時器外設(shè)、以及為了使系統(tǒng)能夠工作在較高的頻率,而添加PLL鎖相環(huán)。同時,為了能夠驅(qū)動LED燈,還需要根據(jù)實(shí)際硬件情況添加一定位寬的輸出型PIO以驅(qū)動LED燈。本系統(tǒng)主要包含以下外設(shè):

PLL 時鐘管理單元,輸出2路相位相差90°的時鐘,一路提供給系統(tǒng)內(nèi)所有邏輯使用,一路輸出到SDRAM芯片的clk管腳上。(相位為-90°)

NIOS II 處理器 ,選擇f(快速)版本,其他默認(rèn)。

SDRAM控制器,16位數(shù)據(jù)位寬,12位行地址,9位列地址,用作NIOS II的數(shù)據(jù)和指令存儲器

EPCS控制器,用以掉電存儲FPGA和NIOS II的軟硬件固件信息

UART(RS232)控制器,用作系統(tǒng)標(biāo)準(zhǔn)輸入輸出設(shè)備,默認(rèn)115200波特率

Timer定時器,設(shè)置默認(rèn)10毫秒定時器,并可通過軟件修改寄存器以修改定時時間。

PIO,僅輸出型PIO,4位,對應(yīng)開發(fā)板上4個LED燈

下圖為搭建好的最小NIOS II應(yīng)用系統(tǒng)

其中需要注意的是,驅(qū)動LED的PIO為4位,并直接命名為了led,uart串口被命名為了RS232,這是為了與RT-Thread官方提供的NIOS II的BSP文件中相關(guān)代碼相對應(yīng)。

NIOS II CPU相關(guān)設(shè)置

定時器參數(shù)設(shè)置

UART控制器相關(guān)設(shè)置

LED PIO相關(guān)設(shè)置

在Quartus II工程中例化CPU系統(tǒng)

設(shè)計頂層文件

將Qsys中搭建的系統(tǒng)命名為mysystem,然后generate得到HDL文件,在Quartus II軟件中添加mysystem.qsys文件,新建Verilog文件,完善頂層例化信息,完善后的代碼如下所示:

module ac620_ghrd( input wire reset_n, input wire clk, output wire [11:0] sdram_addr, output wire [1:0] sdram_ba, output wire sdram_cas_n, output wire sdram_cke, output wire sdram_clk, output wire sdram_cs_n, inout wire [15:0] sdram_dq, output wire [1:0] sdram_dqm, output wire sdram_ras_n, output wire sdram_we_n, output wire [3:0] led, input wire uart_rxd, output wire uart_txd, output wire epcs_dclk, output wire epcs_sce, output wire epcs_sdo, input wire epcs_data0 ); mysystem u0 ( .clk_in_reset_reset_n (reset_n), .clk_in_clk (clk), .sdram_addr (sdram_addr), .sdram_ba (sdram_ba), .sdram_cas_n (sdram_cas_n), .sdram_cke (sdram_cke), .sdram_cs_n (sdram_cs_n), .sdram_dq (sdram_dq), .sdram_dqm (sdram_dqm), .sdram_ras_n (sdram_ras_n), .sdram_we_n (sdram_we_n), .led_export (led), .uart_rxd (uart_rxd), .uart_txd (uart_txd), .sdram_cko_clk (sdram_clk), .epcs_dclk (epcs_dclk), .epcs_sce (epcs_sce), .epcs_sdo (epcs_sdo), .epcs_data0 (epcs_data0), .altpll_0_phasedone_conduit_export (), .altpll_0_locked_conduit_export (), .altpll_0_areset_conduit_export () ); endmodule

設(shè)置EPCS管腳功能

根據(jù)AC620 FPGA開發(fā)板引腳分配表或者開發(fā)板背面的絲印對用到的引腳功能一一分配正確的管腳。注意設(shè)置所有的IO電平為3.3LVTTL,以防止無法正確驅(qū)動SDRAM存儲器。另外由于使用到了EPCS,因此需要在Quartus中設(shè)置其功能為regular IO,如下圖所示:

添加SDC約束文件

在做基于NIOS II的SOPC開發(fā)時,務(wù)必要添加SDC約束文件,對系統(tǒng)的時鐘進(jìn)行約束,以保證Quartus II軟件能夠按照運(yùn)行的頻率要求對系統(tǒng)進(jìn)行布局布線,否則,在沒有加約束的情況下,整個系統(tǒng)可能最高運(yùn)行頻率比50MHz還要低,就會出現(xiàn)系統(tǒng)無法正常運(yùn)行,軟件無法下載等各種故障。本實(shí)例中約束文件比較簡單,大家只需要將下述內(nèi)容新建一個sdc文件保存起來并添加到Quartus II工程中即可:

set_time_format -unit ns -decimal_places 3 create_clock -name {clk} -period 20.000 -waveform { 0.000 10.000 } [get_ports {clk}] derive_pll_clocks

添加完成后編譯整個工程,得到sof文件。

創(chuàng)建NIOS II應(yīng)用工程模版

打開Quartus II集成的NIOS II軟件開發(fā)工具(基于Eclipse),然后切換工作空間到Quartus II工程目錄下。

然后新建一個空白模版工程和bsp工程,如下所示。注意,sopcinfo文件路徑一定不能錯。

移植RT-Thread操作系統(tǒng)

下載RT-Thread操作系統(tǒng)源碼

從git上下載RT-Thread操作系統(tǒng)的源文件,源碼地址:https://github.com/RT-Thread/rt-thread選擇master分支,點(diǎn)擊Clone or download按鈕,選擇Download zip來下載源文件,當(dāng)然也可以從我們提供的本實(shí)例的壓縮包中得到該文件。

下載完成之后的文件名為:rt-thread-master.zip

移植RT-Thread操作系統(tǒng)源碼

在RTT_Test工程下新建一個文件夾,命名為”rt-thread”,添加src文件夾,include文件夾到rt-thread文件夾下,然后添加libcpu下nios部分內(nèi)容到rt-thread文件夾下。注意,libcpu下提供了對各種體系架構(gòu)的cpu的支持,我們這里只需要nios部分即可,其他部分不需要添加到工程中。上述就完成了RT-Thread操作系統(tǒng)源碼的添加。但是此時還并不完整,我們還需要添加對NIOS II CPU的bsp文件,該文件在bsp路徑下的nios ii路徑下,我們拷貝該路徑下的所有.c和.h文件到工程中,注意,application.c是整個系統(tǒng)的應(yīng)用部分,也就是main函數(shù)所在文件,因此將該文件從rt-thread文件夾中移出到軟件工程的根目錄(拖動即可),添加完成后的工程如下所示(具體可以參考我們提供的實(shí)例工程文件)。

設(shè)置頭文件搜索路徑

添加完所有的文件之后,我們還必須要在軟件的設(shè)置中添加頭文件搜索路徑,選中RTT_test工程,鼠標(biāo)右擊選擇Properties選項(xiàng),在彈出的對話框中選中Nios II Application Paths選項(xiàng),添加include和bsp文件夾道頭文件路徑中,然后確認(rèn)關(guān)閉。如果彈出下述相對路徑轉(zhuǎn)換提示,選擇Yes即可。


至此,所有的運(yùn)行RT-Thread操作系統(tǒng)的要求都已經(jīng)滿足了。

關(guān)閉FINSH支持功能

接下來,我們打開工程的rt-thread -> bsp -> rtconfig.h文件,定位到第80行左右,將#define RT_USING_FINSH這句話前面加上單行注釋符“//”,以屏蔽該定義,即不使用FINSH功能。

運(yùn)行RT-Thread操作系統(tǒng)

編譯運(yùn)行程序

然后對整個工程進(jìn)行全編譯(快捷鍵為Ctrl + B),編譯無誤,就會得到可下載到NIOS II CPU中運(yùn)行的elf文件,然后在菜單欄中依次點(diǎn)擊RUN -> Run Configurations選項(xiàng),打開下載運(yùn)行頁面。

新建一個硬件運(yùn)行配置并選擇RTT_test工程,然后切換到Target Connection選項(xiàng)卡,刷新連接以確認(rèn)硬件USB Blaster已經(jīng)找到CPU。注意,在此操作之前需要先將Quartus II軟件編譯生成的sof文件下載到開發(fā)板中,并使用Micro USB數(shù)據(jù)線連接開發(fā)板和電腦,并打開串口調(diào)試工具,以找到開發(fā)板對應(yīng)串口,設(shè)置波特率115200,ASCII接收。


勾選忽略system id和時間戳選項(xiàng),然后點(diǎn)擊Run。即可開始軟件程序的下載。

實(shí)驗(yàn)結(jié)果

下載完成后,即可在串口調(diào)試助手上看到系統(tǒng)運(yùn)行時打印的信息,同時,開發(fā)板上4個LED燈循環(huán)閃爍。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114213
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3218

    瀏覽量

    113668
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1199

    瀏覽量

    100823

原文標(biāo)題:基于 NIOS II 處理器的RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)移植與使用教程

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    詳解RT-Thread實(shí)時操作系統(tǒng)

    RT-Thread實(shí)時操作系統(tǒng)核心RT-Thread實(shí)時操作系統(tǒng)核心是一個高效的硬實(shí)時核心,它具備非常優(yōu)異的實(shí)時性、穩(wěn)定性、可剪裁性。最小可以到3k ROM占用、1k RAM占用。內(nèi)核
    發(fā)表于 03-02 14:24

    怎樣去搭建一種基于rt-thread操作系統(tǒng)的迷你時鐘

    本文中作者基于rt-thread操作系統(tǒng)搭建了一個迷你時鐘,用來顯示時間和溫濕度。rt-thread studio是一款用于rt-thread
    發(fā)表于 08-03 06:28

    怎樣去搭建一個基于rt-thread操作系統(tǒng)的迷你時鐘

    rt-thread是什么?怎樣去搭建一個基于rt-thread操作系統(tǒng)的迷你時鐘?
    發(fā)表于 10-09 08:42

    基于RT-Thread操作系統(tǒng)衍生rt-smart實(shí)時操作系統(tǒng)簡介

    1、rt-smart 實(shí)時操作系統(tǒng)簡介RT-Thread Smart(簡稱 rt-smart)嵌入式實(shí)時操作系統(tǒng)是基于
    發(fā)表于 06-22 17:56

    基于RT-Thread操作系統(tǒng)的Env開發(fā)環(huán)境搭建

    Env是什么Env 是 RT-Thread 推出的開發(fā)輔助工具,針對基于 RT-Thread 操作系統(tǒng)的項(xiàng)目工程,提供編譯構(gòu)建環(huán)境、圖形化系統(tǒng)配置及軟件包管理功能。其內(nèi)置的 menuc
    發(fā)表于 09-30 10:38

    RT-Thread操作系統(tǒng)有哪些優(yōu)勢?

    RT-thread是一個輕量級的操作系統(tǒng),很小,但是也是一個操作系統(tǒng)。主要優(yōu)勢有這些: 跨芯片平臺:支持所有主流微控制器,解決設(shè)備碎片化問題。 實(shí)時
    發(fā)表于 06-28 08:16

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實(shí)時操作系統(tǒng),本文是RT
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread Smart微內(nèi)核操作系統(tǒng)發(fā)布!

    9月1日,由上海睿賽德電子科技有限公司舉辦的RT-Thread Smart微內(nèi)核操作系統(tǒng)發(fā)布會于北京圓滿落幕,發(fā)布會以見微為主題,邀請到中國工程院院士、產(chǎn)業(yè)專家、高校教授及行業(yè)從業(yè)人員100余位蒞臨
    的頭像 發(fā)表于 09-09 10:49 ?2588次閱讀

    RT-Thread嵌入式實(shí)時操作系統(tǒng)詳解

    。多線程系統(tǒng)把整個系統(tǒng)分割成一個個獨(dú)立的無法返回的函數(shù)。RT-Thread (Real Time-Thread)嵌入式實(shí)時多線程操作系統(tǒng)。
    發(fā)表于 11-04 09:06 ?21次下載
    <b class='flag-5'>RT-Thread</b>嵌入式實(shí)時<b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>詳解</b>

    國民技術(shù)攜手RT-Thread共同推進(jìn)MCU與RT-Thread操作系統(tǒng)廣泛適配

    日前,國民技術(shù)股份有限公司與知名物聯(lián)網(wǎng)操作系統(tǒng)廠商睿賽德科技(RT-Thread)簽署會員合作協(xié)議,正式成為RT-Thread高級會員。國民技術(shù)將基于通用MCU和RT-Thread物聯(lián)
    的頭像 發(fā)表于 12-16 09:56 ?2262次閱讀

    μC/OS-II兼容層——讓基于μC/OS-II開發(fā)的應(yīng)用層無感地遷移到RT-Thread操作系統(tǒng)

    這是一個針對RT-Thread國產(chǎn)操作系統(tǒng)的μCOS-II操作系統(tǒng)兼容層,可以讓基于美國Micriμm公司的μCOS-II
    發(fā)表于 01-25 19:23 ?0次下載
    μC/OS-<b class='flag-5'>II</b>兼容層——讓基于μC/OS-<b class='flag-5'>II</b>開發(fā)的應(yīng)用層無感地遷移到<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統(tǒng)</b>

    RT-Thread實(shí)時操作系統(tǒng)安裝向?qū)?/a>

    、簡易開發(fā)、超低功耗、高安全性的物聯(lián)網(wǎng)操作系統(tǒng)RT-Thread 擁有良好的軟件生態(tài),支持市面上所有主流的編譯工具如 GCC、Keil、IAR 等,工具鏈完善、友好,支持各類標(biāo)準(zhǔn)接
    發(fā)表于 04-02 09:43 ?7次下載

    RT-Thread操作系統(tǒng)已經(jīng)成功部署至芯馳E3

    近日,國內(nèi)領(lǐng)先的車規(guī)芯片企業(yè)芯馳科技與國內(nèi)領(lǐng)先的車載RTOS(實(shí)時操作系統(tǒng))企業(yè)睿賽德科技(RT-Thread)共同宣布:RT-Thread操作系統(tǒng)全面
    的頭像 發(fā)表于 09-09 09:15 ?1143次閱讀

    RT-Thread操作系統(tǒng)的FreeRTOS兼容層

    的兼容項(xiàng)目中。 1 概述 這是一個針對RT-Thread國產(chǎn)操作系統(tǒng)的FreeRTOS操作系統(tǒng)兼容層,可以讓原有基于FreeRTOS操作系統(tǒng)的項(xiàng)目快速、無感地遷移到
    的頭像 發(fā)表于 01-14 00:55 ?1464次閱讀

    RT-Thread操作系統(tǒng)全面支持飛騰騰瓏E2000系列芯片

    近日,國內(nèi)領(lǐng)先的自主核心芯片提供商飛騰和國內(nèi)領(lǐng)先的RTOS(實(shí)時操作系統(tǒng)) RT-Thread 共同完成了針對飛騰系列CPU的適配支持,并且全部源碼已經(jīng)發(fā)布到開源社區(qū)平臺,為嵌入式開發(fā)
    的頭像 發(fā)表于 08-28 18:55 ?1447次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統(tǒng)</b>全面<b class='flag-5'>支持</b>飛騰騰瓏E2000系列芯片