嵌入式系统综合项目开发指导书.docx
《嵌入式系统综合项目开发指导书.docx》由会员分享,可在线阅读,更多相关《嵌入式系统综合项目开发指导书.docx(95页珍藏版)》请在冰豆网上搜索。
![嵌入式系统综合项目开发指导书.docx](https://file1.bdocx.com/fileroot1/2023-1/21/aafa2395-8c0c-4454-a990-3b4083eb7042/aafa2395-8c0c-4454-a990-3b4083eb70421.gif)
嵌入式系统综合项目开发指导书
嵌入式系统综合项目
开发指导书
DevelopingGuideBookofEmbeddedSystemComprehensiveproject
谢小云编著
江西理工大学应用科学学院
AppliedScienceCollage,
JiangxiUniversityofScienceandTechnology
前言
项目设计是实践教学体系中的一个重要环节,通过项目设计,可以融汇贯通各种理论知识,综合应用多门课程的知识完成一个应用系统的设计。
所谓“实践出真知”,嵌入式系统教学非常强调实践能力的培养,在基础验证性实验的基础上,进行综合设计性的项目设计,对培养学生的工程实践能力、项目开发能力,具有重要的作用。
本书从综合一体的角度出发,将嵌入式系统的理论教学与实践教学有机地结合起来,力求达到“知行合一,学以致用”的目标,把项目设计的项目渗透到理论教学及基础实验教学之中,将每一个项目设计项目分解成项目描述、项目需求、理论知识点和基础实验,让学生可以从整体上把握自己所做项目所涉及的技术,从而明确学习目标,避免学生忽视基础理论的学习。
本书注重“授人以渔”的教学原则,针对每一种项目设计项目,先给出一个完整的范例,作为学生学习研究的蓝本,而后再针对多个项目设计项目给出有限的指导信息,使得学生易于上手,又有足够的发挥空间,可以独立完成项目设计,提高实践能力。
本书共分4章,其中第1章是项目设计概述,主要介绍项目设计的目的、作用和要求,最后还对项目设计文档撰写的要求和规范进行了详细论述;第2章介绍了ADS1.2和Mini2440实验板的使用方法,帮助读者掌握了开发工具和开发平台的使用方法;第3章介绍了适用于实时操作系统应用软件开发的DARTS方法,并给出了洗衣机控制软件的设计过程;第4章是基于μC/OS-Ⅱ操作系统的嵌入式系统项目设计,在介绍μC/OS-Ⅱ操作系统的基础上,给出了一个完整的项目设计范例,并对10个课设项目给出了设计指导;
笔者在阅读大量的各类项目设计指导书的基础上,结合多年的嵌入式系统教学与研究经验,以及江西省教育厅教改课题“以工程项目为中心的嵌入式系统教学模式的研究(项目号:
JXJG08-84-1)”的研究成果,编写了本书,由于时间仓促,加之经验有限,本书还存在很多不足之处,恳请读者提出宝贵意见,以便在下一版本中加以改进,从而提高本书的质量。
2011年6月
第1章概述
1.1项目设计的目的
嵌入式系统的教学可以分为课堂理论教学、实验教学和项目设计三个层面。
这三个层面的目标有所不同。
理论学习的主要目标是掌握嵌入式系统的一般原理,例如实时调度策略、自动控制算法等;实验教学的主要目的是掌握嵌入式系统的主要开发流程和基本方法,例如开发工具链的使用、小型应用开发等;项目设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验,可以完成对基本实验的综合应用。
1.2项目设计的作用
综合设计与理论教学、实验教学以及毕业设计相互结合,形成综合一体的实训体系,对促进学生实践动手能力、工程开发能力,具有重要的作用。
所谓综合一体的实训体系是指以提升学生的工程实践能力为目标,综合考虑学生在校期间所有的实训环节,实施多层次相结合、课内外相结合、校内外相结合的措施,使得各个实训环节形成相互衔接逐步深入的整体性有机体系。
实施多层次相结合的实训方式,就是结合理论教学中选取的典型嵌入式系统工程项目,将其功能分解到实训的各个环节之中,使得嵌入式系统教学中所涉及的各种实验、实习、设计和训练在内容上相互衔接成为一体,学生可以由浅入深,逐步深入地完成嵌入式系统工程项目的开发实践。
比如嵌入式系统项目“基于触摸屏的信息查询系统”,可以按图1.1所示分解为四个层次,即理论教学、课程实验、综合设计和毕业设计。
其中,后三个层次涉及实践教学,相互之间是逐步深入的,课程实验为后面两个环节奠定了基础;综合设计所设计的简易信息查询系统没有使用嵌入式操作系统,只是将相关课程实验综合在一起,完成从基础验证性实验到综合拓展性实验的跨越;毕业设计就是在综合设计的基础上引入嵌入式Linux操作系统,从而设计一个功能完善的信息查询系统,完成综合拓展性实验到研究创新性实验的跨越。
图1.1嵌入式系统项目实训分层实例
综合设计及毕业设计等环节的嵌入式系统设计项目,需要以嵌入式系统理论教学为基础,必须将嵌入式系统项目渗透到理论教学之中,如图1.2所示,通过选取若干典型的嵌入式系统项目,将其按照课程教学大纲进行分解,提炼出每个项目所涵盖的知识点,形成相应教学案例;另一方面,可对这些项目进行归纳,得到项目描述及项目需求。
在实施教学的时候,可以先给学生介绍项目描述,使之对这些项目有总体认识,然后再结合教学案例,讲解相关知识点;在本课程结束之后,学生已掌握了课程的基础知识和基本技能;最后,学生可以根据项目需求,自己动手实现这些项目,从而将所学知识融会贯通,提升工程实践能力。
图1.2将嵌入式系统项目渗透到理论教学的方法
本指导书便是遵循上述原则和方法,针对每一个综合设计的课题,给出了相应的项目描述、项目需求、理论知识点、基础实验,并针对无嵌入式操作系统、μC/OS-Ⅱ操作系统,给出了一个完整的范例。
1.3项目设计的要求
(1)项目设计采用分组合作的形式实施,模拟公司项目研发的流程,每个学生担任项目组的不同角色,最大限度地接近真实情境,目的就是让学生深入了解公司项目研发的过程,培养团队合作的精神;
(2)必须按照工程化开发流程,撰写相应的文档和代码,最后还必须通过课设答辩。
课设成果包括设计文档、程序代码等。
文档必须按照规定的格式撰写;
(3)课设答辩必须撰写PPT,简要阐述所完成的主要工作,自我阐述时间控制在8分钟之内;自我阐述之后,还需回答指导教师所提的2-3个问题。
(4)考核办法及评分比例:
设计文档占30%,程序代码占30%,答辩占20%,考勤占20%。
1.4项目设计文档撰写要求及其规范
1.4.1文档撰写规范
(1)版面要求
A4纸打印,正文中任何部分不得超出边框;
页面设置:
上、下、左2.5厘米,右2厘米;
采用单倍行距,标准字符间距,西文、数字等符号采用timesnewroman字体;
论文题目用小2号黑体字如:
简易智能电风扇的设计
或
简易电子告示板的设计
目录:
用小4号宋体字;
正文:
小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号字置于插图的下方。
每个表格应有按章编号的序号和标题,标题用5号字置于表格的上方。
1.4.2文档内容要求
(1)封面及评分表
封面格式内容见下页例。
要求封面后的第一页为评分表。
(2)目录
全部标题层次有条不紊,整齐清晰。
章节号采用阿拉伯数字编号方法,第一级为1,2,3等,第二级为2.1,2.2,2.3等,第三级为2.1.1,2.1.1等,标题后应对应开始页码。
(3)正文
正文结构形式不做具体要求,内容可根据不同题目自行调整,但至少包括:
A、设计题目
B、对设计题目的分析
C、按照工程化开发方法对设计课题展开论述,包括需求分析、系统设计(包括概要设计和详细设计)、编码、调试等。
D、需求分析部分必须给出功能需求分析、性能需求分析、课题任务目标、输入输出的要求、数据需求、系统运行环境等内容。
具体可以参考文档“软件需求说明书(GB856T——88).doc”
E、系统设计部分包括概要设计和详细设计两个部分。
概要设计要根据需求划分任务模块,给出系统的软件构架图,设计数据接口(包括用户接口、外部接口、模块间接口),设计主要数据结构;详细设计要针对每个软件模块设计函数原型,定义入口参数及出口参数,采用流程图或伪代码的形式给出每个函数的流程图,分析模块之间的关系及限定条件等。
具体可以参考文档“概要设计说明书(GB8567——88).doc”及文档“详细设计说明书(GB8567——88).doc”。
F、编码部分不应将代码全部贴到正文中,而应将代码放到“6、附录”部分。
在设计文档的正文中,可以给出函数之间的调用关系图,简要介绍编码中用到的关键技术等。
具体可以参考文档“模块编码说明书.doc”。
G、调试及测试部分应论述所设计的调试及测试方案,调试及测试过程中遇到的问题,分析问题产生的原因,给出处理方法。
具体可以参考文档“测试分析报告(GB8567——88).doc”。
(4)总结
设计说明书最后要给出设计总结,包括:
对设计效果的分析、设计过程的心得体会、设计中发现的问题、关于项目设计的意见建议等。
(5)参考文献
包括:
设计用到的专业课、专业基础课课本,项目设计知道书,工具书,查阅、引用过的书籍、资料,电子文献等。
(6)附录
在附录中列出主要程序清单,流程图可保留在正文中。
江西理工大学应用科学学院
嵌入式系统综合项目开发
专业:
班级:
学号:
姓名:
设计题目:
年月
评分表
姓名
班级
学号
项目名称
指导教师
评分项目
满分分值
得分
设计文档(30分)
文档格式
封面
2
页面布局
4
目录格式
3
图表质量
2
页眉页脚
2
文档内容
内容完整性
6
内容逻辑性
5
内容正确性
6
程序代码(30分)
程序功能
15
编程规范
7
编程文档
8
答辩(20分)
课题陈述
7
问题答辩
10
是否超时
3
考勤(20分)
20
总评成绩
指导教师评语
签名:
年月日
教研室意见
签名:
年月日
答辩记录表
教
师
提
问
学
生
答
辩
情
况
记
录
成绩
答辩小组教师签名
第2章ADS1.2及Mini2440开发板使用方法
2.1ADS1.2集成开发环境简介
2.1.1ADS简介
ADS(ARMDeveloperSuite)是ARM公司推出的新一代ARM集成开发工具,用来取代ARM公司以前的开发工具SDT,它是一种快速而节省成本的完整软件开发解决方案。
ADS可以支持ARM7/9/10系列的CPU。
ADS由以下6部分组成:
1)代码生成工具
代码生成工具由编译器、汇编器和链接工具集组成。
ARM公司针对ARM系列的每一种结构都进行了专门的优化处理,这一点除了作为ARM结构的设计者ARM公司外,其它公司都无法办到。
ARM公司宣称,其代码生成工具最终生成的可执行文件可以比用其它公司的工具套件生成的文件小20%。
ADS提供ARM和Thumb的C/C++的编译器和汇编器。
2)集成开发环境
ADS集成了功能强大的CodeWarriorIDE集成开发环境,是一个直观、易用的环境,并集成所有的ARM开发工具,它包含有项目管理器、代码生成接口、语法敏感编辑器、源文件和类浏览器、源代码版本控制接口以及文本搜索引擎等。
3)调试器
ADS中包含有AXD,ARMSD等调试器。
AXD基于windows9X/NT,除了包括以前ARM调试器(ADW和ADU)的所有特性外,还增加以下新的特性:
✧新型的GUI。
✧改进的窗口管理。
✧改进的数据显示、格式及编辑。
✧完成集成的命令行接口。
✧调试会话设置的驻留。
使用AXD加上JTAG仿真器如MultiICE可实现目标系统的在线调试。
4)指令集模拟器
用户使用指令模拟器(ARMulator)无须任何硬件即可在PC机上完成一部分调试工作。
ADS中的指令集模拟器对基于内核处理器的ARM和Thumb提供精确的模拟。
用户可在硬件做好之前开发基准测试代码。
5)ARM开发包
ARM开发包由一些底层的例程和库组成,可以帮助用户快速开发基于ARM的应用和操作系统。
具体包括系统启动代码、串口驱动程序、时钟例程和中断处理程序等。
6)ARM应用库
ADS的ARM应用库完美和增强了SDT中的函数库,同时还包括一些相当有用的提供了源代码的例程。
ADS对一些广泛使用的函数提供了源代码。
这些函数不包含在标准的C/C++库中,可将这些库结合进应用程序中,从而降低开发难度。
2.1.2ADS系统配置
在编译连接时,一个工程项目中可以包括多个生成目标(Target)。
我们可以通过配置来生成不同的生成选项。
在ADS中,通过CodeWarrior中的DebugSettings对话框来设置一个工程项目的各生成目标的配置的。
DebugSettings对话框如图2.1所示。
图2.1DebugSettings对话框
从图中可以看出,DebugSettings对话框主要包括6个面板:
生成目标基本设置(Target)、编程语言选项设置(LanguageSettings)、连接器选项设置(Linker)、编辑器选项设置(Editor)、调试器选项设置(Debugger)、其他选项设置(Miscellaneous)。
在这里,我们讲述一下需要设定的选项的配置方法,其它的地方一般用默认配置。
这里主要讲述编程语言选项设置(LanguageSettings)和连接器选项设置(Linker)的配置。
(1)编程语言选项设置(LanguageSettings)。
编程语言选项设置如图2.2所示,用于设置ADS中语言处理工具的选项,包括汇编器的选项和编译器的选项,这些选项对于工程项目中的所有源文件都使用,不能单独设置某一个源文件的编译选项和汇编选项。
如图2.3所示,汇编器(ARMAssembler)的设置主要包括6个选项卡,分别是Target、ATPCS、Options、Predefines、ListingControl、Extras选项卡。
一般地,在编译连接之前,要根据实际的硬件情况,在Target选项卡里设置ARM体系结构版本号或处理器编号、系统中浮点部件的体系结构、字节顺序(内存模式)和初始状态。
其它的选项一般可以使用默认状态。
(2)编程语言选项设置
ADS支持两种编程语言(C\C++),有两种状态(ARM\THUMB状态),所以,有4个编译器的选项设置:
ARMCCompiler、ARMC++Compiler、ThumbCCompiler、ThumbC++Compiler编译器。
各个编译器包括的选项卡都差不多,ARMCCompiler编译器的选项如图2.3所示,包括8个选项卡,分别是:
TargetandSource、ATPCS、、Warnings、Errors、Debug/Optimization、Preprocessor、CodeGeneration和Extras选项卡。
一般在编译连接之前,要根据实际的硬件情况,在TargetandSource选项卡里设置ARM体系结构版本号或处理器编号、系统中浮点部件的体系结构、字节顺序(内存模式)和编程语言类型。
另外,在这里再介绍一下Debug/Optimization选项卡,它也体现了ADS在代码优化上的一些特色。
它主要用于控制编译器对源程序的优化级别以及生成的目标程序中包含的调试信息的多少。
如图2.4所示。
图2.2编程语言选项设置图2.3ARMCCompiler编译器的选项
DebugControl选项组用于控制目标文件中的调试信息。
选中复选框Enabledebugtablegeneration,指示编译器在目标文件中包含DWARF2格式的调试信息表,他支持源码级的调试。
如果不选中该复选框,生成的目标文件只有有限的调试信息。
选中复选框Includepreprocessorsymbols,编译器在目标文件中包含预处理的符号。
选中复选框Enabledebugofinlinefunction,编译器将用inline声明的函数处理为非嵌入的函数,这样可以在源码级调试该函数。
Optimizationlevel选项组提供了三个级别的调试。
Optimizationcriterion选项组提供时间和空间两种优化准则。
图2.4Debug/Optimization选项卡
(3)连接器选项设置(Linker)。
连接器选项设置如图2.5所示,用于设置于连接器相关的选项以及与fromELF工具相关的选项,如图2.6所示。
ARM连接器相关的选项(ARMLinker)包括5个选项卡,分别是Output、Options、Layout、Listings和Extras选项卡。
一般在编译连接前要设置一下Output选项卡,有时也要设置一下Layout选项卡,其它的一般可以使用默认设置。
Output选项卡用来控制连接器进行连接操作的类型。
ARM连接器可以有3种类型的连接操作。
对于不同的连接操作,需要设置的连接器选项有所不同。
Output选项卡如下图所示。
其中Linktype选项组中的单选按钮确定使用的连接方式。
选择单选按钮Partial时,连接器执行部分连接操作。
部分地连接生成ELF格式的目标文件。
这些目标文件可以再作为进一步连接时的输入文件,也可以作为armar工具的输入文件。
选择单选按钮Simple时,连接器根据连接器选项中指定的地址映射方式,生成简单的ELF格式的映像文件。
这时,所生成的映像文件中地址映射关系比较简单,如果地址映射关系比较复杂需要设置使用Scattered连接方式。
当选择单选按钮Scattered时,连接器根据Scatter格式的文件中指定的地址映射方式,生成地址映射关系比较复杂的ELF格式的映像文件。
在学习的初期阶段,一般选用默认的Simple格式,在该格式下,需要设置以下的连接器选项。
●ROBase文本框用于设置映像文件中RO属性输出段的加载时地址和运行时地址。
地址必须是字节对齐的。
如果没有指定地址值,则使用默认的地址值0x8000。
●RWBase文本框用于设置映像文件中包含RW属性和ZI属性输出段运行时域的起始地址。
地址必须是字节对齐的。
如果本选项与选项-split一起使用时,本选项将映像文件中的RW属性和ZI属性输出段的加载时地址和运行时地址都设置成文本框中的值。
●当选中Ropi复选框时,映像文件中的RO属性的加载时域和运行时域是位置无关的(PIPositionIndependent)。
否则,相应的域被标记为绝对的。
●当选中Rwpi复选框时,映像文件中的RW属性和ZI属性段的加载时域和运行时域是位置无关的(PIPositionIndependent)。
否则,相应的域被标记为绝对的。
●当选中Split复选框时,将包含RW属性和RO属性的输出段的加载时域分割为两个加载时域。
图2.5连接器选项设置图2.6ARMfromELF选项
fromELF工具可以将ARM连接器产生的ELF格式的映像文件转换成其它格式的文件。
相关的选项如下所述。
●Outputformat下拉列表框用于选择目标文件的格式。
他可能的取值有9种,分别是ExecutableAIF(可执行的AIF格式的映像文件)、NonexecutableAIF(非可执行的AIF格式的映像文件)、Plainbinary(BIN格式映像文件)、IntellecHex(IHF格式映像文件)、Motorola32bitHex(Motorola32位S格式映像文件)、Intel32bitHex(Intel32位格式映像文件)、VerilogHex(Verilog十六进制映像文件)、ELF格式映像文件和Textinformation(文本信息)。
●Outputfilename文本框用于设置fromELF工具的输出文件的名称。
●Textformatflags选项组在当输出文件为文本信息时,用于控制文本信息内容的选项,包括8个复选项。
选中复选框Verbose,连接器显示关于本次连接操作的详细信息。
其中包括目标文件以及C\C++运行时库信息;选中复选框Disassemblecode,连接器显示反汇编代码;选中复选框Printcontentsofdatasections,连接器显示数据段信息;选中复选框Printdebugtable,连接器显示调试表信息;选中复选框Printrelocationinformation,连接器显示重定位信息;选中复选框Printsymboltable,连接器显示符号表;选中复选框Printstringtable,连接器显示字符串表;选中复选框Printobjectsizes,连接器显示目标文件的大小信息。
以上讲述了在使用ADS时,需要配置的地方的详细情况,在建立一个工程项目后,连接编译前,用户可以更深刻地体会这些设置。
2.1.3工程项目管理
在ADS的CodeWarrior中是通过工程项目来组织用户的源文件、库文件、头文件以及其他的输入文件。
一个工程项目至少有一个生成目标,每个生成目标定义了一组选项(也就是上一节讲到配置设置),用于生成特定的目标文件。
本节一步步讲述工程项目管理的使用。
我们首先要建立一个工程。
其步骤如后文的图所示。
(1)开始程序ARMDeveloperSuit1.2CodeWarriorforARMDeveloperSuit。
图2.7启动ADS1.2图2.8创建一个新工程
(2)FileNew,打开新建对话框。
从图2.8可以看出,我们可以新建一个工程、源文件或者目标文件。
这里我们新建一个ARMExecutableImage。
在Projectname的文本框里输入工程项目的名称,比如ads_lx,在Location的文本框输入要建立的工程项目的路径或者点击文本框旁边的set…设置工程项目的路径。
点击确定,就新建了一个工程项目,如图2.9。
我们可以看到,项目管理器中File视图、LinkOrder视图和Target视图。
File视图包含了该工程项目中所有文件的列表。
这些文件可以根据一定的逻辑关系进行分组。
对于不包含在当前生成目标中的文件,在File视图中也给了出来。
与File视图不同,LinkOrder视图包含了在当前生成目标中的所有输入文件,用来控制各输入文件在连接时的顺序。
默认情况下,LinkOrder视图中各输入文件的排列顺序与File视图中各文件的排列顺序是一样的,但可以通过LinkOrder来改变输入文件的顺序,从而使生成的