




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一章嵌入式应用程序,嵌入式系统及其软件工具,本章提要,11.1多线程应用程序设计,多线程程序作为一种多任务并发的工作方式具有以下优点:提高应用程序的响应使多CPU系统更加有效改善程序结构LIBCpthread库提供了大量的API函数支持,11.1.1生产者消费者示例,主程序,生产者线程,消费者线程,intmain(void)pthread_tth_a,th_b;void*reval;init(,11.1.1生产者消费者示例程序,主程序,附:线程函数,线程创建函数intpthread_create(pthread_t*thread_id,constpthread_attr_t*attr,void*(*_start_routine)(void*),void*_restrict_arg)等待指定线程结束intpthread_join(pthread_t_th,void*_thread_return)获得父线程IDpthread_tpthread_self(void),附:线程函数,线程退出voidpthread_exit(void*_reval)说明:一个线程结束有两种方式:(1)线程处理函数结束了pthread_join返回结束;(2)调用pthread_exit()终止当前线程。测试两个线程号是否相同intpthread_equal(pthread_t_thread1,pthread_t_thread2),voidproducer(void*data)intn;for(n=0;n1000;n+)printf(“put%dn”,n);put(,11.1.1生产者消费者示例程序,生产者线程,voidconsumer(void*data)intd;while(1)d=get(,11.1.1生产者消费者示例程序,消费者线程,11.1.2线程间数据共享和通信,BUFFER,Producer,Consumer,lock:锁定一个数据区域,保证资源在同一时间段只能被一个线程使用。,条件变量:用于解决进程间共享数据区的通信同步问题。,11.1.2线程间数据共享和通信,structprodconsintbufferBUFFER_SIZE;pthread_mutex_tlock;intreadpos,writepos;pthread_cond_tnotempty;pthread_cond_tnotfull;,整数型缓冲区,附:锁的函数互斥信号量函数,互斥信号量初始化voidpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutexattr_t*mutex_attr)销毁互斥信号量intpthread_mutex_destroy(pthread_mutex_t*_mutex)锁定互斥信号量intpthread_mutex_lock(pthread_mutex_t*_mutex)解锁互斥信号量intpthread_mutex_unlock(pthread_mutex_t*_mutex),附:条件变量的函数,条件变量初始化intpthread_cond_init(pthread_cond_t*cond,constpthread_condattr_t*cond_attr)销毁条件变量intpthread_cond_destroy(pthread_cond_t*_cond)等待条件变量(使线程阻塞在条件变量上)intpthread_cond_wait(pthread_cond_t*_restrict_cond,pthread_mutex_t*_restrict_mutex)唤醒条件变量externintpthread_cond_signal(pthread_cond_t*_cond),初始化缓冲区,voidinit(structprodcons*b)pthread_mutex_init(,11.1.3生产消费过程,生产put(),消费get(),intget(structprodcons*b)intdata;pthread_mutex_lock(,11.1.4从缓冲区读取整数函数,get()函数,11.2网络应用程序设计,嵌入式网络设备可以用在很多地方,如:个人数字助理PDA、导航系统、机顶盒、远程数据采集装置、智能网关、路由器、智能工厂的自动化装置,11.2.1Linux中网络层次结构,BSD套接字接口是一个通用接口,它定义了一个内部进程通信的BSD机制。一个套接字描述一个连接的一个端点。,Internet套接字,11.2.2Linux下的Socket编程,structsockaddrunsignedshortsa_family;/地址族charsa_data14;/14字节的协议地址structsockaddr_inshortintsin_family;/地址族unsignedshortintsin_port;/端口号structin_addrsin_addr;/IP地址unsignedcharsin_zero8;/填充0,11.2.2Linux下的Socket编程,主机地址顺序转换成网络字节顺序(对短型数据操作)htons()=“HosttoNetworkShort”主机地址顺序转换成网络字节顺序(对长型数据操作)htonl()=“HosttoNetworkLong”网络字节顺序转换成主机地址顺序(对短型数据操作)ntohs()=“NetworktoHostShort”网络字节顺序转换成主机地址顺序(对长型数据操作)ntohl()=“NetworktoHostLong”,11.2.2Linux下的Socket编程,intsocket(intdomain,inttype,intprotocol);intbind(intsockfd,structsockaddr*my_addr,intaddrlen);intconnect(intsockfd,structsockaddr*serv_addr,intaddrlen);intlisten(intsockfd,intbacklog);intaccept(intsockfd,void*addr,int*addrlen);intsend(intsockfd,constvoid*msg,intlen,intflags);,11.2.2Linux下的Socket编程,intrecv(intsockfd,void*buf,intlen,unsignedintflags);intsendto(intsockfd,constvoid*msg,intlen,unsignedintflags,conststructsockaddr*to,inttolen);intrecvfrom(intsockfd,void*buf,intlen,intflags,structsockaddr*from,int*fromlen);close(intsockfd);intshutdown(intsockfd,inthow);intgethostname(char*hostname,size_tsize);,11.2.3Linux下的Socket编程,11.3嵌入式实时应用,实时系统并非“快速系统”。实时系统为并发的各任务规定有限定的响应时间,从而系统具有可预测性。,11.3.1实时系统的设计,在实时系统中应能够提供对时间正确性指定的方法每隔一定时间间隔就执行一段额外的小程序;提供指定程序必须在某时间点之前完成的方法;实时系统的体系结构设计调度方式为抢占式;调度策略采用时间策略、最迟完成时间策略等;,对系统中实时单元和分时单元合理化分划分实时任务实时任务划分粒度不能太粗,也不能太细;任务分解的原则:(1)时间:两任务依赖的时间条件具有不同频率和时间段(2)异步性:两任务依赖的条件没有时间关系(3)优先级:两任务依赖的条件有不同优先级(4)清晰性:两任务在功能和逻辑上分开,11.3.1实时系统的设计,调度机制Linux采用是“有条件的可剥夺方式”的调度机制。即进程在用户空间执行时一旦满足条件,内核可以剥夺当前进程运行权而调度其它进程运行;但当进入内核态的时候,即使内核知道应该调度了,这种调度也不能立即发生,只有当进程回到用户空间调度才能发生。改进:希望能够在内核直接进行CPU抢占。,11.3.2Linux内核实时性瓶颈,信号量信号量(条件变量)结构中定义了一个阻塞队列,阻塞于某信号量的进程都按照优先级挂在的队列中。如果一个任务由于某信号量受阻,Linux将调用内核函数schedule()进行进程切换改进:减少堆栈切换、上下文保存带来的额外开销。,11.3.2Linux内核实时性瓶颈,消息队列Linux消息的接收和发送函数属于glibc库,运行于用户空间,但是最终需要使用int0 x80中断进入内核空间调用内核函数完成实际的消息接收和发送。频繁的中断、内存空间的分配和数据拷贝会影响系统的实时性。改进:使用mmap把用户空间的内存映射到内核空间。,11.3.2Linux内核实时性瓶颈,Linux无时间限制Linux虽然给实时进程提供了较高的优先级别,但是没有加入时间限制。例如:完成的最后期限、应在多长时间内完成、执行周期等。同时Linux的调度兼顾优先级和等待时间,大量的非实时进程也能对实时进程造成阻塞。改进:增加相应的数据结构、优化调度算法。,11.3.2Linux内核实时性瓶颈,11.3.2Linux内核实时性瓶颈,Linux时钟粒度粗糙Linux周期性定时器的频率为100Mhz,远不能满足实时性的要求。,11.3.3Linux内核实时性改进方案,直接修改内核在普通linux内核上增加实时模块,11.4嵌入式数据库,嵌入式数据库是指可在嵌入式设备中独立运行的数据库管理系统。嵌入式数据库主要管理存放在SRAM、ROM或者Flash中的系统和用户数据。由于系统内存和CPU资源有限。必须采用特殊的数据结构、算法和数据库精简技术。,占用存储空间小数据可靠、安全、可管理数据库系统的可移植性数据库系统的可剪裁性,11.4.1嵌入式数据库系统特点,会计、证券交易等业务的应用软件。采用软件嵌入数据库方式。车载导航、路由器、信息家电、机器人等嵌入式系统。采用硬件嵌入数据库方式。,11.4.2嵌入式数据库两大应用领域,11.4.3嵌入式数据库体系结构,基于内存方式基于文件方式基于网络方式,11.4.4嵌入式数据库类型,11.4.5常见的嵌入式数据库,非开源嵌入式数据库MiniSQLMiniSQL是一种小型关系数据库管理系统。占用资源少,应用于资源有限的嵌入式应用环境,支持SQL的子集。,11.4.5常见的嵌入式数据库,OpenbaseMiniOpenbaseMini具有微小内核结构,最小的应用系统只有50K左右,提供了对标准SQL的支持,提供了事务处理、数据同步机制。目前支持Wince和palm两种操作系统。,11.4.5常见的嵌入式数据库,开源嵌入式数据库SQLLiteSQLite是一款轻型的,针对嵌入式系统应用的关系数据库。它只需要250K的内存,能维护大小为2T的数据。它能够支持Windows/Linux等主流的操作系统,能够跟很多程序语言相结合。使用ODBC接口,但比起一般的数据库管理系统,它的处理速度更快。,11.4.5常见的嵌入式数据库,BerkeleyDBBerkeleyDB是一个内嵌式数据库管理系统,应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理。Berkeley为许多编程语言提供了实用的API接口。所有同数据库相关的操作都由BerkeleyDB函数库负责统一完成。底层的数据加锁、事务日志和存储管理等都在BerkeleyDB函数库中实现。BerkeleyDB函数库本身虽然只有300KB左右,但却能够用来管理多达256TB的数据。,11.5嵌入式系统与分布式应用,随着电子技术和网络技术的发展,嵌入式系统之间,以及嵌入式系统与非嵌入式计算机系统之间互联成为可能。这种网络化的嵌入式计算机应用系统就是分布式嵌入式系统。系统中的端点互相协同来完成一个共同的任务。分布式系统必须提供资源共享功能。,11.5.1分布式嵌入式系统结构,实现系统与显示和键盘的接口,将系统联入主机系统,对马达实时控制和处理传感器事件,11.5.1分布式嵌入式系统结构,工业控制网络智能家居系统汽车车内局域网络。,11.5.2分布式嵌入式系统通信方式,I2C总线C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古新正产业发展有限公司高校毕业生招聘41人(第三期)模拟试卷及答案详解(考点梳理)
- 2025北京邮电大学集成电路学院招聘3人(人才派遣)模拟试卷及答案详解(名师系列)
- 沧州市人民医院创伤骨科ICU管理能力考核
- “百万英才汇南粤”广东省佛山市南海区教育系统2025-2026学年面向社会公开招聘教师考前自测高频考点模拟试题附答案详解(突破训练)
- 2025儿童医院产科信息化管理技能考核
- 沧州市中医院ICU患者镇痛镇静考核
- 2025年甘肃庆阳西峰数字服务就业中心招聘100人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025江苏连云港市灌南县招聘事业单位人员43人考前自测高频考点模拟试题及答案详解(典优)
- 2025年甘肃省酒泉市市直事业单位选调工作人员部分岗位核销或核减选调计划考前自测高频考点模拟试题及参考答案详解1套
- 秦皇岛市中医院微创手术编码考核
- 船舶高级消防课件
- 临床康复一体化讲课件
- 重症肺炎集束化治疗专题报告
- 二年级语文上册第二单元大单元教学设计
- 2025年云南南方地勘工程有限公司招聘笔试参考题库含答案解析
- DB31/T 978-2016同步注浆用干混砂浆应用技术规范
- 教育新闻宣传工作培训
- 【DAMA】2025智变-AI赋能政府与央国企智能化转型白皮书
- 新教材部编版二年级上册《4.彩虹》教学设计
- 航空宠物知识培训课件
- 综合实践活动课程设计
评论
0/150
提交评论