0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

支持RT-Thread操作系统的NIOS II CPU系统搭建过程详解

RTThread物联网操作系统 2017-12-04 18:15 次阅读

实验说明

本节说明了如何基于在Qsys中搭建支持RT-Thread操作系统的基本NIOS II处理器系统,并在此基础上实现创建2个LED闪烁的静态线程的示例。RT-Thread操作系统版本:3.0软件版本:Quartus II 13.0开发环境:Windows7 64位旗舰版硬件平台:小梅哥AC620 FPGA开发板嵌入式处理器:NIOS II

操作步骤

搭建支持RT-Thread操作系统的NIOS II CPU系统

在Qsys中搭建能够支持RT-Thread操作系统的NIOS II 处理器系统,除了必要的NIOS II处理器、RAM存储器(片上RAM、SRAM、SDRAM、DDR2)、FLASH存储器(EPCS)外,为了支持RT-Thread操作系统的运行,还需要添加UART串口外设、定时器外设、以及为了使系统能够工作在较高的频率,而添加PLL锁相环。同时,为了能够驱动LED灯,还需要根据实际硬件情况添加一定位宽的输出型PIO以驱动LED灯。本系统主要包含以下外设:

PLL 时钟管理单元,输出2路相位相差90°的时钟,一路提供给系统内所有逻辑使用,一路输出到SDRAM芯片的clk管脚上。(相位为-90°)

NIOS II 处理器 ,选择f(快速)版本,其他默认。

SDRAM控制器,16位数据位宽,12位行地址,9位列地址,用作NIOS II的数据和指令存储器

EPCS控制器,用以掉电存储FPGA和NIOS II的软硬件固件信息

UART(RS232)控制器,用作系统标准输入输出设备,默认115200波特率

Timer定时器,设置默认10毫秒定时器,并可通过软件修改寄存器以修改定时时间。

PIO,仅输出型PIO,4位,对应开发板上4个LED灯

下图为搭建好的最小NIOS II应用系统

其中需要注意的是,驱动LED的PIO为4位,并直接命名为了led,uart串口被命名为了RS232,这是为了与RT-Thread官方提供的NIOS II的BSP文件中相关代码相对应。

NIOS II CPU相关设置

定时器参数设置

UART控制器相关设置

LED PIO相关设置

在Quartus II工程中例化CPU系统

设计顶层文件

将Qsys中搭建的系统命名为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

设置EPCS管脚功能

根据AC620 FPGA开发板引脚分配表或者开发板背面的丝印对用到的引脚功能一一分配正确的管脚。注意设置所有的IO电平为3.3LVTTL,以防止无法正确驱动SDRAM存储器。另外由于使用到了EPCS,因此需要在Quartus中设置其功能为regular IO,如下图所示:

添加SDC约束文件

在做基于NIOS II的SOPC开发时,务必要添加SDC约束文件,对系统的时钟进行约束,以保证Quartus II软件能够按照运行的频率要求对系统进行布局布线,否则,在没有加约束的情况下,整个系统可能最高运行频率比50MHz还要低,就会出现系统无法正常运行,软件无法下载等各种故障。本实例中约束文件比较简单,大家只需要将下述内容新建一个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文件。

创建NIOS II应用工程模版

打开Quartus II集成的NIOS II软件开发工具(基于Eclipse),然后切换工作空间到Quartus II工程目录下。

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

移植RT-Thread操作系统

下载RT-Thread操作系统源码

从git上下载RT-Thread操作系统的源文件,源码地址:https://github.com/RT-Thread/rt-thread选择master分支,点击Clone or download按钮,选择Download zip来下载源文件,当然也可以从我们提供的本实例的压缩包中得到该文件。

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

移植RT-Thread操作系统源码

在RTT_Test工程下新建一个文件夹,命名为”rt-thread”,添加src文件夹,include文件夹到rt-thread文件夹下,然后添加libcpu下nios部分内容到rt-thread文件夹下。注意,libcpu下提供了对各种体系架构的cpu的支持,我们这里只需要nios部分即可,其他部分不需要添加到工程中。上述就完成了RT-Thread操作系统源码的添加。但是此时还并不完整,我们还需要添加对NIOS II CPU的bsp文件,该文件在bsp路径下的nios ii路径下,我们拷贝该路径下的所有.c和.h文件到工程中,注意,application.c是整个系统的应用部分,也就是main函数所在文件,因此将该文件从rt-thread文件夹中移出到软件工程的根目录(拖动即可),添加完成后的工程如下所示(具体可以参考我们提供的实例工程文件)。

设置头文件搜索路径

添加完所有的文件之后,我们还必须要在软件的设置中添加头文件搜索路径,选中RTT_test工程,鼠标右击选择Properties选项,在弹出的对话框中选中Nios II Application Paths选项,添加include和bsp文件夹道头文件路径中,然后确认关闭。如果弹出下述相对路径转换提示,选择Yes即可。


至此,所有的运行RT-Thread操作系统的要求都已经满足了。

关闭FINSH支持功能

接下来,我们打开工程的rt-thread -> bsp -> rtconfig.h文件,定位到第80行左右,将#define RT_USING_FINSH这句话前面加上单行注释符“//”,以屏蔽该定义,即不使用FINSH功能。

运行RT-Thread操作系统

编译运行程序

然后对整个工程进行全编译(快捷键为Ctrl + B),编译无误,就会得到可下载到NIOS II CPU中运行的elf文件,然后在菜单栏中依次点击RUN -> Run Configurations选项,打开下载运行页面。

