《嵌入式软件开发》课程设计报告

合集下载

嵌入式课程设计报告完整版

嵌入式课程设计报告完整版

目录前言 (2)一、U-Boot分析 (3)1、引导程序U-Boot第一阶段分析 (3)2、引导过程 (4)3、程序流程图 (8)二、程序设计 (8)三、心得体会 (9)前言ARM嵌入式处理器已被广泛应用于消费电子厂品、无线通信、网络通信和工业控制等领域。

在嵌入式操作系统中,Linux、Vxworks、WinCE三足鼎立,其中Linux由于其开源性、稳定性、安全性、可裁剪性更是一支独秀。

在嵌入式系统中,如何实现在ARM平台下Linux操作系统的引导工作是嵌入式技术开发的重要环节。

BootLoader就是在操作系统内核运行之前运行的一段小程序。

通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。

在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader 来完成。

比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

一、U-Boot分析嵌入式Linux系统中常用的Bootloader引导程序有U-Boot,redboot, blob 和vivii等,其中U-Boot遵循GPL条款的开放源码项目,功能最为强大,U-Boot 对PowerPC系列处理器支持最丰富,同时还支持MIPS,x86,ARM,XScale等诸多常用系列的处理器;U-Boot引导程序分为Stage1和Stage2量大部分,Stage1中主要包括设备初始化、中断设置、时间设置和储存器初始化等工作,并且采用汇编语言实现,而一些通用功能大多采用C语言实现,放在Stage2中。

1、引导程序U-Boot第一阶段分析Stage1的代码在CPU/arm920t/start.s中定义,它包括从系统上电后在0x00000000地址开始执行的部分。

嵌入式课程设计报告

嵌入式课程设计报告
译、调试等功能。
调试工具
使用GDB等调试工具进行程序调试, 可实现断点设置、变量查看、堆栈跟
踪等功能。
版本控制工具
使用Git等版本控制工具进行代码管理 ,实现多人协作开发、版本回溯等功 能。
性能分析工具
使用Valgrind等性能分析工具进行程 序性能分析,可实现内存泄漏检测、 函数调用关系分析等功能。
课程设计总结与展望
总结本次课程设计的经验教训和收 获,展望嵌入式系统未来的发展趋 势和应用前景。
02
硬件平台选择与搭建
常见嵌入式硬件平台比较
ARM平台
高性能、低功耗,广泛应用于智能手机、 平板电脑等移动设备。
PowerPC平台
高性能、高可靠性,适用于工业控制、航 空航天等高端应用设备、 数字电视等领域。
07
总结与展望
本次课程设计收获总结
理论与实践结合
通过本次课程设计,深入理解了 嵌入式系统的基本原理,同时将 理论知识应用于实际项目中,实 现了理论与实践的有机结合。
技能提升
在课程设计过程中,掌握了嵌入 式系统开发的基本技能,包括硬 件设计、软件编程和调试技术等 。
团队合作
与团队成员紧密合作,共同完成 了课程设计的任务,提高了团队 协作和沟通能力。
05
系统实现过程与代码展示
关键模块代码实现技巧分享
模块化设计
将系统划分为多个独立的功能模块,每个模块具有明 确的接口和功能,便于代码的管理和复用。
高效算法选择
针对系统需求,选择合适的算法和数据结构,以提高 代码执行效率。
代码优化
通过减少冗余代码、提高代码可读性和可维护性,降 低系统资源消耗。
系统集成测试方法论述
嵌入式课程设计报告

嵌入式课程设计报告88032

嵌入式课程设计报告88032

嵌入式课程设计报告设计题目:电子密码锁、摘要随着科技和人们的生活水平的提高,实现防盗的问题也变得尤为突出,传统机械锁构造简单,电子锁的保密性高,使用灵活性好。

根据需要设计运用W90P170开发板,制作一款电子密码锁,密码锁通过键盘输入密码,通过在LCD的文字和图片显示当前密码锁的状态。

实现设置密码,密码验证,错误密码自锁、图片显示的功能。

