嵌入式课程设计东北石油大学剖析.docx

上传人:b****8 文档编号:10233769 上传时间:2023-02-09 格式:DOCX 页数:29 大小:1.62MB
下载 相关 举报
嵌入式课程设计东北石油大学剖析.docx_第1页
第1页 / 共29页
嵌入式课程设计东北石油大学剖析.docx_第2页
第2页 / 共29页
嵌入式课程设计东北石油大学剖析.docx_第3页
第3页 / 共29页
嵌入式课程设计东北石油大学剖析.docx_第4页
第4页 / 共29页
嵌入式课程设计东北石油大学剖析.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

嵌入式课程设计东北石油大学剖析.docx

《嵌入式课程设计东北石油大学剖析.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计东北石油大学剖析.docx(29页珍藏版)》请在冰豆网上搜索。

嵌入式课程设计东北石油大学剖析.docx

嵌入式课程设计东北石油大学剖析

 

东北石油大学

课程设计

课程嵌入式系统课程设计

题目基于定时器的跑马灯设计

院系计算机与信息技术学院

专业班级电子信息科学与技术13-2班

学生姓名

学生学号

指导教师

 

2009年7月10日

东北石油大学课程设计任务书

课程嵌入式数字信号处理课程设计

题目基于定时器的跑马灯设计

专业电子信息科学与技术姓名学号

主要内容、基本要求等

一、主要内容:

利用OK6410开发板、微机和RVDS2.2开发环境,使用C语言并结合汇编语言实现基于定时器的跑马灯程序。

从开发板的电路图上可以看到,发光二极管LED的一端连接到了ARM的GPIO,另一端经过一个限流电阻接电源VCC3。

当GPIO口为低电平时,LED两端产生电压降,这时LED有电流通过并发光。

反之当GPIO为高电平时,LED将熄灭。

采用定时器方式,需要设置一些寄存器,并且在定时器中断处理函数中实现LED灯的定时花样显示。

二、基本要求:

1.要求熟练掌握裸机嵌入式开发的流程及方法。

2.要求熟悉S3C6410的GPIO、定时器及中断的配置方法。

3.编程实现开发板上四个LED灯定时亮灭,定时时间及LED灯花样显示方式自定。

4.LED灯亮灭间隔,要求采用定时器的中断方式完成精确的定时。

三、扩展要求

要求通过查阅设备硬件手册,进一步熟悉S3C6410的工作原理,掌握主要接口技术。

按照规范写出论文,要求字数在4000字以上,并进行答辩。

论文内容包括概述(学习、调研、分析、设计的内容摘要)、嵌入式数字信号处理技术的现状和发展趋势、对OK6410开发板和RVDS2.2开发环境的介绍,跑马灯实验的设计过程等(包括开发环境的建立、程序的编写、编译、调试、下载运行等)。

完成期限

指导教师

专业负责人

2016年7月日

东北石油大学课程设计成绩评价表

课程名称

嵌入式数字信号处理课程设计

题目名称

基于定时器的跑马灯设计

学生姓名

学号

指导教师姓名

职称

序号

评价项目

指标(优秀)

满分

评分

1

选题难度

选题难度较高,或者对原题目进行了相当程度的改进。

10

2

工作量、工作态度和出勤率

工作量饱满,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。

10

3

课程设计质量

按期圆满的完成了规定的任务,方案设计合理,思考问题全面,系统功能完善。

35

4

报告质量

问题论述思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。

30

5

回答问题

在进行课程设计程序系统检查时,能正确回答指导教师所提出的问题。

10

6

创新

工作中有创新意识,对前人工作有改进或有应用价值。

在进行系统检查时能对创新性进行说明,并在报告中有相应的论述。

5

总分

评语:

指导教师:

年月日

摘要

本次实验的内容是基于定时器的跑马灯设计,一共包括五个章节。

报告最开始对本次课程中所涉及到的一些简单工具的简要介绍,包括OK6410开发板、ARM公司的RVDS和DNW串口工具等。

然后对基于定时器的跑马灯系统做了简要分析,包括实验的目的、原理、功能等。