新建一个硬件运行配置并选择RTT_test工程,然后切换到Target Connection选项卡,刷新连接以确认硬件USB Blaster已经找到CPU。注意,在此操作之前需要先将Quartus II软件编译生成的sof文件下载到开发板中,并使用Micro USB数据线连接开发板和电脑,并打开串口调试工具,以找到开发板对应串口,设置波特率115200,ASCII接收。


勾选忽略system id和时间戳选项,然后点击Run。即可开始软件程序的下载。

实验结果

下载完成后,即可在串口调试助手上看到系统运行时打印的信息,同时,开发板上4个LED灯循环闪烁。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1353

    浏览量

    114411
  • 定时器
    +关注

    关注

    23

    文章

    3228

    浏览量

    114253
  • uart
    +关注

    关注

    22

    文章

    1216

    浏览量

    101066

原文标题:基于 NIOS II 处理器的RT-Thread物联网操作系统移植与使用教程

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解RT-Thread实时操作系统

    RT-Thread实时操作系统核心RT-Thread实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性。最小可以到3k ROM占用、1k RAM占用。内核
    发表于 03-02 14:24

    怎样去搭建一种基于rt-thread操作系统的迷你时钟

    本文中作者基于rt-thread操作系统搭建了一个迷你时钟,用来显示时间和温湿度。rt-thread studio是一款用于rt-thread
    发表于 08-03 06:28

    怎样去搭建一个基于rt-thread操作系统的迷你时钟

    rt-thread是什么?怎样去搭建一个基于rt-thread操作系统的迷你时钟?
    发表于 10-09 08:42

    基于RT-Thread操作系统衍生rt-smart实时操作系统简介

    1、rt-smart 实时操作系统简介RT-Thread Smart(简称 rt-smart)嵌入式实时操作系统是基于
    发表于 06-22 17:56

    基于RT-Thread操作系统的Env开发环境搭建

    Env是什么Env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的 menuc
    发表于 09-30 10:38

    RT-Thread操作系统有哪些优势?

    RT-thread是一个轻量级的操作系统,很小,但是也是一个操作系统。主要优势有这些: 跨芯片平台:支持所有主流微控制器,解决设备碎片化问题。 实时
    发表于 06-28 08:16

    RT-Thread编程指南

    RT-Thread编程指南——RT-Thread开发组(2015-03-31)。RT-Thread做为国内有较大影响力的开源实时操作系统,本文是RT
    发表于 11-26 16:06 0次下载

    RT-Thread Smart微内核操作系统发布!

    9月1日,由上海睿赛德电子科技有限公司举办的RT-Thread Smart微内核操作系统发布会于北京圆满落幕,发布会以见微为主题,邀请到中国工程院院士、产业专家、高校教授及行业从业人员100余位莅临
    的头像 发表于 09-09 10:49 2641次阅读

    RT-Thread嵌入式实时操作系统详解

    。多线程系统把整个系统分割成一个个独立的无法返回的函数。RT-Thread (Real Time-Thread)嵌入式实时多线程操作系统
    发表于 11-04 09:06 21次下载
    <b class='flag-5'>RT-Thread</b>嵌入式实时<b class='flag-5'>操作系统</b><b class='flag-5'>详解</b>

    国民技术携手RT-Thread共同推进MCU与RT-Thread操作系统广泛适配

    日前,国民技术股份有限公司与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,正式成为RT-Thread高级会员。国民技术将基于通用MCU和RT-Thread物联
    的头像 发表于 12-16 09:56 2326次阅读

    μC/OS-II兼容层——让基于μC/OS-II开发的应用层无感地迁移到RT-Thread操作系统

    这是一个针对RT-Thread国产操作系统的μCOS-II操作系统兼容层,可以让基于美国Micriμm公司的μCOS-II
    发表于 01-25 19:23 0次下载
    μC/OS-<b class='flag-5'>II</b>兼容层——让基于μC/OS-<b class='flag-5'>II</b>开发的应用层无感地迁移到<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系统</b>

    RT-Thread实时操作系统安装向导

    、简易开发、超低功耗、高安全性的物联网操作系统RT-Thread 拥有良好的软件生态,支持市面上所有主流的编译工具如 GCC、Keil、IAR 等,工具链完善、友好,支持各类标准接
    发表于 04-02 09:43 7次下载

    RT-Thread操作系统已经成功部署至芯驰E3

    近日,国内领先的车规芯片企业芯驰科技与国内领先的车载RTOS(实时操作系统)企业睿赛德科技(RT-Thread)共同宣布:RT-Thread操作系统全面
    的头像 发表于 09-09 09:15 1201次阅读

    RT-Thread操作系统的FreeRTOS兼容层

    的兼容项目中。 1 概述 这是一个针对RT-Thread国产操作系统的FreeRTOS操作系统兼容层,可以让原有基于FreeRTOS操作系统的项目快速、无感地迁移到
    的头像 发表于 01-14 00:55 1554次阅读

    RT-Thread操作系统全面支持飞腾腾珑E2000系列芯片

    近日,国内领先的自主核心芯片提供商飞腾和国内领先的RTOS(实时操作系统) RT-Thread 共同完成了针对飞腾系列CPU的适配支持,并且全部源码已经发布到开源社区平台,为嵌入式开发
    的头像 发表于 08-28 18:55 1547次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系统</b>全面<b class='flag-5'>支持</b>飞腾腾珑E2000系列芯片