目录一、选题意义及系统功能 (3)二、硬件设计及描述 (4)三、软件设计及描述 (5)四、程序代码 (6)五、课程设计体会 (11)六、运行结果 (12)七、心得体会 (12)八、参考文献 (13)九、附录 (13)一、选题意义及功能描述1、选题意义电子密码锁是通过密码输入来控制电路或是芯片工作,从而控制机械的开关闭合、开锁的电子产品。

随着科技提高和人们生活水平的提高,对电子密码锁的需求增加。

电子密码做较传统的机械锁安全性能更高。

特点如下:(1)保密性好,编程量大,随机开锁的成功率几乎为零。

(2)密码可变,用户可以随时改变密码,防止密码被盗,同时也可以避免人员的更替而使锁的密级下降。

(3)误码输入保护,输入密码多次错误是,系统进行自锁。

(4)无活动零件,不会磨损,寿命长。

(5)使用灵活性好,无需佩戴钥匙,操作简单。

2、功能描述基本功能:(1)从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到Flash芯片中,设置密码完成。

(2)从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。

(3)如果密码正确,则LED灯点亮;如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。

扩展功能:(1)首先显示“请输入密码:”,显示密码锁背景图片1。

(2)如果密码正确则显示“密码正确”,显示成功进入系统的背景图片2。

(3)如果密码不正确则显示“密码不正确,请重新输入:”(4)如果连续三次输入密码错误则显示“对不起,您已经连续三次输入密码错误,系统锁定”,显示图片1。

嵌入式课程设计报告

嵌入式课程设计报告

课程名称:嵌入式系统课程设计先修课程:操作系统、C语言程序设计一、目标和任务《嵌入式系统课程设计》是计算机学生专业实践课程,是学习《嵌入式系统及设计》课程后必需实践教学步骤。

课程设计是检验学生是否掌握相关专业课程知识关键手段,以学生为主体,充足调动学生主动性和发明性,重视学生实际动手能力培养。

经过本课程设计使学生加深了解、巩固课堂教学和平时试验内容,使学生初步含有linux应用开发系统分析、系统设计、系统实现和测试实际能力,强化学生知识实践意识、提升动手能力,发挥学生想象力和创新能力,从而培养工程应用型人才。

二、教学基础要求1、学习态度:要有勤于思索、刻苦钻研学习精神和严厉认真、一丝不苟、有错必改、精益求精工作态度,主动查阅整理分析相关参考文件,精心设计、认真编码、确保质量。

对弄虚作假者,课程设计成绩一律按不及格记,并依据学校相关要求给处理。

2、学习纪律:要严格遵守学习纪律,遵守作息时间,不得迟到、早退和旷课。

特殊情况不能上课者,必需请假,凡未请假或未获准假私自不上课者,均按旷课论处。

3、课程目标:掌握linux应用开发基础理论知识和基础方法技能,概念清楚正确,系统分析、系统设计、系统实现、系统测试符合软件工程相关规范,结构合理,程序运行良好,课程设计汇报撰写规范,答辩中回复问题正确。

4、课程设计汇报:根据《东华理工大学长江学院课程设计汇报规范》和《嵌入式系统课程设计》任务书要求,认真设计、撰写好课程设计汇报,总结课程设计收获和心得体会,立即提交电子和纸质材料。

三、课程设计内容(一)关键设计内容1、系统分析、总体设计、概要设计、具体设计、系统实现和测试。

2、系统运行和维护。

3、撰写课程设计汇报。

4、课程设计答辩:课题叙述和回复问题。

(二)参考选题1.系统移植类:(1)嵌入式WinCE移植(2)嵌入式Linux2.6内核移植(3)嵌入式Web服务器BOA在开发板上移植(4)使用BusyBox构建根文件系统移植(5)嵌入式QT移植(6)嵌入式引导程序UBoot移植2. QT编程类:(1)基于QT手机通讯录管理(2)基于QT手机日历程序(3)基于QT手机计算器程序(4)基于QT手机秒表程序(5)基于QT电子词典程序(6)基于QT电子相框程序3. 驱动编程类:(1)Led跑马灯程序(2)按键驱动程序(3)嵌入式类Minicom串口程序4. 其它类:可选择其它自己感爱好和嵌入式相关题目四、时间安排《嵌入式系统课程设计》安排在第六学期进行,时间1周。

嵌入式课程设计报告毕业论文教案

嵌入式课程设计报告毕业论文教案