接下来详细介绍了系统的硬件模块,包括定时器模块和LED模块。

还有系统的软件模块,包括主函数模块、定时器初始化模块、LED初始化模块和中断服务函数。

对课程设计的内容做完详细介绍后,就记录了系统的详细运行情况,最后是对课程设计的总结和参考文献的介绍。

关键词:

OK6410;ARM;RVDS;跑马灯

目录

第1章概述1

1.1嵌入式概述1

1.2嵌入式的应用1

1.3OK6410开发板2

1.4RVDS开发工具3

1.5DNW串口工具4

第2章认识开发环境及流程6

2-1实验目的6

2-2实验设备6

2-3实验内容6

2-4实验原理6

2-5实验电路7

2.6实验代码8

2-7实验步骤9

2-8实验结果9

第3章基于定时器的跑马灯系统分析10

3.1设计目的10

3.2功能说明10

3.3实验内容10

3.4开发工具10

3.5实验原理10

第4章基于定时器的跑马灯的程序详解15

4.1LED初始化模块15

4.2定时器初始化模块15

4.3中断服务函数模块16

4.4主函数模块16

第5章基于定时器的跑马灯程序的编译与下载17

5.1程序的编译17

5.2程序下载18

5.3运行结果20

结论21

参考文献22

第1章概述

1.1嵌入式概述

IEEE(InstituteofElectricalandElectronicsEngineers,美国电气和电子工程师协会)对嵌入式系统的定义:

"用于控制、监视或者辅助操作机器和设备的装置"。

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。

通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。

事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。

国内普遍认同的嵌入式系统定义为:

以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

随着计算机与通信技术的融合、计算机的无处不在和多媒体信息随手可得的世界信息化发展大趋势的日益明朗,嵌入式系统得到了前所未有的蓬勃发展。

嵌入式技术是现今非常流行的一项技术。

嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,用术语表示就是固件(firmware),终端用户很难或者不可能改变固件。

1.2嵌入式的应用

嵌入式软件技术广泛应用于国防、工控、家用、商用、办公、医疗等领域,几乎所有耳熟能详的创新产品都是用嵌入式软件技术对传统电子领域进行智能化改造的结果。

这些应用中,可以着重于在控制方面的应用。

就远程家电控制而言,除了开发出支持TCP/IP的嵌入式系统外,加点产品控制协议也需要定制和统一。

同样道义,所有基于网络的远程控制期件都需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。

所以,开发和探讨嵌入式系统有着十分重要的意义。

1.工业控制:

基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。

就传统的工业控制产品而言,低端型采用的往往是8位单片机。

但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。

2.交通管理:

在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。

目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。

3.信息家电:

这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。

即使你不在家里,也可以通过电话线、网络进行远程控制。

在这些设备中,嵌入式系统将大有用武之地。

4.家庭智能管理系统:

水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准确和更安全的性能。

目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。

5.POS网络及电子商务:

公共交通无接触智能卡(ContactlessSmartcard,CSC)发行系统,公共电话卡发行系统,自动售货机,各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。

6.环境工程与自然:

水文资料实时监测,防洪体系及水土质量监测、堤坝安全,地震监测网,实时气象信息网,水源和空气污染监测。

在很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。

1.3OK6410开发板

OK6410是基于ARM11内核来设计的,它相对于ARM9不仅仅是速度性能的提升那么简单,而在其他先进功能上更具学习开发的价值,OK6410内部集成了视频流编解码的功能,工程师可以对照研究其工作机理;2D/3D加速的应用可以使学习者尝试这方面的探索;另外,只有在OK6410上才可以完美运行Android等充满潜力的操作系统,当然,OK6410还具有先进的OTG接口,能支持SLC/MLC等主流的NANDFLASH。

ARM11微处理器是一种高性能、低功耗的准64位微处理器。

对于目前大多数嵌入式应用,一个真正的64位处理器仍然被认为是不必要的,其巨大的功耗和面积让人难以接受。

对此,ARM11选择了一个折中的方案,以较小的代价,部分实现了一个64位微架构。

ARM11只在处理器整数单位和高速缓存之间,以及在整数单位和协处理器之间实现了64位数据总线。

