嵌入式实验报告_第1页
嵌入式实验报告_第2页
嵌入式实验报告_第3页
嵌入式实验报告_第4页
嵌入式实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南京邮电大学通达学院实 验 报 告实验名称:_实验一 基于ADS开发环境的程序设计 实验二 开发板的认知和GPIO实验_ 实验三 串行口实验 实验四 Linux交叉开发环境的建立_ 实验五 Makefile 编程实验 课程名称 嵌入式系统A 班级学号 姓 名 王婷婷 开课时间 2014/2015学年 第2学期 实验一 基于ADS开发环境的程序设计一、实验目的1、学习ADS开发环境的使用;2、学习和掌握ADS环境下的汇编语言及C语言程序设计;3、学习和掌握汇编语言及C语言的混合编程方法。二、实验内容1、编写和调试汇编语言程序;2、编写和调试C语言程序;3、编写和调试汇编语言及C语言的混合程序;4

2、、编写程序测试多寄存器传送指令的用法。三、实验原理汇编语言的基础知识、C语言编程的基础知识四、实验过程与关键代码分析例3-5在汇编中使用C定义的全局变量实验程序:C程序:Asm程序:实验结果:五、实验小结通过本次试验,我基本了解了ADS开发环境的使用方法,掌握了如何在ADS开发环境下建立工程、添加C源程序到工程、编译链接和调试C程序,对之前学过的C语言有了更进一步的理解。实验二 开发板的认知和GPIO实验LED跑马灯一、 实验目的1、熟悉 ADS 开发环境。2、 掌握 S3C2440A 内部相关寄存器的操作方法,最终实现对外部设备的控制。3、 熟悉在 ARM 裸机环境下的 C 语言编程。二、实

3、验设备FL2440 开发板、PC 机、JTAG 调试板。三、 实验内容1、建立 ADS 开发环境。2、编程实现对开发板上发光二极管 LED 的跑马灯控制。四、实验原理从电路图上我们可以看到,发光二极管LED 的一端连接到了ARM 的GPIO,另一端经过一个限流电阻接电源VCC。当GPIO 口为低电平时,LED 两端产生电压降,这时LED 有电流通过并发光。反之当GPIO 为高电平时,LED 将熄灭。注意亮灭之间要有一定的延时,以便人眼能够区分出来。五、实验过程实验步骤:1. 准备好实验环境,将JTAG 调试板的一端与PC 的并口相连,另一端连接到开发板的JTAG接口(在串口0 附近)。2. 将

4、串口线的一端插在PC 的串口上,另一端插在开发板的COM0上。打开DNW.EXE 软件,给开发板上电,使Bootloader 停在菜单处(在系统引导时按空格键)。3. 打开软件ADS Code Warrior,新建工程led.mcp,并添加两个程序文件led.c和init.S(汇编文件)。4. 对工程文件进行相应设置(参考开发板准备实验1.7 节)5. 编译该工程,成功后将生成映像文件led.axf。打开AXD,装载映像文件led.axf。6. 运行程序,观察结果。实验电路: 如上图所示, 通过控制 4 个 GPIO 口 GPB5 、 GPB6 、 GPB8 、 GPB10,来实现对四个发光二

5、极管 LED0 、LED1、LED2、LED3 亮灭的控制。实验程序:/*本实验接口说明GPB5 - LED0GPB6 - LED1GPB8 - LED2GPB10 - LED3*/*-地址声明-*/#define GPBCON (*(volatile unsigned *)0x) #define GPBDAT (*(volatile unsigned *)0x) #define GPBUP (*(volatile unsigned *)0x)#define uchar unsigned char#define uint unsigned int/*-定义全局变量-*/*-函数声明-*/voi

6、d Delay(int x);/*-/函数名称:Delay功能描述:延时函数传 参:int x返 回 值:无-*/void Delay(int x) int k, j; while(x) for (k=0;k=0xff;k+) for(j=0;j=0xff;j+); x-; /*-函数名称:ledMain功能描述:入口程序初始化后,进入跑马灯死循环传 参:无返 回 值:int 0-*/int ledMain(void)GPBCON = 0x1dd7fc;/ GPB5,GPB6,GPB8,GPB10设置为输出GPBDAT = (15)|(16)|(18)|(110);/使LED全灭GPBDAT&

