欢迎来到天天文库
浏览记录
ID:14679192
大小:1.16 MB
页数:11页
时间:2018-07-29
《实验2_linux开发环境搭建及多线程应用程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式系统设计实验二Linux开发环境搭建与多线程应用程序设计姓名:专业:嵌入式系统设计学号:日期:目录第一章Linux开发环境搭建31.1安装配置minicom31.2安装arm-linux-gcc交叉编译器31.3安装配置nfs5第二章多线程应用程序设计82.1多线程应用程序设计82.2交叉编译11第一章Linux开发环境搭建1.1安装配置minicom安装minicom可分为两步:(1)更新apt-get命令为:apt-getupdate(2)下载安装minicom命令为:apt-getinstallmin
2、icom安装完成页面如下图所示:配置minicom的串口参数如下图所示:串口设备名改为ttyS0串口波特率为115200,8位数据位,1位停止位。硬件控制流位关闭。1.2安装arm-linux-gcc交叉编译器安装arm-linux-gcc。在实验过程中,使用arm-linux-gcc3.4.1版本的编译器。安装可分为三步:(1)解压并安装解压并安装命令:tar–xjvfarm-linux-gcc-3.4.1.tar.bz2–C/armtools(2)配置编译器路径在文件/etc/profile末尾添加expor
3、tPATH=$PATH:/armtools/usr/local/arm/3.4.1/bin修改保存后输入命令:source/etc/profile应用路径(3)查询是否安装成功可以输入arm-linux-gcc–v查询版本号如下图所示:1.3安装配置nfs安装配置nfs的目的是与开发板通过网线进行通信,并烧写程序。安装配置可分为四步:(1)安装nfs服务下载安装nfs服务命令为:apt-getinstallnfs-kernel-server,成功后如下图所示:(2)配置网段在宿主机修改共享文件夹配置文件:(3)重
4、启nfs服务重启命令为:/etc/init.d/portmaprestart/etc/init.d/nfs-kernel-serverrestart(4)挂载设备第一步打开minicom,启动开发板,观察串口输出。查看网络是否已经连通:ping192.168.0.115如图,网络已经连通,开始挂载设备挂载设备的命令为:mount–tnfs–ointr,nolock,rsize=1024,wsize=1024192.168.0.11:/tftpboot/mnt/yaffs/arm9结果如下图所示挂载成功。第二章多线
5、程应用程序设计2.1多线程应用程序设计多线程应用程序设计为典型的生产者消费者问题。创建两个线程,一个线程为生产者线程,另一个线程为消费者线程。在程序中设计数据缓冲区,长度为16,表示生产者一次最多能生产的商品个数以及消费者一次最多能消费的商品个数。在生产者线程中,循环中写入数据的函数put,其算法流程图如下图所示:表示缓冲区非空时,生产者线程挂起,转入消费者线程,并且等待消费者线程的非满信号。如缓冲区非满时,执行生产者线程,写入数据。在消费者线程中,读取数据的函数get,其算法流程图如下图所示:表示缓冲区非满时,
6、消费者线程挂起,转入生产者线程,并且等待生产者线程的非空信号。如缓冲区非空时,执行消费者线程,读取数据。多线程应用程序的实现可分为算法与数据结构。该程序的主要数据结构有两种:(1)缓冲区数组(2)线程控制块包含线程互斥锁、读写指针、缓冲区信号(非空、非满)。该程序的算法实现为建立生产者线程、消费者线程,并在读写数据过程中引入数据缓冲区与线程互斥锁,使得两个线程轮流运行。主函数实现如下图所示:主函数流程有三步:初始化线程控制块各个参数,建立生产者、消费者线程,等待线程运行结束。生产者线程实现如下图所示:消费者线程实
7、现如下图所示:2.2交叉编译交叉编译使用arm-linux-gcc编译器编译命令为:arm-linux-gcc–opthreadpthread.c-lpthread在挂载目录/mnt/yaffs/arm9下运行程序pthread。执行命令为:./pthread因为设置的数据缓冲区大小为16,因此1000个数据的生产与消费共有63次数据交互,最后一次写数据为7位,读数据为8位。
此文档下载收益归作者所有