这些64位数据道路允许处理器在一个时钟周期中同时获取两条指令,还允许在一个时钟周期执行多个数据读写指令。

[2]这使得ARM11在执行很多特定序列的代码时能够达到非常高的性能,特别是那些允许数据搬移与数据处理并行处理的代码序列。

OK6410电路板如图1-1所示:

图1-1OK6410电路板

1.4RVDS开发工具

RVDS是本次实验的编译工具,由ARM公司生产。

ARM公司是全球32位嵌入式芯片设计的领跑者,基于ARM内核的芯片已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

RVDS(RealViewDevelopmentSuite)是ARM公司最新推出的面向SOC和大型复杂应用程序的高端开发工具,被业界称为最好的ARM开发工具。

RVDS包含有四个模块:

IDE:

RVDS中集成了EclipseIDE,用于代码的编辑和管理。

支持语句高亮和多颜色显示,以工程的方式管理代码,支持第三方Eclipse功能插件。

RVCT:

RVCT是业界最优秀的编译器,支持全系列的ARM和XSCALE架构,支持汇编、C和C++。

RVD:

是RVDS中的调试软件,功能强大,支持Flash烧写和多核调试,支持多种调试手段,快速错误定位。

RVISS:

是指令集仿真器,支持外设虚拟,可以使软件开发和硬件开发同步进行,同时可以分析代码性能,加快软件开发速度。

有以下优点:

1编译后生成的代码小,执行效率高

2支持Linux操作系统

RVDS可以运行在Linux操作系统上,支持Linux应用程序的开发和调试。

3调试功能强大

RVD是RVDS内部集成的调试软件,具有以下ADS所不具备的重要功能:

(1)条件断点

(2)数据断点

(3)芯片外设描述文件

(4)支持Flash烧写

(5)可以实现连续调试

(6)多核调试

4Trace和Profile功能

Trace和Profile功能主要有以下三个主要功能:

(1)对程序进行优化

(2)对程序进行代码测试

(3)调试

5外设虚拟

6RVIJTAG仿真器[7]

1.5DNW串口工具

DNW是三星公司开发的一个功能强大串口调试软件,用于arm的开发和学习。

除了传统同类软件具有的功能外,还相当于一个WINXP自带的超级终端,不过有了一些超级终端没有的功能,比如用USB传输文件等。

软件采用多线程技术,杜绝了保存数据时产生丢包的可能,性能稳定可靠。

使用前要对其进行相应的配置,本次实验配置的位/秒为115200,使用COM1口,下载地址为0x57e00000,如图1-2所示。

然后创建连接,如图1-3所示。

图1-2DNW配置图

图1-3DNW创建连接图

第2章认识开发环境及流程

2-1实验目的

1.熟悉RVDS2.2开发环境,掌握程序编辑、编译、调试、下载及运行方法。

2.熟悉S3C6410内部寄存器的基本操作方法和GPIO控制方式,为后续较复杂实验奠定基础。

3.熟悉在ARM裸机环境下的C语言编程。

2-2实验设备

OK6410开发板、PC机、AXD仿真调试,USB下载线,串口线。

2-3实验内容

建立RVDS开发环境。

采用循环控制方式实现对开发板上发光二极管LED的跑马灯控制。

2-4实验原理

从电路图上可以看到,发光二极管LED的一端连接到了ARM的GPIO,另一端经过一个限流电阻接电源VCC3。

当GPIO口为低电平时,LED两端产生电压降,这时LED有电流通过并发光。

反之当GPIO为高电平时,LED将熄灭。

注意亮灭之间要有一定的延时,以便人眼能够区分出来。

表2-1控制LED的寄存器

表2-2端口配置寄存器

表2-3端口数据寄存器

表2-4端口上拉电路使能寄存器

2-5实验电路

1.底板原理图(LED)

图2-5底板原理图(LED)

2.核心板原理图(LED)

图2-6核心板原理图(LED)

2.6实验代码

Main.c文件:

#definerGPMCON(*(volatileunsigned*)(0x7F008820))

