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

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

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

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

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

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

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

操作步驟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

設(shè)計(jì)頂層文件

將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開(kāi)發(fā)板引腳分配表或者開(kāi)發(fā)板背面的絲印對(duì)用到的引腳功能一一分配正確的管腳。注意設(shè)置所有的IO電平為3.3LVTTL,以防止無(wú)法正確驅(qū)動(dòng)SDRAM存儲(chǔ)器。另外由于使用到了EPCS,因此需要在Quartus中設(shè)置其功能為regular IO,如下圖所示:

添加SDC約束文件

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

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

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

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

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

移植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來(lái)下載源文件,當(dāng)然也可以從我們提供的本實(shí)例的壓縮包中得到該文件。

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

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

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

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

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


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

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

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

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

編譯運(yùn)行程序

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

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


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

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

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

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

    關(guān)注

    8

    文章

    1368

    瀏覽量

    114693
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3248

    瀏覽量

    114800
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1235

    瀏覽量

    101392

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

    Env是什么Env 是 RT-Thread 推出的開(kāi)發(fā)輔助工具,針對(duì)基于 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)勢(shì)?

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

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開(kāi)發(fā)組(2015-03-31)。RT-Thread做為國(guó)內(nèi)有較大影響力的開(kāi)源實(shí)時(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ā)布會(huì)于北京圓滿落幕,發(fā)布會(huì)以見(jiàn)微為主題,邀請(qǐng)到中國(guó)工程院院士、產(chǎn)業(yè)專家、高校教授及行業(yè)從業(yè)人員100余位蒞臨
    的頭像 發(fā)表于 09-09 10:49 ?2687次閱讀

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

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

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

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

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

    這是一個(gè)針對(duì)RT-Thread國(guó)產(chǎn)操作系統(tǒng)的μCOS-II操作系統(tǒng)兼容層,可以讓基于美國(guó)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>開(kāi)發(fā)的應(yīng)用層無(wú)感地遷移到<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統(tǒng)</b>

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

    、簡(jiǎn)易開(kāi)發(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

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

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

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

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

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