嵌入式课程设计报告毕业论文教案一、教学目标通过本课程的学习,学生应该能够:1.了解嵌入式系统设计的基本原理和流程2.掌握基本的嵌入式硬件和软件开发技术3.能够使用开发板和相关工具进行嵌入式系统的设计和开发4.掌握常用的接口协议和通信方式,包括串口通信、SPI、I2C、CAN等5.能够设计和开发基本的嵌入式应用程序,如LED灯的控制、按键的检测、温度传感器的读取等二、教学内容及安排1.嵌入式系统概述内容:介绍嵌入式系统的定义、特点、应用领域、市场和发展趋势等内容。

时间:2学时2.嵌入式系统设计流程内容:介绍嵌入式系统设计的主要步骤和流程,包括需求分析、硬件设计、软件设计、测试和调试等内容。

时间:4学时3.嵌入式开发环境搭建内容:介绍嵌入式开发环境的基本配置和使用,包括Keil C51软件、ST-LINK下载器、ST-FLASH工具等。

时间:4学时4.嵌入式硬件设计内容:介绍嵌入式硬件设计的基本原理和方法,包括硬件选型、电路原理图设计、PCB布局和焊接等内容。

时间:10学时5.嵌入式软件设计内容:介绍嵌入式软件设计的基本原理和方法,包括汇编语言、C语言、编译、调试和下载等内容。

同时讲解如何使用方案手册和数据手册加速学习。

时间:16学时6.嵌入式应用程序设计内容:介绍嵌入式应用程序的设计和开发,包括LED灯的控制、按键的检测、温度传感器的读取、串口通信、SPI/I2C接口的应用等内容。

时间:14学时7.嵌入式系统测试和调试内容:介绍嵌入式系统的测试和调试方法,包括硬件测试、软件测试、仿真测试和调试工具等内容。

时间:4学时三、教学方法1.理论教学与实践结合,提高学生的实际操作能力。

2.讲授代码编写方法,由浅入深、由简到难地进行讲解。

3.组织实验、调试和考试等考核环节,促进学生知识的巩固和提高。

4.引导学生通过网络、图书馆等途径自主学习和获取嵌入式技术知识,培养学生的自主学习和创新能力。

四、教学手段1.教师演示和现场演示,帮助学生理解课程内容并进行实践操作。

《嵌入式软件设计》实验报告-动态库和静态库的制作和使用

《嵌入式软件设计》实验报告-动态库和静态库的制作和使用
进入/up-techpxa270/exp/basic/03_tty/host,里面有如下文件:
host_serial host_serial.c Makefile serial.c serial.h
(1)将串口设置文件serial.c单独封装成动态库。
(2)参考Makefile,使用动态库编译生成host_serial应用程序,验证动态库的正确性
(3)将串口设置文件单独封装成静态库。
(4)参考Makefile,使用静态库编译生成host_serial应用程序,验证动态库的正确性
四、实验结果与数据处理
五、分析与讨论
1.如果制作好的动态库不拷贝到/usr/lib,而是放在当前目录,这种情况下怎样使用该动态库?
2.如何在目标机使用动态、静态库?
六、教师评语
签名:
日:
成绩
《嵌入式系统软件设计》实验报告
实验序号:01实验项目名称:动态库和静态库的制作和使用
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的
1.熟悉linux的编译方法
2.掌握动态库、静态库的制作和使用。
二、实验设备(环境)及要求
硬件:PC机;PXA270试验箱
软件:PC机操作系统linux
三、实验内容与步骤

嵌入式课程设计报告