7、=0xffe;/关闭蜂鸣器GPBUP = 0x00; while (1)/ 死循环GPBDAT = (15);/LED0亮Delay(500);GPBDAT = (16);/LED1亮Delay(500);GPBDAT = (18);/LED2亮Delay(500);GPBDAT = (110);/LED3亮Delay(500);return 0; AREA |DATA|,CODE,READONLY ENTRY ldr r13, =0x1000 IMPORT ledMain b ledMain END实验结果:四个发光二极管 LED 轮流闪烁,最终实现流水灯效果。修改程序中Delay函数调用的

8、值将改变它们显示的速度,值越大,显示越慢。六、实验小结本次实验是第一次做有关开发板的实验,我对实验器材和实验步骤都不太了解,在实验的过程中遇到很多问题。后来,在老师和同学的帮助下,我连接好开发板,运行程序,观察到实验板上的四个发光二极管轮流闪烁。除此之外,我还掌握了S3C2440A 内部相关寄存器的操作方法,实现了对外部设备的控制。实验三 串行口实验一、 实验目的1、掌握 ARM 处理器的串行通信原理2、通过编程,实现开发板与 PC 机之间的串行收发数据二、 实验设备FL2440 开发板、ADS1.2 开发环境、JTAG 调试板、串口连接线。三、 实验内容编写串口程序,使开发板收到数据后再把数

9、据发回。四、 实验原理开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线桑的时字符的二进制编码数据。每个字符的数据位长可以约定为:5 位、6 位、7位或8 位,一般采用ASCII 编码,后面时奇偶校验位,根据约定,用奇偶校验位将所传的字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后时表示停止位的“1”信号,这个停止位可以约定连续1 位、1.5 位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送。传输速率:每一个数据位的宽度定于发送波特率的倒数。

10、微机异步串行通信中,常用的波特率为110、150、300、600、1200、2400、4800、9600、57600、 等。波特率发生器每个UART 的波特率发生器为传输提供了串行移位时钟。波特率产生器的时钟源可以从S3C2440A 的内部系统时钟或UEXTCLK 中来选择。波特率由时钟源(PCLK、FCLK 或UEXTCLK)16分频和UART 波特率除数寄存器(UBRDIVn)指定的16 位除数决定。UBRDIVn 的置可以按照下式确定:UBRDIVn(int)( UART clock/(bps*16))1(UART clock: PCLK 、FCLK 或UEXTCLK)除数的范围为1 到

