基于ARM的多线程应用程序设计doc.doc
《基于ARM的多线程应用程序设计doc.doc》由会员分享,可在线阅读,更多相关《基于ARM的多线程应用程序设计doc.doc(72页珍藏版)》请在咨信网上搜索。
1、基于ARM的多线程应用程序设计【实用文档】doc文档可直接使用可编辑,欢迎下载开放性实验报告题目:基于A的多线程应用程序设计院系名称:电气工程学院专业班级:自动132学生姓名:张鹏涛学号:20132302219指导教师:张晓东成绩:指导老师签名: 目 录1系统概述与设计要求111 系统概述11 设计要求2方案论证2。1 实现方法22.2 线程优势2 硬件设计33.1 树莓派接口驱动LED电路设计4软件设计44。1 驱动三色LED灯441驱动实现方法44。. wirngPi库安装和软件编程4服务器和客户端42。服务器设计方法54.2.2 客户端设计方法系统调试6设计心得6参考文献7附录1(ED驱
2、动程序)8附录(服务器程序)10附录3(客户端程序代码)61 系统概述与设计要求11 系统概述 本系统设计是基于树莓派开发板上实现的,树莓派由注册于英国的慈善组织“Raspber i 基金会开发,EbnUpon/埃厄普顿为项目带头人。012年3月,英国剑桥大学埃本阿普顿(En Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspbrry i电脑板,中文译名树莓派.它是一款基于ARM的微型电脑主板,以SDMicoSD卡为内存硬盘,卡片主板周围有1/4个USB接口和一个1/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同
3、时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能。而树莓派2具有90Mz内核频率, 4核 M CortxA7,1G内存,带icro D 卡插槽(支持通过它启动 Linu 操作系统,如 Feoa),40PIN接口(可以增加驱动外设)。本系统设计正式在树莓派2环境下开发实现多线程设计,设计的主要功能就是两个客户端通过服务器互相收发信息。2 设计要求 要求多个客户端能够同时连接服务器,而服务器需要创建线程来管理这多个客户端,并且能够把一个客户端发来的数据进行解析,发给另一个客户端,实现两个甚至多个客户端互相收发信息。能够
4、通过驱动三色灯来发现系统运行的状态,红色说明有错误发生,绿色说明正在正常运行,蓝色说明有用户连接,绿色说明有客户端互相收发信息。2 方案论证2.1 实现方法 要实现服务器同时管理两个甚至多个客户端,就必须引入进程或线程。22 线程优势 一是和进程相比,它是一种非常”节俭的多任务操作方式。 进程是系统中程序执行和资源分配的基本单位。我们知道,在Lnux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这就导致了进程在进行切换等操作起到了现场保护作用,这是一种昂贵的多任务工作方式。 但是为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开
5、销,进程演化中出现了另外一个概念,这就是线程,也被人称为轻量级的进程。它是一个进程内的基本调度单位。线程是在共享的内存空间中并发的多道执行路径,它们共享一个进程的资源,比如文件描述符和信号处理等。因此,大大减少了上下文切换的开销。 二是线程间方便的通信机制。 对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能
6、给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方.3 硬件设计31 树莓派接口驱动LE电路设计图 31 从图.1可以知道,要想让三色灯的红色亮起来,首先控制树莓派GPIO27引脚输出低电平,同理可以控制GIO.28、GPIO29引脚电瓶来控制绿、蓝LED的启动和关闭。树莓派开发板上的相关引脚如图.。图3.24软件设计41 驱动三色ED灯4.1 驱动实现方法 控制引脚电瓶的高低就能实现控制D灯的变化,实际上三色D可以显示无数种颜色,要想超过三种颜色的显示实现,就必须引入PM.WM是模拟脉宽调制来控制输出引脚的实际输出电瓶大小,此系统可以控制引脚从033V变化来显示不同的颜色
7、.wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。irngPi的I函数和ardino非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括RT设备,设备和SPI设备等。4.1。2iringPi库安装和软件编程 首先需要在树莓派上安装wiringPi库,我们选择直接在网上下载安装源码,输入命令:cd 进入根目录下,输入命令:git clne g:/it.dro 从网上下载源码包,输入命令cd irigP进入安装包目录下,依次输入命令:nfigure mak make istall来配置、编译和安装,最后输入命令ud ./ld
8、 来执行编译之后生成的可执行文件,完成安装。最后输入命令:gpioradal会出来引脚图来确定已经安装成功。 接下来就需要运用库的软件编程来驱动ld灯啦,在写C文件时首先要加入库的头文件:#cude 和C语言必要的头文件:#inlude sti.h,然后还需要加入实现软件PWM的头文件:#inclue softPm。h。接下来我们就需要运用库的API函数wiringiSetup()初始化iPi,若初始化失败会返回;然后运用库的A函数sofPwmCeate()创建软件PW,此函数有3个输入参数,分别是控制引脚号,W最小值,PWM最大值;运用库的P函数sofPwmWrit()写M的值,此函数有个输
9、入参数,分别是控制那个引脚号,写入的PM的值,此值需要在最小最大值之间。 完整代码如附录1。4.2 服务器和客户端.2. 服务器设计方法 为了方便起见,我们把服务器和客户端都定义在本地上进行测试,服务器端的话,首先我们需要把主函数传入的端口号记录下来,并且利用C语言标准函数t转换成整型值.接着我们定义两个整型数组来存放两个客户端的套接字,然后我们根据端口去创建服务器,创建服务器需要几个函数来实现,第一个就是sket()函数来创建一个服务器的套接字,此函数有3个输入参数,我们选择pv4协议族,流式Socke,TCP协议类型。然后根据端口号和本地IP配置服务器,之后就是调用绑定bind(),监听i
10、sten()函数来完成服务器的创建.之后就是根据创建的套接字来进行循环,如果有客户端连接,就保存客户端套接字创建一个线程去处理,此处我们以两个客户端为例来进行操作。若是套接字编号0发来消息,我们就转发给套接字编号1,若是超过2个的客户端连接进来我们直接关闭创建的线程就行,之后要是有客户端掉线,就把线程和客户端一块销毁。 具体代码实现见附录24。2。2 客户端设计方法 首先我们封装三个函数,分别是连接、读数据、写数据,开始就调用连接函数,在连接函数里我们创建客户端并通过输入的服务器p和端口去连接服务器,然后我们创建两个线程分别是读和写,在读函数里我们不间断读键盘数据并发送给服务器,在写函数里不间
11、断的读服务器发来的数据并显示在屏幕上. 具体代码实现见附录3。5 系统调试 此系统的调试,我们选择Liux虚拟机模拟调试,首先运行服务器和两个客户端,然后客户端连接服务器,之后两个客户端互相收发数据.为了方便起见,我在PC机上运行和仿真,首先安装虚拟机Mare8。0,然后安装VMware Tools,虚拟机的工具是为了共享电脑上的文件,这样可以在电脑上编写代码,在虚拟机上编译运行。 编译服务器的代码,输入命令gc serve.c o serve.exe -lpthread,回车之后会生成ere.exe可执行文件,之后我们运行服务器,输入命令/serve.exe 67,运行服务器,其中6789为
12、输入的端口号。之后编译客户端代码,输入命令g c。c -oclient。exeprd,回车之后会生成clien.exe可执行文件,我们事先查看虚拟机p,输入命令fcnfg回车就能看到虚拟机本机p,为我们客户端连接服务器所用。之后我们运行客户端一,输入命令。/cliet. 192.16。2。09 6789,回车,然后用同样的命令运行客户端二,之后我们在一个客户端输入信息回车,在另一个客户端就能接收到,具体运行结果如图5.1,5。2,.3。图 5。1图5.2图5.3设计心得此次开发性试验设计让我收获甚多.一是要有一个积极的心态,独立解决问题的意识,培养扎实基础的认识。不要什么东西都感觉跟简单(很多
13、东西可能是看似简单)就不去做了或者不屑一做,以至于性网上搜搜就可以了,这样很不好。有自己的东西有自己的付出才会有程序运行成功时的喜悦和小自豪,这样也有助于培养自己的兴趣.要时刻牢记态度决定一切。其次是兴趣,感觉学习工作中兴趣很关键,只是一个引发人积极性的问题,有了兴趣就自觉了,效率自然就高了。再次要敢于尝试和挑战。不要安于现成的程序,而且不要害怕失败,在程序调试的过程中这点尤为重要,“发现出问题然后解决问题”是一个积累经验的过程,而且很高效。最后要不懈追求。对于源代码进行不断的完善,要尽可能的实现课题所要求的功能.对于初学者或者开发较少的人来说,大量大写程序还是有必要的,但同时要注意思考,理解
14、其实现的内在意义。还可以自己添加一些有意义的功能来实现。当看到自己编写的程序正常运行时,兴趣也会随之而来,乐此不疲,形成一个良性循环. 短短一周的开放性ARM多线程设计很快结束了,我发现我对嵌入式这个方向、对嵌入式技术、对ix都有了新的认识。通过这次的编程,我了解到,要真真正正的掌握计算机程序还不是一件简单容易的事儿,但真正掌握后,它带给我们的将是无穷的便捷与科技,我喜欢高端便捷的生活。我希望我能做计算机这个万能机器人的主人而不是奴隶,我会努力加油的!参考文献1徐千洋inuxC函数库参考手册中国青年出版社.2002马忠梅,马广云,徐英慧,田译.ARM嵌入式处理结构与应用基础北京航空航天大学出版
15、社。2003邹思铁。嵌入式Linux设计与应用.北京清华大学出版社。204杜春雷。ARM体系结构与编程.清华大学出版社。2035田泽。嵌入式系统开发与应用M。北京航空航天大学出版社。00511陈鑫。嵌入式软件技术的现状与发展动向M软件世界。201田泽。嵌入式系统开发与应用实验教程.北京航空航天大学出版社.004AlssandroRubin,onthanCorbnux设备驱动程序M中国电力出版社.202附录1(E驱动程序)incude wiringPi.h#inclde soft.hincd tdio.h#define uhruigned cardefine LdPnRe 7#define Le
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实用文档 基于 ARM 多线程 应用 程序设计 实用 文档 doc
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。