嵌入式课程设计报告
unsigned char *map; // 用于指向图像数据的指针
int frame_current;
int frame_using[VIDEO_MAX_FRAME]; // 这两个变量用于双缓冲
}; typedef struct _v4l_struct v4l_device;
这些数据结构都是由Video4Linux支持的,它们的用途如下:
(1)程序中定义的数据结构
struct _v4l_struct
{
int fd; // 保存打开视频文件的设备描述符
struct video_capability capability;
struct video_picture picture;
struct video_mmap mmap;
struct video_mbuf mbuf;
(1)在arm linux的kernel目录下make menuconfig。
(2)首先(*)选择Multimedia device->下的Video for linux。加载video4linux模块,为视频采集设备提供编程接口;
(3)然后在usb support->目录下(*)选择support for usb和usb camera ov511 support。这使得在内核中加入了对采用OV511接口芯片的USB数字摄像头的驱动支持。
三、课程设计设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机、ov511摄像头;
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMR-LINUX开发环境。
四、设计方案
本次课程设计采用arm10开发平台。该平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司 ARM920T处理器核的32位微控制器,资源丰富,带独立的16KB的指令Cache和16KB数据Cache、LCD控制器、RAM控制器、NAND 闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位ADC、Touch Screen接口、I2C接口、I2S接口、2个USB接口控制器、2路SPI,主频最高可达203MHz。在处理器丰富资源的基础上,还进行了相关的配置和扩展,平台配置了16MB 16位的Flash和64MB 32位的SDRAM。通过以太网控制器芯片DM9000E扩展了一个网口,另外引出了一个HOST USB接口。通过在USB接口上外接一个带USB口的摄像头,将采集到的视频图像数据放入输入缓冲区中。然后,对缓冲区中的视频数据进行压缩成帧,并把每一帧图片在网页中显示出来,每秒钟刷新两次,得到一个动态的视频界面,然后通过局域网访问该主机的网页,得到网络视频信息。本次课程设计主要是完成得到视频图片及网页刷新的过程。

《嵌入式课程设计报告--小游戏“石头剪子布”》

《嵌入式课程设计报告--小游戏“石头剪子布”》

《嵌入式课程设计》报告题目:石头剪子布班级:学号:姓名:一、选题背景实验准备:做游戏前,首先,自己详细看了《C语言程序设计》(教科书),理解了相关函数的用法和作用;另外,上网查询了很多相关资料,还有找了很多相关的游戏设计的代码,都详细的看了一遍,加深了对C语言以及相关内容进一步理解。

根据实际情况设计出一款比较理想的小游戏.设计题目的要求:①游戏要设置开始,结束操作控制②游戏要有时间提示即相关结果的提示语③游戏要能自动判断输赢,并显示最终比赛结果二、设计思路系统功能模块图:输入:计算机随机输入选择,用户输入选择,并将数据储存.计算:根据计算机和用户的选择,计算大小,并判断输赢,计算用户的胜负率,并储存。

输出:根据用户的输入,将用户的游戏结果显示在屏幕上。

三、主要问题的解决方法及关键技术游戏功能需求分析:输入数据:计算机随机输入数据;用户输入合法的数据存储数据:存储计算机的输入数据;存储用户的合法输入数据;判断用户的输赢:根据用户的选择,比较用户与计算机的胜负计算用户的胜负率:根据计算机的记录,计算用户的胜负次数的总和及概率四、程序流程图①获取计算机的输入②获取用户的合法输入③判断用户的输赢④记录用户的数据机胜负率五、源程序清单#include<stdio.h>#include<time。

h〉#include〈stdlib.h〉void main(){char r;/*用来存放用户的选择*/char dn;/*用来存放电脑的选择*/int s,q;double p,y,n,f,z;p=0;y=0;n=0;printf(”出锤子输入c\n出剪刀输入j\n出布输入b\n计算您的得分输入f\n可以一次输入许多会一次性出很多结果哦\n请输入您的选择:\n");srand(time(0)); /* 随机数生成器,设置rand种子值,用来获取计算机的输入*/do{do{s=rand()%3;switch(s){case 0 :dn=’c’;break;case 1 :dn=’j';break;case 2 :dn=’b';break;}do{scanf(”%c”,&r);/* 用来获取用户的合法输入*/}while(r!='c'&&r!=’b'&&r!='j'&&r!=’f’);if(r==’f'){z=y+n+p;f=100/z*(p/2.0+y);printf(”一共比了%g场\n赢了%g场\n输了%g场\n平局%g场\n",z,y,n,p);y=100/z*y;n=100/z*n;p=100/z*p;printf("您的胜率为%.3g%%\n您的败率为%.3g%%\n您平局率为%。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《嵌入式软件开发》课程设计报告课题名称:基于ARM11开发平台小球碰撞设计与实现
专业班级:计算机科学与技术
目录
1、使用技术介绍 (1)
2、需求分析 (3)
3、概要设计 (4)
4、详细设计 (5)
5、成果展示 (11)
6、设计总结 (13)
7、附录 (16)
图1.2
1.3 五点校准法
为了方便理解,我们首先引入2个概念,坐标和逻辑坐标。

物理坐标就是触摸屏上点的实际位置,我们通常以液晶上点的个数来度量。

逻辑坐标就是触摸屏上这一点被触摸时A/D转换后的坐标值。

由于电阻式触摸屏的电压成线性均匀分布,那么A/D转换后的坐标也成线性。

假如我们将液晶最左下角点对应的解摸屏上的点定为物理坐标原点A其物理坐标记为(XA=0,YA=0),其逻辑坐标记为(XLA,YLA)(不一定为0)。

那么触摸屏上任意一点B的逻辑坐标可表达为:XLB=XLA+KXXB,YLB=YLA+KYYB。

其中KX、KY分别为触摸屏X方向和Y方向的因子系数,这就像弹簧一样,拉力与弹簧伸长正比。

KX、KY可能为正,也可能为负,这根据具体触摸屏安装的方向和特性。

每个液晶触摸屏,我们也应该单独计算每一个触摸屏的K系数。

如果A点不是坐标原点,也是任意一点可以表达成:XLB=XLA+KX(XB-XA),YLB=YLA+KY(YB-YA)。

我们可以推出计算K系统的公式:KX=(XLB-XLA)/(XB-XA),KY=(YLB-YLA)/(YB-YA)。

在液晶上固定的位置显示五个点,因为是固定的位置,所以这五个点的物理坐标是预知的。

这五个点不应太靠边,因为边缘点对应的触摸屏线性一般不太好。

(1)首先在ABCDE对应的位置逐步用尖状物触摸,得到五个点的逻辑坐标。

(2)分别比较A和C、B和D的横坐标,如果差值不在允许范围(你自己规定一个即可,比如5),则重复操作(1)(2)步。

(3)分别比较A和B、C和D的纵坐标,如果差值不在允许范围(你自己规定一个即可,比如5),则重复操作(1)(2)(3)步。

(4)用2组数据计算X向K系数平均值KX={(XLB-XLA)/(XB-XA)+(XLD-XLD)/(XD-XC)}/2(5)用2组数据计算Y系数平均值KY={(YLA-YLC)/(YA-YC)+(YLB-YLD)/(YB-YD)}/2(6)将C点逻辑坐标作为基坐标,根据式2-2则触摸屏上任意一点F逻辑坐标与基坐标的关系为:XLF=XLC+KX(XF-XC)
YLF=YLC+KY(YF-YC)
根据这个公式,我们也可逆推出F点的物理坐标XF=(XLF-XLC)/KX+XC
YF=(YLF-YLC)/KY+YC
(7)用公式2-4求出E点逻辑坐标,并与(1)步得到的E点坐标比较,如果差值不在允许范围(你自己规定一个即可,比如5),则重复操作以上步骤直到满足要求。

(8)将基坐标XLC、YLC、XC、YC和KX、KY记录在存储设备,触摸屏校正完成。

二、需求分析
2.1 功能需求
主要功能:实验设计在基于嵌入式Linux操作系统,arm11开发平台上进行相关操作,要求在LCD显示屏内,分别控制2个不同颜色的小球在LCD屏矩形显示区内不停地运动,当小球碰到边界时,反射改变运动方向,当两个小球相碰时,小球改变运动方向,并统计碰撞的次数。

图2.1 小球碰撞界面
2.2 界面需求
实验界面简洁,显示为一个矩形边框,界面中有两个个小球,小球通过撞击边框和相互碰撞不断运动。

开始碰撞:运行程序会出现小球碰撞程序主界面,如图2.2,点击开始碰撞进入小球碰撞程序;
退出:点击退出,返回退出小球碰撞界面,如图2.3
图2.2 程序主界面
图2.主界面
图2.3 退出小球碰撞界面
三、概要设计
3.1 系统组成
小球碰撞系统基于ARM11平台,利用Linux系统的调用和PC机的调试通过使用触摸屏在LED显示屏上显示两个小球相撞。

如图3.1
图3.1 系统组成图
1.ARM11处理:采用real6410基于ARM11嵌入式处理器内核,主频800MHz;
2.LCD显示器:4.3寸,分辨率480ⅹ272,16位RGB565彩色;
3.触摸屏:电阻式,支持4096ⅹ4096;
4.网络:以太网,支持100Mbps,TCP/IP协议;
3.2 功能模块
工程文件夹:ball
头文件程序:gui.h;ts.h
主控模块:main.c
触摸校准模块:ts.c
通过主控模块main.c来调用图形库gui.h和校准模块ts.c,以及小球碰撞函数,来在显示屏上实现小球碰撞功能,如图3.2。

图3.2 功能模块图
图4.1 main函数流程图
4.2 ball_move()函数:
void ball_move()函数:实现画出小球并让小球运动,当两个小球碰壁或相撞时,小球向反方向弹开并计算碰撞次数,运动到初始位置时,小球停止。

如图4.2 函数原型:void ball_move(ball_t *b )
输入参数:b 结构体指针类型通过b的值来判断小球碰撞的次数
返回值:无返回值
小球运动算法:
1)初始化:
w=480; h=272;
x=old_x=100; y=old_y=100; r=16;
x_dir = 1; y_dir = -1;
2)如果x <= r,则x_dir = 1 碰到左边界,向右运动;
3)如果x+r >= w,则 x_dir = -1 碰到右边界,向左运动;
4)如果y<=r,则y_dir = 1 碰到上边界,向下运动;
5)如果y+r >= h则y_dir = -1 碰到下边界,向上运动;
6)更新圆心坐标:x += x_dir; y += y_dir;
7)在原来位置用背景色画(即清除);
8)在新位置用前景色画圆;
9)延时一段时间,使圆停留在屏幕上显示;
10)old_x = x; old_y = y;
11)如果运动到初始位置,则退出,否则跳转到2)
图4.2 ball_move函数流程图
4.3 get_hotpoint(int x, int y)函数:
get_hotpoint()函数:获得触摸屏幕上的热点,并判断是不是点击相应的位置,是返回一个值,不是返回-1,如图4.3
函数原型:get_hotpoint(int x, int y);
输入参数:x 整型,获得x坐标
y 整型,获得y坐标。