#definerGPMDAT(*(volatileunsigned*)(0x7F008824))

#definerGPMPUD(*(volatileunsigned*)(0x7F008828))

voidmsDelay(inttime){

volatileunsignedinti,j;

for(i=0;i<2000000;i++)

for(j=0;j

}

voidGPIO_Init(void){

rGPMCON=0x11111;

rGPMPUD=0x00;

rGPMDAT=0X1F;

}

voidLedTest(void){

volatileunsignedinti;

while

(1){

for(i=0;i<4;i++){

rGPMDAT=~(1<

msDelay(10);

}

}

}

voidLedMain(void){

GPIO_Init();

LedTest();

}

Init.s文件:

IMPORTLedMain

AREA|C$$code|,CODE,READONLY

globalstart

ENTRY

startblLedMain

END

2-7实验步骤

1.准备好实验环境,将usb和串口线与开发板和PC连接。

2.将串口线的一端插在PC的串口上,另一端插在开发板的‘COM0’上(此处应查看设备管理器的COM端口,需与其保持一致)。

打开DNW.EXE软件,给开发板上电,使Uboot停在菜单处(在系统引导时按空格键)。

3.打开软件‘CodeWarriorforRVDS’,新建工程‘gpio.mcp’,并添加两个程序文件‘Main.c’和‘init.s’(汇编文件)。

4.对工程文件进行相应设置。

5.编译该工程,成功后将生成映像文件‘gpio.axf’。

打开AXD,装载映像文件‘gpio.axf’并进行调试。

6.打开DNW,通过USB下载gpio.bin至开发板。

7.运行程序,观察结果。

2-8实验结果

四个发光二极管LED将轮流闪烁,最终实现流水灯效果。

第3章基于定时器的跑马灯系统分析

3.1设计目的

1.熟悉RVDS2.2开发环境。

2.掌握S3C6410内部相关寄存器的操作方法,最终实现通过用定时器在时间上准确的控制外部设备。

3.熟悉在ARM裸机环境下的C语言编程。

3.2功能说明

四个发光二极LED将轮流循环闪烁,最终实现流水灯效果。

3.3实验内容

此次设计的基于定时器的跑马灯实验,主要是运用单片机的定时器进行相应的控制,并将结果显示LED上。

具体来说,程序最开始会进行LED和定时器的初始化,本次设计的核心是定时器,在定时器初始化模块中会确定每次溢出后发送中断的间隔时间,中断后会进入中断服务函数,然后执行循环点亮LED的程序,以实现跑马灯的效果。

3.4开发工具

1.硬件环境S36410开发板。

2.编译环境RVDS(RealViewDevelopmentSuite)。

3.DNW串口工具

3.5实验原理

1.定时器模块

S3C6410中有5个32位定时器,其中定时器0和定时器1具有脉冲宽度调制功能,定时器2、定时器3和定时器4仅供内部计时没有对外输出功能,本次试验中用到了其中的定时器0来控制跑马灯的循环速率。

由于开发板之间存在差异,S3C6410S和之前学过的开发板有所不同,在做初始化定时器等操作时要参考S3C6410用户手册,表3-1到表3-9是相关寄存器资料。

表3-1定时器0相关寄存器

表3-2定时器0配置寄存器

表3-3定时器0控制寄存器

表3-4定时器0计数寄存器

 

表3-5定时器中断寄存器

表3-6中断向量地址寄存器

表3-7中断使能寄存器

表3-8中断清除寄存器

表3-9向量地址寄存器

2.LED灯模块

LED(LightEmittingDiode),发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。

LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。

本次试验的效果最终由S3C6410开发板上的四个LED灯进行显示。

表3-10介绍了配置寄存器、控制寄存器、上拉电路使能寄存器的地址和默认值。

表3-10控制LED的寄存器

表3-11端口配置寄存器

表3-12端口数据寄存器

表3-13端口上拉电路使能寄存器

在图3-1底板原理图我们可以看到LED一端接的是3.3V电源,另一端接的是GPIO,当NLED端被赋值为0时,电路中就会有电流通过并点亮LED灯。

图3-14底板原理图(LED)

 

在图3-2核心板原理图我们可以看到NLED1-4接的是GPM0-3,我们可以通过吧GMP0-3赋不同的值来实现LED灯的亮灭,赋0则灯亮,赋1则灯灭,要实现跑马灯的效果就把GPM0-3端口分别置为0就可以了。

图3-15核心板原理图(LED)

第4章基于定时器的跑马灯的程序详解

4.1LED初始化模块

LED初始化模块中,配置了IO口的传输模式和初值。

voidLED_Init(void)

{

GPIOM->CON=0x1111;

GPIOM->DAT=0xe;

}

4.2定时器初始化模块

在定时器初始化模块中,通过对不同寄存器赋值来实现对定时器的初始配置,比如开定时器、对定时器0设置分频、使定时器自动更新、为定时器装入初值、开全局中断等。

voidTIMER0_Init(void)

{

TCFG0=65;//定时器0预分频65+1,由PCLK=66提供时钟,66分频产生1MHz的定时器时钟

TCON=(0x1<<3);//定时器0自动更新使能

TCNTB0=50000;//重装值,50MS

TINT_CSTAT|=(0x1<<5);//清除中断标志

TINT_CSTAT=1;//使能定时器0中断

Set_IsrAddr(INT_TIMER0,(u32)Isr_Timer0);//设置中断矢量入口

Set_IntEnable(INT_TIMER0,Enable);//使能定时器0全局中断

//以下操作启动定时器0

TCON|=(0x1<<1);//手动更新

TCON&=~(0x1<<1);//结束手动更新

TCON|=(0x1<<0);//启动定时器0

}

4.3中断服务函数模块

当定时器溢出并发送中端请求时,系统会自动跳转到中断服务函数,在中断服务函数中可以实现对LED灯的控制,当执行完中断服务函数,中断结束,然后定时器继续计数,溢出后发送中断进入中断服务函数,循环往复。

void__irqIsr_Timer0(void)

{

staticu8cnt;//计数,因为定时器溢出时间为50ms,要定时1S得记到20

staticu8num=0;

TINT_CSTAT|=(0x1<<5);//清除中断标志

cnt++;

if(cnt==20)

{

num++;

GPIOM->DAT=(GPIOM->DAT<<1)|0x1;//LED0闪烁

if(num%4==0){

GPIOM->DAT=0xe;

}

cnt=0;

}

//GPIOM->DAT=GPIOM->DAT|0x1;

ClearInterrupt(INT_TIMER0);//中断结束

}

4.4主函数模块

主函数模块很简单,主要功能是调用LED初始化函数和定时器初始化函数,然后进入死循环,等待中断的来临。

voidmain(void)

{

LED_Init();

TIMER0_Init();

while

(1)

{

}

}

第5章基于定时器的跑马灯程序的编译与下载

5.1程序的编译

打开RVDS编译环境,选择file->open,打开扩展名为mcp的工程文件,进行编译,过程如图5-1所示。

图5-1RVDS程序界面

图5-2RVDS程序编译图

 

5.2程序下载

下载工具是DNW串口工具,打开DNW,如图5-3所示。

图5-3DNW串口工具

本次实验配置的位/秒为115200,使用COM1口,下载地址为0x57e00000,如图5-4所示:

图5-4DNW配置图

DNW配置就绪后,按OK6401开发板的复位键就会弹出如图5-5所示连接成功界面。

图5-5连接成功图

然后选择发送文件后,成功后输入go0x50000000命令如图5-6所示,就会出现跑马灯效果。

图5-6输入执行地址图

 

5.3运行结果

四个发光二极管LED将轮流闪烁,最终实现流水灯效果。

跑马灯效果图如下所示:

图5-7运行结果图

结论

时间过的好快,为期一周的硬件课程设计已经结束了。

本次课程设计的内容是基于定时器的跑马灯设计,用到S3C6410开发板,在RVDS环境下编译,并通过win7超级终端下载到开发板。

通过这周的课程设计,我拓宽了知识面,锻炼了能力,综合素质得到很大提高。

课程设计第一天,毫无头绪,举步维艰

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1