欢迎来到天天文库
浏览记录
ID:56987875
大小:353.00 KB
页数:37页
时间:2020-07-25
《嵌入式操作系统程序示例课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于嵌入式操作系统的开发实例目录12UCOS-II开发实例嵌入式Linux开发实例目录12UCOS-II开发实例嵌入式Linux开发实例主要内容通过使用消息队列接收键盘任务发出的按键消息,并把对应按键的字符显示在液晶屏和PC机的终端上掌握如何通过系统的消息循环来响应键盘任务的消息,同时学会使用文字模式下的液晶屏文字显示函数系统演示实现应用(1)现实应用(2)现实应用(3)设备及其工具硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机软件:PC机操作系统WinXP、ARMADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序主程序流程图任务流程图程序原理消息队列是
2、uCOS-II操作系统的一种通信机制,它可以使一个任务或者中断服务程序向另一个任务发送以指针方式定义的变量消息队列相关函数定义在OSMessage.h中创建消息:OSCreateMessage()发送消息:SendMessage()等待消息:WaitMessage()删除消息:DeleteMessage()消息的数据结构typedefstruct{POS_CtrlpOSCtrl;//消息所发到的窗口(控件),为NULL时指桌面U32Message;//消息类型U32WParam;//消息参数U32LParam;//消息参数}OSMSG,*POSMSG;开发平台的基本消息类型#defin
3、eOSM_KEY1//键盘消息#defineOSM_TOUCH_SCREEN2//触摸屏消息#defineOSM_SERIAL100//串口收到数据的消息#defineOSM_LISTCTRL_SELCHANGE1001//列表框的选择被改变的消息#defineOSM_LISTCTRL_SELDBCLICK1002//列表框的选择双击消息#defineOSM_BUTTON_CLICK1003//单击按钮消息消息类型的参数说明示例:键盘消息的类型:pMsg->Message=OSM_KEY键码:pMsg->WparampMsg是指向键盘消息的指针获取键盘消息的原理键盘消息是由键盘扫描任务
4、(voidKey_Scan_Task(void*Id))创建并发送到系统的消息队列键盘扫描任务用函数KeyBoard_Read()从IIC的数据收发移位寄存器中获得键盘扫描码,这个扫描码是由ATMEGA8当有键盘按下时发送到IIC的数据收发移位寄存器的值系统消息循环应用程序在Main_Task任务中等待消息,并对该消息进行判断和处理,如果是键盘消息则提取出键码,变换为对应字符,然后将其显示到液晶屏上代码分析分析staticvoidKey_Scan_Task(void*Id)函数代码分析Main_Task代码,理解如何实现消息循环分析onKey()函数,理解键盘响应思考?现在打印格式为单
5、字符打印,能够按照字符串的格式进行打印?LCD的模式为text模式,若将LCD模式转变成Graph模式,现行的打印格式需要做相应的改动?目录12UCOS-II开发实例嵌入式Linux开发实例主要内容在Linux环境下,通过编写多线程应用程序设计,学习多线程程序设计的基本原理和pthread库函数的使用开发环境硬件:UP-NETARM2410-S嵌入式实验平台,PC机Pentium500以上,硬盘40G以上,内存大于128M软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境多线程程序的优点提高应用程序响应——将耗时长的操作置于一个新的线程使多CP
6、U系统更加有效——不同的线程运行于不同的CPU上改善程序结构多线程程序示例生产者——消费者问题主程序中启动生产者线程和消费者线程生产者顺序的将0-1000的数字写入共享的循环缓冲区消费者不断地从共享的循环缓冲区读取数据系统演示程序流程图——主程序程序流程图——生产者线程程序流程图——消费者线程程序代码分析——设置缓冲区structprodcons{intbuffer[BUFFER_SIZE];/*缓冲区数组*/pthread_mutex_tlock;/*互斥锁*/intreadpos,writepos;/*读写的位置*/pthread_cond_tnotempty;/*缓冲区非空信号*
7、/pthread_cond_tnotfull;/*缓冲区非满信号*/};程序代码分析——初始化缓冲区voidinit(structprodcons*b){pthread_mutex_init(&b->lock,NULL);pthread_cond_init(&b->notempty,NULL);pthread_cond_init(&b->notfull,NULL);b->readpos=0;b->writepos=0;}程序代码分析——写缓冲区
此文档下载收益归作者所有