实验3:ucosII实时操作系统
- 格式:doc
- 大小:1.23 MB
- 文档页数:42
实时操作系统UCOS-II,学会RTOS给你的身价增值如果,你最近关注一些嵌入式招聘职位描述,你可能会经常看到看到使用过uCOS、Vxworks、QNX等RTOS者优先。
随便打开一个20K的嵌入式开发工作职责:你会发现熟悉RTOS的开发、移植、剪裁真的很吃香!今天,我们就来介绍一下实时操作系统UCOS-II。
一、嵌入式操作系统概览嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。
并且可以充分利用硬件资源,如在单任务时(大循环结构,如大部分51程序)遇到delay函数时,CPU在空转。
而在多任务系统,遇到delay或需等待资源时系统会自动运行下一个任务,等条件满足再回来运行先前的任务,这样就充分利用了CPU,提高了效率。
uC/OS操作系统与裸机程序的最大不同点就在于uC/OS有任务调度,可以根据任务的重要程度(优先级)优先执行重要的任务,从而确保能及时处理最重要的数据。
(所以对于一个系统有必要使用OS的判断是能否划分一个个的任务,并且各任务间的耦合很小)可以思考下裸机程序中断的时候发生的过程。
利用堆栈可以很自由的在A、B中切换,如果切换足够快,A、B看以来好像同时在执行,这就是并行,A、B就是任务。
如果这个切换操作放到定时器函数中来做,就可以严格按照时间来切换。
另外,各个任务之间有存在一定的关系,有逻辑上的先后等,必须引进全局的结构体、变量来标记一些信息,全局的这些数据是不会被释放的,所以所有的任务可以去通过读、写这些数据来实现各个程序块交流信息,实现所谓的同步、互斥。
这就是操作系统的原理,而这些不同的通信方式按功能细分就成事件管理、内存管理等。
嵌入式操作系统实验报告系别:班级:学号:姓名:2013.12实验一嵌入式开发环境的建立一、实验目的通过此实验系统,读者可以了解嵌入式实时操作系统uC/OS-II 的内核机制和运行原理。
本实验系统展示了uC/OS-II 各方面的管理功能,包括信号量、队列、内存、时钟等。
在各个实验中具体介绍了uC/OS-II 的相关函数。
读者在做实验的同时能够结合理论知识加以分析,了解各个函数的作用和嵌入式应用程序的设计方法,最终对整个uC/OS-II 和嵌入式操作系统的应用有较为清楚的认识。
二、实验步骤1. 安装集成开发环境LambdaEDU集成开发环境LambdaEDU 的安装文件夹为 LambdaEDU ,其中有一个名为“Setup.exe”的文件,直接双击该文件便可启动安装过程。
具体的安装指导请看“LambdaEDU 安装手册.doc”文件。
当 LambdaEDU 安装完毕之后,我们看到的是一个空的界面,现在就开始一步一步地将我们的实验项目建立并运行起来。
2. 建立项目为了我们的实验运行起来,需要建立1 个项目基于x86 虚拟机的标准应用项目。
通过点击“文件”、“新建”、“项目”开始根据向导创建一个项目。
在随后出现的对话框中选择“Tool/标准应用项目”,点击下一步,开始创建一个标准的可执行的应用程序项目。
在随后出现的对话框中填入项目名称“ucos_x86_demo”。
点击“下一步”。
选择“pc386 uC/OS-II 应用(x86)”作为该项目的应用框架。
点击“下一步”选择“pc386_elf_tra_debug”作为该项目的基本配置。
点击“完成”。
新创建的项目“ucos_x86_demo”将会被添加到项目列表。
src 文件夹下保存了该项目中包含的源文件。
ucos2 文件夹中包含了移植到x86 虚拟机的全部代码。
init.c 文件是基于ucos2和本虚拟机的一个应用程序。
在进行ucos2 内核实验中,只需要替换init.c 文件,即可。
姓名:李峰学号:2011123125UC-OS实时操作系统实验实验一:设计一个只有一个任务MyTask的应用程序,当程序运行后,任务MyTask的工作就是每秒在显示器上显示一个字符“M”。
#include "includes.h"#define TASK_STK_SIZE 512 //任务堆栈长度OS_STK TaskStartStk[TASK_STK_SIZE]; //定义任务堆栈区INT16S key; //用于退出uCOS_II的键INT8U x=0,y=0; //字符显示位置void MyTask(void *data); //声明一个任务/************************主函数*********************************************/void main (void){char* s="M"; //定义要显示的字符OSInit(); //初始化uCOS_IIPC_DOSSaveReturn(); //保存Dos环境PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断OSTaskCreate(MyTask, //创建任务MyTasks, //给任务传递参数&TaskStartStk[TASK_STK_SIZE - 1],//设置任务堆栈栈顶指针0); //使任务MyTask的优先级别为0OSStart(); //启动uCOS_II的多任务管理}void MyTask (void *pdata){#if OS_CRITICAL_METHOD == 3OS_CPU_SR cpu_sr;#endifpdata = pdata;OS_ENTER_CRITICAL();PC_VectSet(0x08, OSTickISR); //安装uCOS_II时钟中断向量 PC_SetTickRate(OS_TICKS_PER_SEC); //设置uCOS_II时钟频率 OS_EXIT_CRITICAL();OSStatInit(); //初始化uCOS_II的统计任务for (;;){if (x>10){x=0;y+=2;}PC_DispChar(x, y, //在x,y位置显示s中的字符*(char*)pdata,DISP_BGND_BLACK+DISP_FGND_WHITE );x += 1;//如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key) == TRUE){if (key == 0x1B){PC_DOSReturn();}}OSTimeDlyHMSM(0, 0, 1, 0); //等待}}实验结果图:实验二:改造例3-7的任务MyTask,当任务MyTask运行10次时,用函数OSSchedLock( )对调度器进行加锁;而当任务MyTask运行到第80次时,再用函数OSSchedUnlock( )对调度器进行解锁,并运行该程序。
北航ARM9实验报告:实验3uCOS-II实验北航 ARM9 实验报告:实验 3uCOSII 实验一、实验目的本次实验的主要目的是深入了解和掌握 uCOSII 实时操作系统在ARM9 平台上的移植和应用。
通过实际操作,熟悉 uCOSII 的任务管理、内存管理、中断处理等核心机制,提高对实时操作系统的理解和应用能力,为后续的嵌入式系统开发打下坚实的基础。
二、实验环境1、硬件环境:ARM9 开发板、PC 机。
2、软件环境:Keil MDK 集成开发环境、uCOSII 源代码。
三、实验原理uCOSII 是一个可裁剪、可剥夺型的多任务实时内核,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
其基本原理包括任务管理、任务调度、时间管理、内存管理和中断管理等。
任务管理:uCOSII 中的任务是一个独立的执行流,每个任务都有自己的堆栈空间和任务控制块(TCB)。
任务可以处于就绪、运行、等待、挂起等状态。
任务调度:采用基于优先级的抢占式调度算法,始终让优先级最高的就绪任务运行。
时间管理:通过系统时钟节拍来实现任务的延时和定时功能。
内存管理:提供了简单的内存分区管理和内存块管理机制。
中断管理:支持中断嵌套,在中断服务程序中可以进行任务切换。
四、实验步骤1、建立工程在 Keil MDK 中创建一个新的工程,选择对应的 ARM9 芯片型号,并配置相关的编译选项。
2、导入 uCOSII 源代码将 uCOSII 的源代码导入到工程中,并对相关的文件进行配置,如设置任务堆栈大小、系统时钟节拍频率等。
3、编写任务函数根据实验要求,编写多个任务函数,每个任务实现不同的功能。
4、创建任务在主函数中使用 uCOSII 提供的 API 函数创建任务,并设置任务的优先级。
5、启动操作系统调用 uCOSII 的启动函数,使操作系统开始运行,进行任务调度。
6、调试与测试通过单步调试、查看变量值和输出信息等方式,对系统的运行情况进行调试和测试,确保任务的执行符合预期。
µC_OS-II实验指导书电子科技大学嵌入式软件工程中心北京科银京成技术有限公司目录第一部分实验系统简介及入门 (5)1 实验系统的目的 (5)2 实验系统的构成 (5)3 操作系统简介 (5)3.1 µC/OS-II概述 (5)3.2 µC/OS-II的特点 (6)3.3 µC/OS-II主要源代码文件介绍 (7)4 LambdaTOOL集成开发环境简介 (7)5 µC/OS-II实验内容简介 (8)5.1 任务管理实验 (8)5.2 优先级反转实验 (8)5.3 优先级继承实验 (9)5.4 哲学家就餐实验 (9)5.5 内存管理实验 (9)5.6 时钟中断实验 (9)5.7 消息队列实验 (9)6 预备实验:嵌入式开发环境的建立 (9)6.1 目的 (9)6.2 实验步骤及说明 (10)第二部分µC/OS-II实验 (24)实验1 任务的基本管理 (24)1 实验目的 (24)2 实验原理及程序结构 (24)2.1 实验设计 (24)2.2 操作系统配置 (25)2.3 源程序说明 (27)3 运行及观察应用输出信息 (29)4 本实验中所用到的µC/OS-II相关函数 (31)4.1 OSTaskCreate() (31)4.2 OSTaskSuspend() (31)4.3 OSTaskResume() (32)实验2 优先级反转 (33)1 实验目的 (33)2 原理及程序结构 (33)2.1 实验设计 (33)2.2 操作系统配置 (35)2.3 源程序说明 (36)3 运行及观察应用输出信息 (39)4 本实验中所用到的µC/OS-II相关函数 (39)4.1 OSSemCreate() (39)4.2 OSSemPend() (40)4.3 OSemPost() (40)4.4 OSTimeDly() (41)实验3 优先级继承 (42)1 实验目的 (42)2 原理及程序结构 (42)2.1 实验设计 (42)2.2 操作系统配置 (45)3 运行及观察应用输出信息 (46)4 本实验中所用到的µC/OS-II相关函数 (47)4.1 OSMutexCreate() (47)4.2 OSMutexPend() (47)4.3 OSMutexPost() (48)5 应用调试过程 (49)实验4 信号量:哲学家就餐问题的实现 (51)1 实验目的 (51)2 原理及程序结构 (51)2.1 实验设计 (51)2.2 操作系统配置 (52)3运行及观察应用输出信息 (53)4 本实验中所用到的µC/OS-II相关函数 (55)实验5 µC/OS-II的内存管理 (56)1 实验目的 (56)2 原理及程序结构 (56)2.1实验设计 (56)2.2 操作系统配置 (62)3 本实验中所用到的µC/OS-II相关函数 (63)3.1 OSMemCreate() (63)3.2 OSMemGet() (64)3.3 OSMemPut() (64)3.4 OSMemQuery() (65)实验6 时钟中断 (66)1 实验目的 (66)2 原理及程序结构 (66)2.1 实验设计 (66)2.2 操作系统配置 (68)3 运行及观察应用输出信息 (70)4 本实验中所用到的µC/OS-II相关函数 (71)实验7 消息队列 (72)1 实验目的 (72)2 原理及程序结构 (72)2.1 实验设计 (72)2.2 源程序说明 (72)2.3 操作系统配置 (77)3 运行及观察应用输出信息 (78)4 本实验中所用到的µC/OS-II相关函数 (82)4.1 OSQCreate() (82)4.2 OSQPend() (82)4.3 OSQPostFront() (83)4.4 OSQPost() (83)4.5 OSQFlush () (84)4.6 OSQQuery() (84)4.7 OSQDel() (85)4.8 OSTimeDlyHMSM() (85)第一部分实验系统简介及入门1 实验系统的目的通过此实验系统,读者可以了解嵌入式实时操作系统µC_OS-II的内核机制和运行原理。
第一章:范例在这一章里将提供三个范例来说明如何使用 µC/OS-II。
笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用 µC/OS-II。
在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。
这些例子曾经用Borland C/C++ 编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。
这些代码实际上是在Intel Pentium II PC (300MHz)上运行和测试过,Intel Pentium II PC可以看成是特别快的80186。
笔者选择PC做为目标系统是由于以下几个原因:首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。
用户只需要简单地编译、链接和执行。
其次,使用Borland C/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86 CPU兼容。
1.00 安装 µC/OS-II本书附带一张软盘包括了所有我们讨论的源代码。
是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。
至少需要5Mb硬盘空间来安装uC/OS-II。
请按照以下步骤安装:1.进入到DOS(或在Windows 95下打开DOS窗口)并且指定C:为默认驱动器。
2.将磁盘插入到A:驱动器。
3.键入 A:INSTALL 【drive】注意『drive』是读者想要将µC/OS-II安装的目标磁盘的盘符。
INSTALL.BAT 是一个DOS的批处理文件,位于磁盘的根目录下。
它会自动在读者指定的目标驱动器中建立\SOFTWARE目录并且将uCOS-II.EXE文件从A:驱动器复制到\SOFTWARE并且运行。
µC/OS-II将在\SOFTWARE目录下添加所有的目录和文件。
第11章基于NIOS的μC/OS-II实验11.0 实验简介z实验说明本实验项目使用Quartus II、SOPC Builder、Nios II EDS从零开始构建一个能够在DE2-70实验平台上运行的μC/OS-II操作系统的Nios II系统。
初学者可以借此范例熟悉Quartus II、SOPC Builder、Nios II EDS的使用,并且了解基于FPGA的嵌入式系统开发流程。
z资料来源因特网网页:国立台湾大学王胜德教授关于软硬件协同设计的实验指导。
实验名:Altera SPOC Lab 1-uC/OS-II主页:.tw/jenny/homepage/sdwang_codesign2008/index.html其网站上只公开了这一网页:名称是Lab1z实验环境Quartus II 8.1 + Nios II EDS 8.1 + DE2-70 (Cyclone II EP2C70F896C6N)z本实验系统结构图图11-1给出了本实验十(NIOS + UCOS-II)的系统结构图。
图11-1 NIOS + UCOS-II实验的系统结构图从图11-1中可以看到FPGA芯片上有NiosII软核处理器、Avalon交换结构(片上总线)、JTAG调试模块、LED并行输出接口、并行输入开关接口、SDRAM控制器和片上存储器。
外部输入器件采用SW[17:0]。
外部输出器件采用LEDG[7:0]。
最后的实验結果希望在μC/OS-II下实现多任务执行(多任务执行),并且LEDG[17:0]能透过软件被SW[17:0]控制。
z本实验特色实验者从零开始建立一个基于Nios II的μC/OS-II应用实验系统(也可以认为是一个Nios II+μC/OS-II的应用框架)具有以下一些作用。
1. 读者可以借助SOPC Builder工具自行对Nios II软核处理器进行配置。
2. 很多范例都是纯硬件的Verilog 代码,需要自行从零开始建立Nios II系统,不能够直接使用Altera或友晶科技公司已经建立好的Nios II系统。
面向二十一世纪的嵌入式系统设计技术第五讲:ucOS/II 实时操作系统RTOS(一):ucOS/II2002 年 1 月任课教员:徐欣主讲教员:习勇国防科大电子科学与工程学院嵌入式系统开放研究小组博士博士1What is uC/OS? u: Micro C:controluC/OS : 适合于小的、控制器的操作系统小巧公开源代码,详细的注解可剥夺实时内核可移植性强多任务确定性2002/112美国人The Story of uC/OSJean Labrosse 1992 年编写的商业软件的昂贵应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等1998 年uC/OS-II ,目前的版本uCOS-II2002/11uC/OS-II V2.513嵌入式操作系统—uC/OS概要内核结构- 任务以及调度机制任务间通信uC/OS 的移植在PC 机上运行uC/OS2002/114—uC/OS任务task嵌入式操作系统典型的一个无限循环。
void mytask(void *pdata)for (;;) {do something;waiting;do something;支持64 个任务,每个任务一个特定的优先级。
优先级越高,数字越小系统占用了两个任务,空闲任务和统计任务。
2002/115嵌入式操作系统—uC/OS任务的数据结构—任务控制块任务控制块OS_tcb ,包括任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。
所有的任务控制块分为两条链表,空闲链表和使用链表。
新任务TCB(1) TCB0 TCB1next pre(2)(3)OSTCBFreeList图4.3TCB的双向链表结构TCBn空2002/116任务控制块结构嵌入式操作系统—uC/OSStruct os_tcb {OS_STK*OSTCBStkPtr;struct os_tcb*OSTCBNext;struct os_tcb*OSTCBprev;OS_EVENT *OSTCBEventPtr;void *OSTCBMsg;INT16U OSTCBDly;INT8U OSTCBStat;INT8U OSTCBPrio;INT8U OSTCBX, OSTCBY, OSTCBBitX, OSTCBBitY; } OS_TCB2002/117任务的状态OSTCBStat运行,就绪,等待,挂起OSTCBStat低四位挂起队列邮箱信号量可以有多个准备就绪的任务,但一个时刻只有一个任务可以运行,OSHighRdy2002/118任务的调度--OSScheduC/OS 是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有所有权开始投入运行。
嵌入式实时操作系统实验报告多任务的创建及运行系别计算机与电子系专业班级电子0901班学生姓名高傲指导教师黄向宇提交日期 2012 年 4 月 1 日一、实验目的1.熟悉并掌握基于uC/OS-II的开发工具、工程管理工具2.了解uC/OS-II的文件结构、文件之间的依赖关系。
3.掌握创建多任务的方法及对任务进行相关操作的技巧。
二、实验内容1.建立并熟悉Borland C 编译及调试环境2.使用课本配套光盘中的例程运行并修改,观察多任务的运行状态,尝试对其中的任务进行挂起并恢复、删除及查询等操作,观察运行结果.3.完成课后练习题,P92页13-17题,至少完成其中任意两题。
三、实验原理1.编译环境Turbo C是Borland公司开发的DOS下16位C语言集成开发工具。
有2.0和3.0版本,2.0只支持C语言编译不支持鼠标操作,而3.0版本可以支持C/C++两种语言编译,而且还支持鼠标和//注释方式;TC2.0是80年代开发的,使用了很多年一直到现在WINDOWS系统才逐渐退出舞台。
Turbo C2.0不仅是一个快捷、高效的编译程序,同时还有一个易学、易用的集成开发环境。
使用Turbo C2.0无需独立地编辑、编译和连接程序,就能建立并运行C语言程序。
因为这些功能都组合在Turbo 2.0的集成开发环境内,并且可以通过一个简单的主屏幕使用这些功能。
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile 就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux 下GNU的make。
实验3 uC/os II 实时操作系统一、实验目的:1. 掌握PC上安装的硬件设计环境Quartus II和应用程序设计环境Nios II;2. 了解Nios II让uC/os II跑在DE2-70上实现多任务并发性;3. 了解基于FPGA的嵌入式系统开发过程。
二、实验步骤:(一)硬件工程的初建:新建“demo_ucos”工程鼠标左键双击桌面上的“Quartus II”快捷方式图标,耐心等待片刻,即可启动“Quartus II”设计页面,如图3-1所示。
图3-1在“Quartus II”设计页面内,鼠标左键单击File-> New Project Wizard ,弹出“New Project Wizard :introduction”,如图3-2所示。
鼠标左键单击“next”按钮跳过此页,进入“New Project Wizard: Directory, Name, Top-level entity”页面。
在“New Project Wizard: Directory, Name, Top -level entity”页面:“the working directory for this project”(工程路径)可以任意填写,例如:“E:\demo\demo_ucosii”。
“工程的工作目录”如前“E:\demo\demo_ucosii”,表示将会在E 盘上产生一个文件夹“demo”,在“demo”文件夹里产生另一个文件夹“demo_ucosii”(工程文件夹,保存工程文件),此实验后续步骤中产生的各种文件会自动保存到路径“E:\demo\demo_ucosii”下。
“the name of this project”(工程名字)填写为“demo_ucos”。
这里需要注意:由于“SOPC Builer”工具不能识别空格、中划线等符号,故实验所有步骤中如果需要命名,命名中不允许有空格、中划线出现,但“SOPC Builer”工具能识别下划线。
“the name of the top -level design entity for this project”(工程顶层实体名称)会自动与工程名字相同,也为“demo_ucos”,如图3-3所示。
这里需要注意:编写顶层文图3-2件时注意这个名字。
图3-3鼠标左键单击“next”按钮,会弹出如图3-4所示的问句。
图3-4鼠标左键单击“是”按钮,进入“Add Files [page 2 of 5]”页,如图3-5所示。
图3-5由于实验到这里还没有建立任何文档,再加上后面步骤中也可以添加,鼠标左键单击“Next”按钮跳过此页,进入“Family & Device Settings [page 3 of 5]”页面。
在“Family & Device Settings [page 3 of 5]”页面:“Device family”栏里的“family”选择“Cyclone II”;“Available devices”栏里选择“EP2C70F896C6”器件,其它为缺省设置,如图3-6所示。
鼠标左键单击“next”按钮的话,还会出现第4页EDA 工具的设置和第5页的“Summary”,如果用到可以在此设置。
由于目前没有用到,所以在这里就可以用鼠标左键单击“Finish”按钮,完成工程的初建。
新建的“Quartus II -E:/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面如图3-7所示。
图3-7在“Quartus II -E:/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面,“entity”栏图3-6下,可以看到“Cyclone II: EP2C70F896C6”和工程名字“demo_ucos”。
这里需要注意:工程初建过程牵涉到几个方面,过程中的步骤没有先后之分。
例如,完成“Quartus II”工程的初建后,如果发现“entity”栏里不是“Cyclone II: EP2C70F896C6”,比如是“Stratix II: AUTO”,如图3-8所示。
图3-8鼠标左键双击或者箭头指着“Stratix II: AUTO”然后鼠标单击右键,在下拉菜单里点击“settings”,两种方法都能使“Settings -demo_ucos”的设置页(如图3-6所示)弹出,在“Device”中可以重新设置。
初建的“Quartus II -E:/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面,会自动保存在路径“E:\demo\demo_ucosii”下,如果在“Quartus II”工程页面关闭时想要完成工程后续设计,可以打开此路径下的工程文件夹“demo_ucosii”,如图3-9所示。
鼠标左键双击带有蓝色“Quartus”图标的“demo_ucos”文件,就可以打开“QuartusII-E:/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面。
(二)利用“SOPC Builder”工具配置硬件事实上,为了方便可以把实验2的硬件配置拷贝到实验3来用。
图3-9在“Quartus II -E:/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面,鼠标左键单击“open”按钮,弹出“打开”对话框。
在对话框“查找范围”选择实验2所在的路径“E:/demo/demo_MEMtest”,把此路径下的“nios0.sopc”文件拷贝到实验3所在的路径“E:/demo/demo_ucosii”下。
鼠标左键双击“nios0.sopc”文件,打开后可以重新配置硬件。
有些在实验3需要用到的硬件可以保留,有些用不到的硬件可以一个个删除:鼠标左键单击硬件名称使其蓝色高亮,然后单击硬件默认显示栏下的“Remove”按钮,即可删去此硬件。
为了加深印象,这里还是把重新建立实验3工程的“SOPC Builder”工具页面全过程列出来供参考。
在“Quartus II -E:/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面,鼠标左键单击Tools-> SOPC Builder ,弹出“Create NewSystem”对话框。
在“Create New System”对话框里:“System Name”项后输入“nios0”(也可以取其他名称);“Target HDL”项一般选择“Verilog”。
如图3-10所示。
鼠标左键单击“OK”按钮,弹出配置这个工程硬件的“SOPC Builder”工具页面,如图3-11所示。
在“SOPC Builder”工具页面可以添加实现此工程所需硬件,形成良好的硬件系统。
添加的硬件会在默认空白区出现,并且可以修改、删除,在默认空白区还显示硬件的主从连接。
“Target HDL”项一般选择“Verilog”,表示“SOPC Builder”会将你稍后所配置的图3-10IP ,以Verilog 表示,若你熟悉VHDL ,也可以选择VHDL 。
这里的设定不是限制了日后只能用Verilog 或VHDL 写代码,因为Quartus II 本来就允许Verilog 与VHDL 混合編程,也就是说Verilog 的module 可以使用VHDL 的entity ,VHDL 的entity 可以使用Verilog 的module ,最后都能顺利编译。
图3-11这里需要注意:如果配置硬件的过程中暂停设计,关闭“SOPC Builder”工具页面会弹出一个问句,如图3-12所示。
鼠标左键单击“Save”按钮,建立的硬件系统信息就保存到路径“E:/demo/demo_ucosii”下的文件“nios0.sopc”中。
如果需要再次打开此工程的“SOPC Builder”工具页面想要完成后续的硬件配置,可以先打开“Quartus II -E:/demo/demo_ucosii/demo_ucos-demo_u cos”工程页面(方法如图3-9所图3-12示),在工程页面内,鼠标左键单击“open”按钮弹出“打开”页面。
在“查找范围”找到路径“E:\demo\demo_ucosii”下的“nios0.sopc”文件,鼠标左键双击 “nios0.sopc” 文件即可打开此工程的“SOPC Builder”工具页面。
(三)配置硬件1.定义时钟确认“SOPC Builder”工具页面的“Target/Device Family”是“Cyclone II”。
在如图3-13所示的“Clock Settings”栏里可以看到50.0MHz ,代表Nios II CPU 在DE2-70可以运行在50.0MHz ,但这时CPU 降频在跑,正常情況下,Nios II CPU 在DE2-70可以运行100.0MHz ,所以可以用PLL 将clk 倍频成100.0Mhz 。
2.增加用来保存 Nios 程序的片上存储器(On Chip Memory(RAM or ROM))“On Chip Memory”在FPGA 芯片内,是DE2-70上所有存储器中存储量最小,但是速度最快的存储器。
在“SOPC Builder”工具页面,鼠标左键单击System Contents-> Component Library-> Memories and Memory Controllers -> On Chip -> On Chip Memory(RAM or ROM) -> Add 。
弹出“on chip memory”设置页面,如图3-14所示。
图3-13在“on chip memory”设置页面:“Total Memory Size”设置为80960;其他为缺省设置,鼠标左键单击“Finish”按钮。
不用管状态框里的错误,添加 Nios 处理器后会自动消失。
“Total memory size”与能使用的M4K 存储器数量、FPGA 、NiosII CPU 和Megafunction(如fcfifo)都会影响“On -chip Memory”的size ,本教程使用 80k 。
“On Chip Memory”会在“SOPC Builder”工具页面默认空白区有显示如图3-15所示。
如果想修改“On Chip Memory”的设置,可以左键双击硬件名称,会重新弹出如图3-14所示的设置页面。
对于其他硬件来说,方法类似。
把“onchip_memory2_0”改成“onchip_mem”。
图3-14图3-153.添加Nios II/s处理器(Nios II Processor)在“SOPC Builder”工具页面,鼠标左键单击System Contents->Component Library->Nios II Processor -> Add,弹出“Nios II Processor”设置页面。