嵌入式系统原理与设计课程设计.docx
《嵌入式系统原理与设计课程设计.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理与设计课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
嵌入式系统原理与设计课程设计
《嵌入式系统原理与设计》课程设计
一、课程设计目的
嵌入式系统的教学可以分为课堂理论教学、实验教学和课程设计三个层面。
这三个层面的目标有所不同。
理论学习的主要目标是掌握嵌入式系统的一般原理,例如嵌入式系统的基本概念、ARM指令、驱动设计和应用设计的一般方法等等。
实验教学的主要目的是掌握嵌入式系统的主要开发流程和基本方法,例如开发工具链的使用、驱动程序开发和小型应用开发等。
课程设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验。
二、课程设计要求
1、学生按题目分组参加课程设计,要求每个学生有明确的分工,每组成员最多不超过4人;
2、必须按照工程化开发流程,撰写相应的文档和代码,最后还必须通过课设答辩。
课程设计成果包括设计文档、程序代码等。
文档必须按照规定的格式撰写(具体见“五、课程设计写作细则”,否则必须调整好格式才能参加答辩。
3、考核办法及评分比例:
设计文档占60%,程序代码占40%。
三、课程设计流程
1、准备阶段
针对题目所涉及的基本实验(详见“四、课程设计参考题目”),进行分析研究,掌握课题所需要的基本知识,包括理论部分及实验部分的基础知识。
2、需求分析
根据课设题目进行需求分析,各小组组织召开需求分析研讨会,充分挖掘潜在的需求。
3、设计阶段
根据需求分析,进行系统设计,可以分为两步:
(1)概要设计
概要设计主要完成系统软件模块的划分,给出软件总体框图,分析数据之间的关系,确定所需要的数据结构。
(2)详细设计
详细设计阶段针对概要设计所划分出的软件模块,设计函数原型、数据结构,确定函数之间的接口,并细化每个函数的设计,给出函数的流程图。
4、编码阶段
根据设计阶段所提交的系统设计说明书,编写程序。
要注意采用统一的编程规范,注重代码的合理注释;在保证功能的基础上,提高算法的效率。
5、程序调试
利用实验室的实验箱,对所编写的代码进行调试,从而实现在需求分析说明书中所提出的需求。
在调试过程中,应将所遇到的问题记录下来,分析产生的原因,提出解决的办法。
6、撰写课设综合论文及答辩课件
综合课程各步所得成果,对课程进行总结,撰写设计论文,并撰写答辩PPT,准备答辩。
四、课程设计参考题目
要求以下各课题都基于嵌入式Linux操作系统来设计。
1、串口驱动程序的设计(字符设备驱动)
(1)课程设计目的
通过本课程设计,了解串口驱动程序的架构及编程方法,掌握串口的使用方法。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解;
●掌握开发工具链的构建方法,能独立进行系统开发操作;
●掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令;
●熟悉linux内核的知识以及原理,掌握定制Linux内核的方法;
●基于Linux操作系统,以及GEC2440实验箱一套,编写串口驱动程序,把串口挂载目标板上并通过串口进行通信。
(3)课题人数:
4人
2、USB接口驱动程序的设计(块设备驱动)
(1)课程设计目的
掌握Linux系统下USB内核及USB主控制器驱动模块的配置及编译,了解Linux系统下USB主机的软件结构,掌握在GEC2440B教学试验箱下的U盘的使用方法。
。
2.了解Linux系统下USB主机的软件结构。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解;
●掌握开发工具链的构建方法,能独立进行系统开发操作;
●掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令;
●熟悉linux内核的知识以及原理,掌握定制Linux内核的方法;
●基于Linux操作系统,以及GEC2440实验箱一套,编写USB驱动程序,把USB挂载目标板上并进行文件读写操作测试。
(3)课题人数:
4人
3、有线网卡驱动程序的设计(网络设备)
(1)课程设计目的
掌握基本的网络设备的驱动程序设计,熟悉常用网络服务,熟悉常用网络服务。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解;
●掌握开发工具链的构建方法,能独立进行系统开发操作;
●掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令;
●熟悉linux内核的知识以及原理,掌握定制Linux内核的方法;
●基于Linux操作系统,以及GEC2440实验箱一套,编写有线网卡驱动程序;
●学习linux内核中对网卡驱动进行配置,对根文件系统和应用程序的相应文件进行配置。
(3)课题人数:
4人
4、网络聊天程序的设计
网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,作为一种典型的网络应用,编写网络聊天程序是学习基于Linux的网络编程的有效方法。
(1)课程设计目的
本课题设计是在使用Linux线程和Socket接口的基础上,编写网络聊天程序,从而掌握Linux应用程序开发的基本方法,练习Linux线程及Socket编程的方法,从而将所学知识融会贯通。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●实现在服务器的控制下,完成多人聊天,鉴于实验条件的限制,采用单机多终端模拟方式。
●在服务器端,使用多线程机制,为多个用户服务。
●服务器能够对要求接入的客户端进行身份识别,完成聊天数据的转发,并能够将不同用户聊天记录存档。
●要求给出编译所用到的Makefile文件。
(3)课题人数:
4人
5、守护进程的设计
守护进程是Linux中一类特殊的进程,是实现系统服务的常见方式,也是需要长时间运行于后台的用户程序所常采用的一种形式,因此,学习如何编写守护进程,对于全面掌握Linux程序设计具有重要意义。
(1)课程设计目的
本课程设计在掌握Linux进程的创建的基础上,掌握守护进程的实现方式,掌握文件的操作方法,还应掌握日志文件的操作方法。
(2)课程设计要求
●实现守护进程功能。
●每隔10秒将当前运行的进程信息记录到日志文件中。
●创建进程,将上述信息在屏幕上显示出来。
●要求给出编译所用到的Makefile文件。
(3)课题人数:
4人
6、多进程程序的设计
嵌入式系统软件的实时性是其非常重要的特性,采用多进程设计可以提高系统的效率,增强系统的实时性,因此,掌握多进程编程,是学习嵌入式Linux必须达到的目标
(1)课程设计目的
本课程设计通过设计多进程程序,掌握创建多进程的方法,掌握通过有名管道实现进程之间的通信,掌握进程中运行现有程序的方法。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●创建子进程1及子进程2。
●子进程1创建子进程A、B,子进程1等待子进程A、B退出后退出。
●子进程A、B之间通过有名管道FIFO1进行通信,实现生产者-消费者功能。
●子进程2创建子进程C、D,子进程C运行“ls–l”命令,子进程D通过有名管道FIFO1作为消费者与进程A通信。
●要求给出编译所用到的Makefile文件。
(3)课题人数:
4人
7、进程通信机制的应用
进程管理是操作系统的重要功能,进程之间要完成相互之间的同步与互斥,实现相互之间的通信,Linux中有多种进程间通信的方式,掌握进程间通信程序的设计,是开发多进程实时应用软件必须的目标。
(1)课程设计目的
通过本课程设计,掌握进程的创建方法,掌握消息队列、信号量等通信机制的实现方法。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●编写3段程序,分别使用1个终端运行它们,使用下面的通信机制完成所需功能。
●程序1:
接受用户输入的信息,包括:
help、alarm1、alarm2、quit,并将这些信息分别发送给程序2和程序3。
●程序2与程序1通过消息队列1进行通信,当收到help信息后,打开帮助文件helpfile,读取其中的内容,显示出来;当收到quit后,退出程序。
●程序3创建2个子进程。
程序3与程序1通过消息队列2进行通信,当收到alarm1时,通过信号量1通知子进程1报警(向屏幕输出报警信息);当收到alarm2时,通过信号量2通知子进程2报警(向屏幕输出报警信息)。
●要求给出编译所用到的Makefile文件。
(3)课题人数:
4人
8、读者-写者问题
一个数据文件可以被多个进程共享,其中,有些进程要求读(reader进程),而另一些进程要求对数据进行写或修改(writer进程)。
允许多个reader进程同时读一个共享对象,因为读操作不会使数据文件混乱,但绝不允许一个writer进程和其他reader进程或writer进程同时访问共享对象。
所谓“读者-写者问题”是指保证一个writer进程必须与其他进程互斥访问共享对象的同步问题。
(1)课程设计目的
通过本课程设计,要求掌握Linux进程的创建方法,掌握文件的操作方法,掌握信号量的使用方法。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●创建一个文件sharefile作为共享数据存放的文件。
●创建2个reader进程及2个writer进程,4个进程共享使用文件sharefile。
●使用信号量机制,编写“读者-写者问题”的实现代码,使得每个writer进程与其他进程互斥访问共享文件sharefile。
●要求给出编译所用到的makefile文件。
(3)课题人数:
1人
9、过桥问题
一座小桥(最多只能承重2个人)横跨南北两岸,任意时刻同一方向只允许一个人过桥,南侧桥段和北侧桥段较窄只能通过一人,桥中央一处宽敞,允许两个人通过或歇息。
因此,过桥问题就是采用某种机制,使得两岸的人可以顺利地过桥,同时又能保证桥的安全性。
(1)课程设计目的
本课题设计根据上述对于过桥问题的描述,使用Linux的信号量机制编程解决该问题。
通过本课设掌握Linux进程创建的方法,掌握信号量使用方法。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●编写2段程序,程序1创建3个子进程,分别编号A、B、C,用于模拟从南岸前往北岸的人;程序2创建3个子进程,分别编号C、D、E,用于模拟从北岸前往南岸的人。
●通过向屏幕输出语句模拟过桥过程,如输出“南往北-到桥中间”表示从南岸前往北岸的人到达了桥中间;输出“南往北-到达北岸”表示从南岸前往北岸的人到达了北岸。
通过观察输出语句,可以发现过桥时是否发成冲突。
●使用Linux的信号量机制,编写解决过桥问题的代码。
●要求给出编译所用到的makefile文件。
(3)课题人数:
1人
10、和尚挑水问题
某寺庙中有小和尚、老和尚若干人。
庙内有一水缸,由小和尚提水入缸,供老和尚饮用。
水缸可容纳30桶水,每次入水、取水仅为1桶,不可同时进行。
水取自同一水井,水井路窄,每次只能容纳一个水桶取水,设水桶个数为5个。
和尚挑水问题就是使用某种机制,能够使得若干名老和尚可以顺利地喝到水,若干名小和尚之间能够有条不紊地往水缸中入水。
(1)课程设计目的
本课题设计根据上述对于和尚挑水问题的描述,使用Linux的信号量机制编程解决该问题。
通过本课设掌握Linux进程创建的方法,掌握信号量使用方法。
(2)课程设计要求
本课题所设计的系统要求实现以下功能。
●编写2段程序,程序1创建3个子进程,分别编号A、B、C,用于模拟3名老和尚;程序2创建3个子进程,分别编号C、D、E,用于模拟3名小和尚。
●通过向屏幕输出语句模拟过桥过程,如输出“目前水缸水量为10桶”表示目前水缸中有存水10桶;输出“小和尚取水成功”表示从水井中成功取到1桶水;输出“小和尚倒1桶水到水缸中”表示小和尚将1桶水倒入水缸中。
通过观察输出语句,可以发现执行过程是否发成冲突。
●使用Linux的信号量机制,编写解决和尚挑水问题的代码。
●要求给出编译所用到的makefile文件。
(3)课题人数:
2人
11、其它应用程序的课程设计:
GEC2440实验箱Linux基础应用实验2.2~2.8:
2.2 文件IO实验
2.3 进程间通信实验
2.4 多线程实验
2.5 网络编程
2.6 QTHelloWorld
2.7 QT跑马灯
2.8 QT聊天
五、课程设计写作细则
1、书写格式
A4纸打印,正文中任何部分不得超出边框。
页面设置:
上、下、左2.5厘米,右2厘米。
采用单倍行距,标准字符间距,西文、数字等符号采用timesnewroman字体。
题目用小2号黑体字如:
U-BOOT在嵌入式实验箱上的移植
正文:
小4号宋体字
参考文献:
5号宋体字。
图表字号:
5号宋体字
2、标题层次
全部标题层次有条不紊,整齐清晰。
章节号采用阿拉伯数字编号方法,第一级为1,2,3等,第二级为2.1,2.2,2.3等,第三级为2.1.1,2.1.1等,如此类推。
各层标题均单独占行书写
第一级标题(章)用3号黑体字,居中。
第二级标题(节)用4号黑体字,居左顶格。
第三级标题用小4号黑体字,居左顶格。
3、页眉页脚
页眉:
奇数页书写“华南理工大学广州学院电信学院课程设计”,偶数页书写“姓名:
设计题目”,均采用小5号宋体字。
页脚:
页码居中。
4、参考文献
书写格式按国标GB7714-87
顺序为:
序号.著者.文献题名.文献类型标识.出版地.出版者.出版年.起止页码。
包括:
设计用到的专业课、专业基础课课本,课程设计知道书,工具书,查阅、引用过的书籍、资料,电子文献等。
5、公式
公式应居中书写,有编号,编号用圆括号包括后放在公式右边行末。
6、插图
每幅插图应有图序和图题,图题5号字。
六、课程设计内容要求
1、封面及评分表
封面格式内容见下页例。
要求封面后的第一页为评分表。
2、目录
全部标题层次有条不紊,整齐清晰。
章节号采用阿拉伯数字编号方法,第一级为1,2,3等,第二级为2.1,2.2,2.3等,第三级为2.1.1,2.1.1等,标题后应对应开始页码。
3、正文
正文结构形式不做具体要求,内容可根据不同题目自行调整,但至少包括:
A、设计题目
B、对设计题目的分析
C、按照工程化开发方法对设计课题展开论述,包括需求分析、系统设计(包括概要设计和详细设计)、编码、调试等。
D、需求分析部分必须给出功能需求分析、性能需求分析、课题任务目标、输入输出的要求、数据需求、系统运行环境等内容。
E、系统设计部分包括概要设计和详细设计两个部分。
概要设计要根据需求划分任务模块,给出系统的软件构架图;详细设计要针对每个软件模块设计函数原型,定义入口参数及出口参数,采用流程图或伪代码的形式给出每个函数的流程图,分析模块之间的关系及限定条件等。
F、编码部分不应将代码全部贴到正文中,而应将代码放到“6、附录”部分。
在设计文档的正文中,可以给出函数之间的调用关系图,简要介绍编码中用到的关键技术等。
G、调试及测试部分应论述所设计的调试及测试方案,调试及测试过程中遇到的问题,分析问题产生的原因,给出处理方法。
4、总结
设计说明书最后要给出设计总结,包括:
对设计效果的分析、设计过程的心得体会、设计中发现的问题、关于课程设计的意见建议等。
5、参考文献
包括:
设计用到的专业课、专业基础课课本,课程设计知道书,工具书,查阅、引用过的书籍、资料,电子文献等。
6、附录
在附录中列出主要程序清单,流程图可保留在正文中。
嵌入式系统原理与设计
课程设计
专业:
班级:
学号:
姓名:
设计题目:
2015年12月
课程设计评分表
姓名
班级
学号
课设题目
指导教师
评分项目
满分分值
得分
设计文档(40分)
文档格式
封面
3
页面布局
5
目录格式
4
图表质量
2
页眉页脚
2
文档内容
内容完整性
8
内容逻辑性
6
内容正确性
10
程序代码(40分)
程序功能
25
编程规范
7
编程文档
8
答辩(20分)
课题陈述
7
问题答辩
10
是否超时
3
总评成绩
指导教师评语
签名:
年月日