嵌入式实习报告.docx
- 文档编号:9963162
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:15
- 大小:86.21KB
嵌入式实习报告.docx
《嵌入式实习报告.docx》由会员分享,可在线阅读,更多相关《嵌入式实习报告.docx(15页珍藏版)》请在冰豆网上搜索。
嵌入式实习报告
嵌入式实时操作系统
实习报告
学院:
电气信息工程学院
专业:
测控技术与仪器
班级:
姓名:
学号:
指导教师:
嵌入式系统:
在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。
对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机;各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。
而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式。
目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。
但是对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中。
广义上讲,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。
作为系统核心的微处理器又包括三类:
微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。
所以有人简单的说:
“嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。
”还有人认为嵌入式系统就是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。
应该说后者从功能应用特征上比较好的给出了嵌入式系统的定义,嵌入式的概念的分析根本上应该从应用上加以切入。
狭义上讲,人们更加强调那些使用嵌入式微处理器构成独立系统,具有自己的操作系统并且具有某些特定功能的系统,这里的微处理器专指32位以上的微处理器。
按照这种定义,典型的嵌入式系统有使用x86的小型嵌入式工控主板,在各种自动化设备,数字机械产品中有非常广阔的应用空间;另外一大类是使用Intel,Motorola等专用芯片构成的小系统,它不仅仅在新兴的消费电子和通讯仪表等方面获得了巨大的发展应用空间,而且甚至有趋势取代传统的工控机。
现在大家更加清楚的看到:
嵌入式技术的春天已经来了。
所以也就难怪嵌入式系统成为当前最热门的技术之一。
实习目的:
1.了解嵌入式操作系统
2.学会用uc/os-Ⅱ级编写调试
3.熟练运用visalc++进行C语言编程
实习内容:
题目一、
建立4个任务,其中任务1显示院系,任务2显示班级学号,任务3显示姓名,任务4显示当前日期和时间。
题目二、
建立2个任务,其中任务1完成如下运算:
1!
+2!
+3!
+。
。
。
+10!
,并把运算结果通过消息传输机制发送给任务2。
任务2将运行结果显示出来。
程序内容:
/*
*********************************************************************************************************
*uC/OS-II
*TheReal-TimeKernel
*
*(c)Copyright1992-2002,JeanJ.Labrosse,Weston,FL
*AllRightsReserved
*
*EXAMPLE#1
*********************************************************************************************************
*/
#include
#include
#include
#include
#include
#include
#include
#include"E:
\ucos-ii\software\ucos-ii\ix86l\bc45\os_cpu.h"
#include"E:
\ucos-ii\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\os_cfg.h"
#include"E:
\ucos-ii\software\ucos-ii\source\ucos_ii.h"
#include"E:
\ucos-ii\software\blocks\pc\bc45\pc.h"
/*
*********************************************************************************************************
*CONSTANTS
*********************************************************************************************************
*/
#defineTASK_STK_SIZE1024/*Sizeofeachtask'sstacks(#ofWORDs)*/
#defineN_TASKS4/*Numberofidenticaltasks*/
/*
*********************************************************************************************************
*VARIABLES
*********************************************************************************************************
*/
OS_STKTaskStk[N_TASKS][TASK_STK_SIZE];/*Tasksstacks*/
OS_STKTaskStartStk[TASK_STK_SIZE];
charTaskData[N_TASKS];/*Parameterstopasstoeachtask*/
OS_EVENT*RandomSem;
/*
*********************************************************************************************************
*FUNCTIONPROTOTYPES
*********************************************************************************************************
*/
voidTask(void*data);/*Functionprototypesoftasks*/
voidTaskStart(void*data);/*FunctionprototypesofStartuptask*/
staticvoidTaskStartCreateTasks(void);
staticvoidTaskStartDispInit(void);
staticvoidTaskStartDisp(void);
OS_STKTask1[1024];
OS_STKTask2[1024];
OS_STKTask3[1024];
OS_STKTask4[1024];
/*$PAGE*/
/*
*********************************************************************************************************
*MAIN
*********************************************************************************************************
*/
voidmain(void)
{
PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);/*Clearthescreen*/
OSInit();/*InitializeuC/OS-II*/
PC_DOSSaveReturn();/*SaveenvironmenttoreturntoDOS*/
PC_VectSet(uCOS,OSCtxSw);/*InstalluC/OS-II'scontextswitchvector*/
/*
RandomSem=OSSemCreate
(1);
*//*Randomnumbersemaphore*/
OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],0);
OSStart();/*Startmultitasking*/
}
/*
*********************************************************************************************************
*STARTUPTASK
*********************************************************************************************************
*/
//voidTaskStart(void*pdata)
//{
//#ifOS_CRITICAL_METHOD==3/*AllocatestorageforCPUstatusregister*/
//OS_CPU_SRcpu_sr;
//#endif
//chars[100];
//INT16Skey;
//pdata=pdata;/*Preventcompilerwarning*/
//TaskStartDispInit();/*Initializethedisplay*/
//OS_ENTER_CRITICAL();
//PC_VectSet(0x08,OSTickISR);/*InstalluC/OS-II'sclocktickISR*/
//PC_SetTickRate(OS_TICKS_PER_SEC);/*Reprogramtickrate*/
//OS_EXIT_CRITICAL();
//OSStatInit();/*InitializeuC/OS-II'sstatistics*/
//TaskStartCreateTasks();/*Createalltheapplicationtasks*/
//for(;;)
//{
//TaskStartDisp();/*Updatethedisplay*/
//if(PC_GetKey(&key)==TRUE)
//{/*Seeifkeyhasbeenpressed*/
//if(key==0x1B)
//{/*Yes,seeifit'stheESCAPEkey*/
//PC_DOSReturn();/*ReturntoDOS*/
//}
//}
//OSCtxSwCtr=0;/*Clearcontextswitchcounter*/
//OSTimeDlyHMSM(0,0,1,0);/*Waitonesecond*/
//}
//}
/*$PAGE*/
/*
*********************************************************************************************************
*INITIALIZETHEDISPLAY
*********************************************************************************************************
*/
staticvoidTaskStartDispInit(void)
{
/*1111111111222222222233333333334444444444555555555566666666667777777777*/
/*01234567890123456789012345678901234567890123456789012345678901234567890123456789*/
PC_DispStr(0,0,"uC/OS-II,TheReal-TimeKernel",DISP_FGND_WHITE+DISP_BGND_RED+DISP_BLINK);
PC_DispStr(0,1,"JeanJ.Labrosse",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,2,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,3,"EXAMPLE#1",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,4,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,5"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,6,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,7,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,8,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,9,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,10,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,11,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,12,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,13,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,14,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,15,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,16,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,17,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,18,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,19,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,20,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,21,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);
PC_DispStr(0,22,"<-PRESS'ESC'TOQUIT->",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY+DISP_BLINK);
/*1111111111222222222233333333334444444444555555555566666666667777777777*/
/*01234567890123456789012345678901234567890123456789012345678901234567890123456789*/
}
/*$PAGE*//*
*********************************************************************************************************
*UPDATETHEDISPLAY
*********************************************************************************************************
*/
/*
staticvoidTaskStartDisp(void)
{
chars[80];
//sprintf(s,"%5d",OSTaskCtr);/*Display#tasksrunning*/
//PC_DispStr(18,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
//#ifOS_TASK_STAT_EN>0
//sprintf(s,"%3d",OSCPUUsage);/*DisplayCPUusagein%*/
//PC_DispStr(36,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
//#endif
//sprintf(s,"%5d",OSCtxSwCtr);/*Display#contextswitchespersecond*/
//PC_DispStr(18,23,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
//sprintf(s,"V%1d.%02d",OSVersion()/100,OSVersion()%100);/*DisplayuC/OS-II'sversionnumber*/
//PC_DispStr(75,24,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
//switch(_8087){/*DisplaywhetherFPUpresent*/
//case0:
//PC_DispStr(71,22,"NOFPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);
//break;
//case1:
//PC_DispStr(71,22,"8087FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);
//break;
//case2:
//PC_DispStr(71,22,"80287FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);
//break;
//case3:
//PC_DispStr(71,22,"80387FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);
//break;
//}
//}
/*$PAGE*/
/*
*********************************************************************************************************
*CREATETASKS
*********************************************************************************************************
*/
staticvoidTaskStartCreateTasks(void)
{
INT8Uerr;
OSInit();
OSTaskCreate(Task1,(void*)0,&Task1[TASK_STK_SIZE-1],1);
OSTaskCreate(Task2,(void*)0,&Task2[TASK_STK_SIZE-1],2);
OSTaskCreate(Task3,(void*)0,&Task3[TASK_STK_SIZE-1],3);
OSTsakCreate(Task4,(void*)0,&Task4[TASK_STK_SIZE-1],4);
}
/*
*********************************************************************************************************
*TASKS
*********************************************************************************************************
*/
voidTask(void*pdata)
{
INT8Ux;
INT8Uy;
INT8Uerr;
for(;;){
OSSemPend(RandomSem,0,&err);/*Acquiresemaphoretoperformrandomnumbers*/
x=random(80);/*FindXpositionwheretasknumberwillappear*/
y=random(16);/*FindYpositionwheretasknumberwillappear*/
//OSSemPost(RandomSem);/*Releasesemaphore*/
/*Displaythetasknumberonthescreen*/
PC_DispChar(x,y+5,*(char*)pdata,DISP_FGND_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实习 报告