欢迎来到天天文库
浏览记录
ID:37581884
大小:2.30 MB
页数:34页
时间:2019-05-25
《NiosII下UCOS和移植ucLinux教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式控制研究室www.21control.com实验五uc/OS-II实时操作系统在NiosII中的运行一.实验目的:了解在NIOSII中使用uc/OSII实时操作系统的基本方法。二.实验说明:uc/OS-II已经在世界范围内得到广泛的使用,包括手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制等。实际上,uc/OS-II已经通过了非常严格的测试,并且得到了美国航空航天管理局(FAA)的安全认证,可以用1于飞机、航天器等与人性命攸关的控制系统中。因此,uc/OS-II在工业等实时性需求比较强的领域应用非常广泛,我们的学习套间提供了在NiosII系统中运行uc/OS-II的例子(
2、“ucosII_test”),该例子定义了两个任务:Task1和Task2,两个任务交替执行。例子虽然简单,但可以作为uc/OS-II在NiosII系统中运行的演示。同学们可以参考NiosII的软件开发手册以及uc/OS-II的发明人——JeanJ.Labrosse的著作“MicroC/OS-IITheReal-TimeKernel”(SecondEdition)的中译本《嵌入式实时操作系统uc/OS-II》(第二版,邵贝贝等译),研究和设计出功能更强、更符合实际应用的程序。一、参考前面的方法建立一个工程软件工程;二、打开工程的.syslib工程属性,按下图所示修改编译属性:在“Syste
3、mLibraryContents”的“RTOS:”下拉框选择“MicroC/OS-II”,以及右边的程序段都选择SDRAM,因为使用了操作系统,内部ram比较小会容不下,在这里我们选择SDRAM作为uc/OSII的运行环境。MicroC/OS-II的各个选项的配置可以通过点击“RTOSOptions…”按钮进行选择和配置,如下图所示:1《嵌入式实时操作系统uc/OS-II》(第二版)1嵌入式控制研究室www.21control.com具体操作和配置按照需要和参考ALTERA的软件开发手册。本例子采用默认配置。三、做完这些配置后,就可以添加程序了,例如,我们这个例子创建了两个任务,这两个任务
4、交替运行:#include#include"includes.h"#include"system.h"#include"altera_avalon_pio_regs.h"#include"alt_types.h"#include"lcd_1602.h"/*定义任务堆栈大小*/#defineTASK_STACKSIZE2048OS_STKtask1_stk[TASK_STACKSIZE];OS_STKtask2_stk[TASK_STACKSIZE];/*定义任务的优先级*/#defineTASK1_PRIORITY1#defineTASK2_PRIORITY22嵌入式控制
5、研究室www.21control.com/*任务1运行,然后阻塞3秒钟,切换到其它任务*/voidtask1(void*pdata){alt_u8led;while(1){led=0x1;*(unsignedint*)PIO_LED_BASE=led;initialcd();displaystring(0x80,"SOC:HelloWorld!");displaystring(0xC0,"Task1Running...");printf("Task1Running...@@@@@@@@@@@@@@@");OSTimeDlyHMSM(0,0,3,0);}}/*任务2运行,然后阻塞3秒钟,
6、切换到其它任务*/voidtask2(void*pdata){alt_u8led;while(1){led=0x2;*(unsignedint*)PIO_LED_BASE=led;initialcd();displaystring(0x80,"uc/OS-II--Demo!");displaystring(0xC0,"Task2Running...");printf("Task2Running...$$$$$$$$$$$$$$$");OSTimeDlyHMSM(0,0,3,0);}}/*main函数建立2个任务,然后启动内核,操作系统即转入运行内核*/intmain(void){OST
7、askCreate(task1,NULL,(void*)&task1_stk[TASK_STACKSIZE-1],TASK1_PRIORITY);OSTaskCreate(task2,NULL,(void*)&task2_stk[TASK_STACKSIZE-1],TASK2_PRIORITY);OSStart();return0;}结论:从本例可以看出,在NiosII中运行uc/OSII并不难,关键是实际应用中如何建立
此文档下载收益归作者所有