在niosII上运行uClinux
- 格式:ppt
- 大小:1.08 MB
- 文档页数:35
实验五 uc/OS-II实时操作系统在Nios II中的运行一. 实验目的:了解在NIOSII中使用uc/OSII实时操作系统的基本方法。
二. 实验说明:uc/OS-II已经在世界范围内得到广泛的使用,包括手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制等。
实际上,uc/OS-II已经通过了非常严格的测试,并且得到了美国航空航天管理局(FAA)的安全认证,可以用于飞机、航天器等与人性命攸关的控制系统中1。
因此,uc/OS-II在工业等实时性需求比较强的领域应用非常广泛,我们的学习套间提供了在NiosII系统中运行uc/OS-II的例子(“ucosII_test”),该例子定义了两个任务:Task1和Task2,两个任务交替执行。
例子虽然简单,但可以作为uc/OS-II在NiosII系统中运行的演示。
同学们可以参考NiosII的软件开发手册以及uc/OS-II的发明人——Jean J. Labrosse的著作“MicroC/OS-II The Real-Time Kernel”(Second Edition)的中译本《嵌入式实时操作系统uc/OS-II》(第二版,邵贝贝等译),研究和设计出功能更强、更符合实际应用的程序。
一、 参考前面的方法建立一个工程软件工程;二、 打开工程的.syslib工程属性,按下图所示修改编译属性:在“System Library Contents”的“RTOS:”下拉框选择“MicroC/OS-II”,以及右边的程序段都选择SDRAM,因为使用了操作系统,内部ram比较小会容不下,在这里我们选择SDRAM作为uc/OSII的运行环境。
MicroC/OS-II的各个选项的配置可以通过点击“RTOS Options…”按钮进行选择和配置,如下图所示:1《嵌入式实时操作系统uc/OS-II》(第二版)具体操作和配置按照需要和参考ALTERA的软件开发手册。
本例子采用默认配置。
注:为了保证对Altera公司的原始资料的支持和继承性,也考虑到大多数用户最初的开发工作都是在Altera的原厂开发板上进行的,因此,革新公司2C35核心板的设计中,SDRAM,FLASH,SRAM,网口芯片等基本外围器件和FPGA的电路结构同Altera公司原厂的2C35开发板保持一致。
Altera Nios Kits中所有的2C35 Nios系统(standard,full feature和low cost版本)都能在革新2C35核心板上运行,并经过了革新公司的测试和验证。
GEXIN 2C35 核心板 NiosⅡ系统运行uClinux操作系统示例本文档包含一个完整的示例,用以演示在GEXIN公司2C35核心板的NiosⅡ系统上,如何实现uClinux操作系统环境,以及在uClinux操作系统环境上开发用户应用程序。
在示例中,使用的是Microtronix公司负责维护和发行的NiosⅡ uClinux版本——Microtronix Nios II Linux Distribution V1.4,这个版本中,uClinux是2.6.11的内核,这也是目前在NiosⅡ上运行的最稳定的uClinux内核版本。
在NiosⅡ上实现uClinux操作系统环境主要包括两个部分,一是针对NiosⅡ处理器移植的uClinux内核,另一部分是一个包含基本系统工具和应用程序的根文件系统,文档首先介绍如何利用Microtronix公司的NiosⅡ uClinux发行包实现这一基本的操作系统环境。
然后介绍如何在这一环境下,开发用户的应用程序。
本文的示例按照如下的步骤进行:1.安装Microtronix NiosⅡ uClinux发行包2.建立uClinux内核3.建立uClinux文件系统4.运行并登陆uClinux操作系统5.建立并执行用户应用程序注:本示例演示硬件平台使用革新公司2C35核心板SOPC系统为Nios ⅡKits 附带的Example中,2C35 standard系统软件版本为Quartus5.0和Nios IDE5.0,Quartus软件的安装位置为C:\altera目录,如果您的软件安装在其他目录下,请将文档中所有C:\altera重新定向到您的软件安装目录。
软件架构能用到的linux基本的操作有:VirtualBox 共享设置一、VirtualBox在winxp下虚拟ubuntu在winxp下虚拟ubuntu,在ubuntu下访问win的共享文件夹时出现如下错误:/sbin/mount.vboxsf: mounting failed with the error: No such device1,若要使用共享文件夹功能,必须安装linux guest additions,安装增强功能,这一步得注意不然没戏2,lsmod | grep vboxvfs,确保加载了vboxvfs模块,若没有,使用sudo modprobe vboxvfs 加载3,新建一个文件夹,sudo mkdir /home/js/dxn4,sudo mount -t vboxsf xuni /home/js/dxn 即:sudo mount -t vboxsf “共享文件夹名” “虚拟机共享文件夹目录”5,cd /home/js/dxn中途可能出现错误yacc -d grammar.ymake: yacc:命令未找到make: *** [grammar.c] 错误 127需要安装yaccinux下是用flex和bison来分别代替lex和yacc的,安装直接使用命令:sudo apt-get install bisonLinux切换root用户问题命令模式下直接用su,然后输入密码就可以了,像ubuntu如果还没有为root设置密码的话,可以用第一个用户(它默认有权使用sudo命令)来设置密码,sudo passwd root。
添加路径: export PATH=$PATH:路径名检查路径: echo $PATH桌面有光驱图标,这是加载linux系统增强工具的软件,打开:里面有个autorun.sh然后打开,在终端中运行在终端中运行,输入密码,稍等片刻。
之后出现以下界面,回车退出,工具安装完成。
Builder/Nios II 编译过程中遇到的一些问题与解决方法 (I)couldn't read file "": no such file or directorysolution:From the Tools menu select Tcl Scripts, and then from the project folder choose the setup script for your particular development board, and click Run.下载时出现错误:Error: Can't configure device. Expected JTAG ID code 0x020010DD for device 1, but found JTAG ID code :SOPC所选器件和开发板上的不一致。
solution:提示LED_PIO_BASE没有声明,这是因为名字不一致引起的。
比如,在生成SOPC时,双击系统PIO(Parallel I/O)(在Avalon Modules -> Other下),为系统添加输出接口,你没有把该组件改名成LED_PIO,而是保留了原始的名字:PIO_0;但你又通过IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led); 来向该组件写入数据,就会导致上述错误。
解决办法:1.可以修改sopc系统,为该PIO改名为LED_PIO ;2.在的前面给LED_PIO_BASE赋值,如#define LED_PIO_BASE 0x00001800,后面的这个地址要与SOPC中的地址对应。
在Quartus II中,为什么编译一些样板工程都会出错?Error: DDR timing cannot be verified until project has been successfully compiled. Error: Evaluation of Tcl script unsuccessfulError: Quartus II Shell was unsuccessful. 2 errors,1 warningsolution:在做样板工程时要注意一个问题: Due to the library paths that are coded into the Quartus setting for this project, if a user wishes to modify the hardware design they must first strip out any old paths from within the project settings file (qsf)在qsf文件中找到类似语句 set_global_assignment-nameVHDL_FILE C:/megaCore/"这里的目录是初始的目录,把它改为正确的目录1在Nios II IDE编译时出现如下错误是怎么回事?Pausing target processor: not responding.Resetting and trying again: FAILEDLeaving target processor paused solution:以下是一位FAE的回答:1.关于USB-Blaster在Nios II IDE下载时会发生偶发性错误,这种现象主要是IDEsoftware与Nios II CPU透过USB-Blaster在做通讯时发生错误,若是确认FPG配置没有错误,连续发生错误的机率应该是相当的低,您只需要重新下载即可。
Quartus II 5.1程序安装Quartus II 5.1安装步骤如下:1、将Quartus II 5.1安装光盘插入机箱内,在我的电脑上打开光盘安装程序。
2、打开Quartus II 文件夹,如上图所示,选择Quartusii-51-pc文件,打开后如下图所示:3、选择Install.exe文件,打开,进入安装预选界面。
选择第一项stall Quartus IIand Related Software.4、进入安装欢迎界面,直接点击Next,进入下一步。
5、这一步选中四个复选框,只选中QuartusII5.1,将其他三个选项去掉,点击Next。
下一页,License Agreement界面:然后选择第一项选项I accept the terms of the license agreement ,点击Next进入下一步。
6、在此步骤中,在User Name和Company Name中输入用户名和机器名称,也可任意键入名称。
如下图所示:7、点击Next,进入如下界面:可直接选择界面所示默认路径C:\altera\quaters51,也可在Browse中浏览选择你想要存入的路径。
如下图所示。
点击Next进行下一步。
8、在Setup Type 界面中,选择第一项:Complete。
点击下一步。
在Select ProgramFolder界面,直接点击Next,出现设置信息的界面,如下图所示:直接点击Next,电脑开始进行安装。
安装等待界面如图示:9、等待大约15分钟后,安装完成,选择在桌面上建立快捷图标,如图示:选择“是(Y)”。
则在桌面上建立了一个Quartus II 5.1的软件快捷方式。
10、在桌面上的快捷图标上点击鼠标右键,选择“属性”选项,打开“快捷方式”选项卡,如下图示:在“目标”中按路径C:\altera\quaters51\bin\quartus.exe打开.exe文件,选择“查找目标”,点击“确定”,可打开Bin文件夹。
uClinux在Nios II嵌入式平台上的移植研究1. Nios II嵌入式处理器广告插播信息维库最新热卖芯片:74HCT244D UPC8106T-E3GL386SPW20N60C3EPM5032PC-20 LX8385-00CDD OP27FJ ACS4025S MPC603RRX200LC XC4008E-2PQ208CNios II是运行在FPGA上的五级流水线、单指令的RISC处理器,它专门针对Altera 的可编程逻辑器件及片上可编程的设计思想做了相应的优化。
作为一种可配置的精减的RISC处理器,它可以与用户自定义逻辑结合构成SOPC系统,并下载到Altera的可编程器件中。
32位的Nios II软核,结合外部闪存以及大容量存储器,可以构成一个功能强大的32位嵌入式处理器系统。
此外,利用Altera提供的IDE(Integrated development environment)开发工具可以方便的在调试模式下调试处理器,提高开发的速度。
作者使用Cyclone II版Nios II应用开发板NIOS-DEVKIT-2C35作为移植实现的平台,开发板主要包括Cyclone II EP2C35器件、EPM7128AE CPLD配置控制逻辑、存储器、串行配置连接器、FPGA和CPLD的JTAG接口等。
2. 移植2.1. uClinux嵌入式操作系统uClinux是Linux的一个嵌入式版本,它经过小型化改造,形成了一个高度优化、代码紧凑的嵌入式Linux,并保留了Linux的大多数优点。
最新的2.6版本在内核主体中加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高。
2.1.1. uClinux操作系统的移植uClinux源代码绝大部分都是使用的C语言,只有那些直接与处理其硬件相关的代码如开关CPU中断等操作才采用汇编语言编写,因此uClinux具有很好的移植性。
NiosII软件模块规划一.概述。
由于本软件采用uCLinux嵌入式操作系统,所以各功能模块采用独立的线程实现其模块功能。
线程间通信采用邮箱或全局结构变量,线程同步、临界资源保护采用信号量。
整个软件主要包括以下模块:1,主启动模块;2,本地模块3,远程通讯模块4,告警模块5,输入输出模块6,存储处理模块二.各模块的主要功能实现和全局结构变量介绍1.主启动模块:程序入口点,负责初始化所有数据,启动其他各线程模块,并不断做数据合法性检查,若有异常,则复位CPU,其实现大体如下:void AppStartTask (void *p_arg){(void)p_arg;LED_ON_OFF(FALSE,COM_LED);LED_ON_OFF(TRUE,COM_LED);#if OS_TASK_STA T_EN > 0OSStatInit(); /* Determine CPU capacity */#endifLED_ON_OFF(FALSE,COM_LED);LED_ON_OFF(TRUE,COM_LED);GetLastReset();LED_ON_OFF(FALSE,COM_LED);LED_ON_OFF(TRUE,COM_LED);WatchDogInit();LED_ON_OFF(FALSE,COM_LED);LED_ON_OFF(TRUE,COM_LED);InitAllData(); //==== by szd 2006-03-09Init_Tasks(); //==== by szd 2005-10-10OSTimeDlyHMSM(0, 0, 0, 1);mWDT.en_dog_Start = TRUE;while (TRUE){mWDT.dog_Start = CLEAR_DOG;OSTimeDlyHMSM(0, 0, 0, 500);mWDT.dog_Start = CLEAR_DOG;////For LCD_Task Function#if (STORE_ENABLE > 0)Get2Str4RT(RealTime.GetTime);#endifmWDT.dog_Start = CLEAR_DOG;CheckSram();}}2.本地模块本地通信模块负责把串口接收的协议按直连协议解包,设置入相应的数据结构,或是从数据结构中读出。
niosII 硬件架构在开始之前,我总是想多说点,因为看了很多的教程,中间也很辛酸,要达到无师自通的境界,在这种领域有些困难,每每遇到问题,总是喜欢百度一下,当找不到符合自己的情况的时候才是最头疼的时候,我们有点懒,有点想走捷径~~~做做笔记,同时也做做教程,在摩尔定律走不下去的时候,我们就会想起FPGA,我们乐此不疲,因为前途无量,当我们轻车熟路,请不要忘了给我们经验的前辈,同时有好的经验的时候,写写教程,小则帮助一二像我们一样的人,大则为中国的科技兴国做做贡献,无所求,只为心里踏实。
这个教程分两部分,一个是硬件架构,另一个是软件架构,不免会有错误,希望指正,所需硬件要求:cpu包含硬件乘法器,timer,串口,至少8M SDRAMusb blaster , pc一台所需软件要求:此番硬件架构大体分为以下内容:1.建立quartusII 工程。
2.利用sopc 工具搭建niosII软核处理器。
3.建立锁相环。
4.编译工程,分配引脚,重新编译。
5.提取所需的ptf文件。
1.建立工程:选择File -> New Project Wizard...会点英文的,或者是用过别的软件的都会知道,wizard是向导的意思,我们就喜欢向导,因为它会给我们剩下很多工作。
这个不用管它,点next,向下。
这个对话框就有用啦,看第一行,翻译过来就是你要把工程放到哪个文件夹下,然后点"..."选吧,选择你要放的位置,但是我要提醒一点就是,因为这是个外国人用的软件,它的路径里不能有中文,否则当你用niosII IDE软件的时候会有莫名奇妙的错误,这个就是我的经验,免费告诉大家啦。
我设置的路径是D:\quartus_pro\uclinux_nios2,然后点击:打开。
看第二个框。
工程名字,这次的有点特殊了,我们要同时看看第三个框了,第三个是顶层实体的名字,如果知道硬件描述语言,那么肯定会明白我说的意思,这里的工程名字必须和顶层实体的名字相同,我在工程名字填上uclinux_nios2。
移植全进程咱们采用的方式,是在windows下进行sopc builder的设计,在linux进行uclinux 的内核的编译,和交叉编译环境的成立。
从而产生uClinux的镜像文件(机械码流)。
需要准备的文件:A、交叉编译环境的linux安装文件,可以是其他格式的)。
B、uclinux-dist(uclinux内核文件,可以是别的版本)C、目前没有明白为何要有这个文件,没有还不行)一:交叉编译环境的成立一、把放在目录:/usr/local/src里面,将解压进/opt/nios2目录下(这个默许的,不用进行目录操作)[root@localhost src]# tar -jxvf -C /二、设定交叉编译器的路径:[root@localhost src]# vi ~/.bash_profile修改bash_profile的內容如下所示,加上/opt/nios2/bin路径# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/bin:/opt/nios2/binexport PATHunset USERNAME3、执行下面一条命令,使设置的路径有效[root@localhost src]# source ~/.bash_profile注:这里你可以进行一下测试。
看看你的交叉编译环境是不是已经建成,也可以略过不做。
方式:[root@localhost src]# nios2-linux-uclibc-gcc –v1、Reading specs from /opt/nios2/lib/gcc/nios2-linux-uclibc3.4.61.9Gtf文件对应的.sof文件和生成的镜像文件zImage一路放在\altera\72\nios2eds\examples下。