返回值:整型,返回r->v表示正常,返回-1表示异常
图4.3 获得热点函数流程图
4.4 小球函数所需要的相关函数
1)创建子进程fork():
一个进程,包括代码、数据和分配给进程的资源。

pid_t pid;
pid = fork(); //创建子进程
if (pid == -1) exit(-1); //创建失败
if (pid == 0)
{
//子进程
}
else
{
//父进程
}
2)延时函数usleep():
函数原型:
int usleep(useconds_t usec);
参数:
usec : 延时时间值,微秒。

包含头文件
#include <unistd.h>
3)进程之间共享内存通信:
创建或获取一个共享内存:
命令格式:
shmget(key,size,flag)
功能:
获得一个内部标识为shmid的共享存储区
语句格式:
Int shmid = int shmget(key_t key, int size, int flag );
参数说明:
key——共享存储区关键字,可以由用户指定,如果使用IPC_PRIVATE,其值由系统产生size——存储区的大小(字节数)。

如果存储区定义为字符型,则大小为定义的字符个数;如果存储区定义为整型,大小可以使用sizeof(int)加以定义。

flag——用户设置的标志或访问方式,与消息缓冲shmget中的含义相同,在实验中,可以使用0666|IPC_CREAT,表示任意进程可读写。

返回值:
正确返回:共享存储区的内部标识符shmid
错误返回:-1
4)将共享内存附接到进程虚拟地址空间:
五、成果展示
5.1 将相关的图片、驱动拷贝到用户目录下
图5.1 拷贝文件5.2 编译程序
图5.2 编译程序
5.3 连接目标机,运行程序
图5.3 运行程序5.4 登录界面展示
图5.4 登录界面5.5 小球碰撞界面展示
图5.5 小球碰撞界面
5.6 退出界面展示
图5.6 退出界面六、设计总结
七、附录
7.1 主函数程序
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include "gui.h"
#include "ts.h"
#define K_SIZE 4
typedef struct{
int x,y,r,c;。

相关文档
最新文档