11、(2161)。例如,如果波特率为bps,UART 为40MHz,则UBRDIVn为:UBRDIVn (int)( /(16) 1(int)( 21.7)122121五、 实验过程实验电路:实验步骤:1. 准备实验环境,将JTAG 调试板的25 针端与PC 的并口相连,另一端(WIGGLER 口)通过20P 排线与开发板的JTAG 接口(在串口0 附近)相连。2. 将串口线的一端插在PC 的串口上,另一端插在开发板的COM0 上。打开DNW.EXE 软件,进行相应设置。给开发板上电并在Bootloader 启动时停在菜单处。3. 打开ADS CodeWarrior,在ADS CodeWarrio

12、r 中打开实验工程serial.mcp.4. 对工程文件进行相应设置(参考开发板准备实验1.7 节),并对工程进行编译。5. 打开ARM 的开发环境AXD Debugger,在AXD Debugger 中加载可执行映象文件serial.Axf。6. 执行映象文件,观察实验结果。实验程序:#define ULCON0 (*(volatile unsigned *)0X) /UART线控制寄存器#define UCON0 (*(volatile unsigned *)0X) /UART控制寄存器#define UFCON0 (*(volatile unsigned *)0X) /FIFO控制寄存器

13、#define UTRSTAT0 (*(volatile unsigned *)0X) /UART状态寄存器#define UBRDIV0 (*(volatile unsigned *)0X)/波特率#define UTXH0 (*(volatile unsigned *)0X)#define URXH0 (*(volatile unsigned *)0X)#define GPBDAT (*(volatile unsigned *)0X)int TSmain()char buf;ULCON0 &=0XFFFFFF00;ULCON0 |=0X03; /1位起始位,8位数据位UCON0 =0X08

14、05; /串口时钟PCLK,查询方式UBRDIV0 =0X1A; /波特率while(1) if(UTRSTAT0 & 0X01) /接收是否完毕 =1结束buf=URXH0; /读取数据while(!(UTRSTAT0 & 0X04);/是否允许发送 =1允许UTXH0=buf; return 0; AREA |DATA|,CODE,READONLYENTRY ldr r13,=0x1000 IMPORT TSmain b TSmain END实验结果:六、实验小结 通过本次试验,我了解了ARM处理器的串行通信的原理、传输格式和电气特性,掌握了相关寄存器的配置方法。此外,我还通过编写串口程序

15、,实现了开发板接收数据后又发回数据。这为我以后的实验奠定了基础。实验四 Linux交叉开发环境的建立一、实验目的1、了解什么是交叉编译。2、了解交叉编译工具。3、学会安装及使用交叉编译器。二、实验设备PC机三、实验内容1、安装交叉编译器。2、使用交叉编译器编译程序。四、实验原理什么是交叉编译在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。如keil 软件,在keil 上编译,但在单片机上运行,典型的交叉编译。我们在开发板上运行的程序,是在PC 机上编译的,所以

16、是交叉编译。安装交叉编译器安装交叉编译器,只需将该编译器的解压缩文件放在指定的目录下边。指定目录为:/usr/local/arm/ 若local 下没有arm 文件夹,则需要自己建一个。在使用的时候有两种方式:(以编译hello.c 程序为例,生成可执行文件hello)1.# /usr/local/arm/3.4.1/bin/arm-linux-gcc hello.c o hello2.编辑/etc/bashrc 文件,在最后增加路径:export PATH=/usr/local/arm/3.4.1/bin:$PATH,这样就把/usr/local/arm/3.4.1/bin 添加到命令的默认

17、路径,在编译的时候则可直接用如下的命令# arm-linux-gcc hello.c o hello五、 实验过程、Hello World:实验程序:实验结果:挂载:六、实验小结通过这次实验,我对Linux系统有了一个初步的了解,对于课堂学习的知识也有了一定的应用,因此,我实现了理论与实践相结合。通过实验操作,我了解了嵌入式基本设置及其读写程序,我对硬件设备的设计也有了一定的了解。在刚开始学习建立Linux交叉开发环境时,我遇到了不少的问题,对于较为复杂的编程以及Linux环境下的很多技巧都知道得很少,花费了很多时间。我深知,这一块儿知识正是我所欠缺的,在以后的学习中要加强。实验五 Makef

18、ile 编程实验一、实验目的1、了解 make 命令。2、了解 Makefile。3、熟悉 Makefile 编程。二、 实验设备PC机三、实验内容使用 Makefile 编译程序。四、 实验原理Makefile 文件包含了五部分内容:显示规则、隐式规则、变量定义、文件指示和注释。Makefile 里的变量就像一个环境变量。事实上,环境变量在make 中也被解释成make 的变量。这些变量对大小写敏感,一般使用大写宇母。几乎可以从任何地方引用定义的变量。Makefile中的变量是用一个文本串在Makefile 中定义的,这个文本串就是变量的值。只要在一行的开始写下这个变量的名字,后面跟一个“”

19、号,以及要设定这个变量的值即可定义变量,下面是定义变量的语法:VARNAME=stringMake 工作时的执行步骤:(1) 读入所有的makefile 文件(2) 读入被include 包括的其他的makefile 文件(3) 初始化文件中的变量(4) 推到隐式规则,并分析所有规则(5) 为所有的目标文件创建依赖关键链(6) 根据依赖关系,决定哪些目标要重新生成(7) 执行生成命令第(1)(5)步为第一个阶段,第(6)(7)步为第二个阶段。第一个阶段中,如果定义的变量被使用了,make 会在它使用的位置把它展开。但make 并不会马上完全展开,make 使用的是拖延战术。如果变量出现在依赖关

20、系的规则中,进当这条依赖关系决定要使用时,变量才会在其内部展开。五、 实验过程实验步骤:1. 在某一目录下编辑上述l 六个文件test.c、prog.c 、code.c 、prog.h 、code.h 、Makefile2. 运行命令#make,生成可执行文件test3. 运行程序./test实验程序:#include extern area(float);extern circle(float);main()printf(dgjdkfhgkjfdgn);area(2.5);circle(2.5);return 0;/*prog.c*/#include prog.h#include code.h#include area(float r)printf(r=%fn,r);printf(format_area,PI*r*r);printf(gfhfghfhn);/*code.c*/#include code.h#include void circle(float r)printf(form

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论