资源描述:
《嵌入式系统实验报告四》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验报告四课程名称嵌入式系统及接口技术实验名称内存管理API应用口期2011-6-17学号0825112028姓名余昌泼班级计算机科学与技术B班一.实验要求:(1)创建3个任务,堆栈都为1KB,优先级分别为5、8、9.(2)任务运行时在屏幕上打印“task?isrunning!!”表示任务的优先级。(3)系统中有2个内存intMem1,intMem2.(4)任务5每次运行时分别从2个内存区中获取2个内存块,然后往2个内存块中放一定的数据。(5)任务8每次运行在任务放了数据的一个内存块中取数据进行显示,并且释放对应的内存块。(6)任务
2、9每次运行在任务放了数据的另一个内存块中取数据进行显示,并且释放对应的内存块。二.内存块管理API:(1)创建并初始化内存OS_MEM*OSMemCreate(void*addr,INT32Unblks,INT32Ublksize,INT8U*eir)Addr:建立的内存区的起始地址,内存区可以使用静态数组或在初始化吋使用malloc()建立。(2)从内存屮获取一个内存Void*OSMemGet(OS_MEM*pmem,INT8U*err)(3)回收一个内存条INT8UOSMemPut(OS_MEM*pmem,void*pblk)(
3、4)查询分区状态INT8UOSMemQuery(OS_MEM*pmem,OS_MEM_DATA邛data)三:实验源代码:#include"includes.!)”#defineTASK_STK_SIZE1024OS_STKTask_5_stk[TASK_STK_SIZE];OS_STKTask_8_stk[TASK_STK_SIZE];OS_STKTask_9_stk[TASK_STK_SIZE];voidTask5(void*data);voidTask8(void*data);voidTask9(void*data);OS_M
4、EM*intMem1;OS_MEM*intMem2;INT8Uerr;INT8UIntBufferl[20][64];INT8UIntBuffer2[20][32];INT8U*intBufPl;INT8U*intBulP2;INT8Ucount=1;voidmain(void){PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);OSInit();PC_DOSSaveReturn();PC_VectSet(uCOS,OSCtxSw);intMeml=OSMemCreate(IntBuffe
5、r1,20,64,&eir);intMem2=OSMemCreate(IntBuffer2,20,32,&eir);OSTaskCreate(Task5,(void*)0,&Task_5_stk[TASK_STK_SIZE-1J,5);OSTaskCreate(Task8,(void*)0,&Task_8_stk[TASK_STK_SIZE-1],8);OSTaskCreate(Task9,(void*)0,&Task_9_stk[TASK_STK_SIZE-1],9);OSStart();}voidTask5(void*pdata
6、){INT8Ux=0;INT8Uy=0;INT8Ujudge;INT8Uerr;INT16Skey;OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EX1T_CRITICAL();for(;;){//PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);PC_DispStr(x,y,MTask5isrunning!!M,DISP_FGND_WHITE+DISP_BGND_RED
7、+DISP_BLINK);intBufPl=OSMemGet(intMem1,&eir);*intBufPl=count;intBufP2=OSMemGet(intMem2,&eir);*intBufP2二2*count;count++;//x=(x+l)%(80-12);〃y=(y+l)%(25・l);y=y+2;if(PC_GetKey(&key)二二TRUE){if(key==0xlB){PC_DOSReturn();OSCtxSwCtr=0;OSTimeDlyHMSM(0,0,l,0);voidTask8(void*pdat
8、a){INT8Ux=20;INT8Uy=0;INT8Ujudge;INT8Uerr;INT16Skey;INT8Ustr;//charstr;OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR)