基于ARM9-S3C2410嵌入式MDK开发实验报告 嵌入式实验报告 MDK ARM9.doc_第1页
基于ARM9-S3C2410嵌入式MDK开发实验报告 嵌入式实验报告 MDK ARM9.doc_第2页
基于ARM9-S3C2410嵌入式MDK开发实验报告 嵌入式实验报告 MDK ARM9.doc_第3页
基于ARM9-S3C2410嵌入式MDK开发实验报告 嵌入式实验报告 MDK ARM9.doc_第4页
基于ARM9-S3C2410嵌入式MDK开发实验报告 嵌入式实验报告 MDK ARM9.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

学校代码: 10128 学 号: 20101105 嵌入式实验报告题 目:基于ARM9-S3C2410嵌入式MDK开发实验报告学生姓名:刁玉贤学 院:电力学院专 业:检测技术与自动化装置学 号:20101105指导教师:刘志强二 一 一 年 七 月1实验目的本次实验是在上完ARM理论课后进行的,主要目的有以下几个方面:1、了解EduKit-IV开发平台,掌握其硬件连接和使用方法,初步熟悉MDK;2、掌握有关矩阵LED的原理,以及对常用矩阵LED控制方法;4、通过实验掌握基于S3C2410X MDK程序设计;5、通过实验掌握对处理器S3C2410X中GPIO模块电路的控制方法;2实验设备1 硬件:Embest EduKit-IV平台,ULINK2仿真器套件,PC机;2 软件:Vision IDE for ARM集成开发环境,Windows 98/2000/NT/XP。3实验内容1、观察演示程序,了解在MDK环境下开发的例程:(1)设置超级终端;运行PC机上Windows XP系统自带的超级终端软件,“开始 - 所有程序 - 附件 - 通讯 - 超级终端”,设置每秒位数115200、数据位8、奇偶校验无、停止位1、数据流控制 无 图4-1 超级终端配置(2)将EduKit-IV实验平台的电源的拨动开关拨向向上端的加电状态,给实验平台上电,1-2秒后将会在EduKit-IV实验平台的LCD屏上显示出DEMO起始界面,同时在超级终端上也可以看到串口打印的启动信息。(3)根据提示,对固化在存储器上的程序进行演示。2、熟悉RealView开发环境,参见实验指导书“第三章 RealView MDK开发基础”3、学习实验“5. 2 LED控制实验(179页)”,参照本实验,自己创建一个类似的工程。通过新建一个简单的工程文件,并编译这个工程文件。学习ARM 仿真器的使用和开发环境的设置。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。4 实验内容4.1寄存器的设置S3C2410X芯片上共有71个多功能的输入/输出引脚,它们分为7组I/O端口: (1)1个23位的输出端口(端口A)。 (2)2个11位的输入/输出端口(端口B、H)。 (3)4个16位的输入/输出端口(端口C、D、E、G)。 (4)1个8位的输入/输出端口(端口F)在运行程序之前必须对每个用到的引脚功能进行设置,如果某些引脚的复用功能没有使用,可以先将该引脚设置为I/O端口。4.1.1S3C2410X I/O口常用的控制寄存器(1)端口控制寄存器(GPACON-GPHCON)。(2)端口数据寄存器(GPADAT-GPHDAT)。(3)端口上拉寄存器(GPBUP-GPHUP)。(4)外部中断控制寄存器(EXTINTN)。表6-1 端口F控制寄存器寄存器地 址读/写描 述复位值GPFCON0x56000050R/W端口F配置寄存器0x0GPFDAT0x56000054R/W端口F数据寄存器未定义GPFUP0x56000058R/W端口F上拉控制寄存器0x0Reserved0x5600005C保留未定义表6-2 GPFCON寄存器GPFCON位描 述GPF715:1400=Input 01=Output10=EINT7 11=ReservedGPF613:1200=Input 01=Output10=EINT6 11=ReservedGPF511:1000=Input 01=Output10=EINT5 11=ReservedGPF49:800=Input 01=Output10=EINT4 11=ReservedGPF37:600=Input 01=Output10=EINT3 11=ReservedGPF25:400=Input 01=Output10=EINT2 11=ReservedGPF13:200=Input 01=Output10=EINT1 11=ReservedGPF01:000=Input 01=Output10=EINT0 11=Reserved表6-3 GPFDAT寄存器GPFDAT位描 述GPF7:07:0当端口被配置成输入时,外部数据可以从对应的端口中读出;当端口被配置成输出时,写入该寄存器的数据会被送到对应的引脚上;当端口被配置成功能脚时,此寄存器未定义4.1.2电路设计图6-1 LED接线原理图4.2硬件设置1) 处理器处理器是三星公司的Samsung公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。为了降低整个系统的成本,S3C2410提供了以下丰富的内部设备:分开的16KB的指令Cache和16KB数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN&TFT),支持NAND Flash系统引导,系统管理器(片选逻辑和SDRAM控制器),3通道UART,4通道DMA,4通道PWM定时器,I/O端口,RTC,8通道10位ADC和触摸屏接口,IIC-BUS接口,IIC-BUS接口,USB主机,USB设备,SD主卡&MMC卡接口,2通道的SPI以及内部PLL时钟倍频器。2) 电源部分电源是核心部分,其好坏直接关系到整个电路的正常工作, 由于CPU的核心电压是1.8V,IO口需要3.3V,因此该部分主要作用是将输入的5V电源,经过防反二极管后进入低压差芯片变成3.3V和1.8V直流电压,以供cpu的电源。该部分主要是注意滤波的处理以及对电流的满足。由原理图知实验板对EMI和EMC方面考虑的并不周全。3) 时钟部分时钟部分原理图如下:该部分由两路晶振提供震荡信号。12MHz的晶振提供的信号供CPU进行倍频和锁相用,以得到系统工作的主频及其他部分的时钟信号。32.768K主要提供给CPU内部的RTC时钟用。4) OM1:0BANK0(nGCS0)的数据总线宽度可以配置为16位或32位。因为BANK0为启动ROM(映射地址为0X00000000)所在的空间,所以必须在第一次访问ROM前设置BANK0数据宽度,该数据宽度是由复位后OM1:0的逻辑电平决定的。由原理图可看出,不连接BOOT短接块时,启动后OM1:0是10,即BANK0存储器是32位。5) SDRAM的连接该部分原理图如下:该部分由两片HY57V561620构成32位的SDRAM。HY57V561620是由4BANK4M BITS16的DRAM,其中地址为A0A12,而着地址总线由分为行地址RA0RA12,列地址总线CA0CA8,可由/RAS,/CAS选择,因此只需将ADDR02ADDR14接入A0A12。BANK的选择由地址最高位ADDR25和ADDR26决定。其在S3C2410中分配为第BANK6,地址从0x30000000开始。6) UART该部分原理图如下图所示。由于CPU输出的电平与RS232电平不匹配,需要在中间加入RS232驱动芯片。MAX232就是这样一款芯片。7) 矩阵LED该部分原理图如下:实验平台使用的1616点阵屏上,每一行16个LED,它们采用共阳极的接法;每一列16个LED,它们采用共阴极的接法。如上图中,QL1QL16是点阵屏的行驱动信号,每一个信号控制一行;LR1LR16是点阵屏的列驱动信号,每一个信号控制一列。故通过利用相应行线输出高电平,相应列线输出低电平,就可以点亮点阵屏上相应的LED。如果按着一定的控制或扫描方法,就可以实现汉字、图形的显示。为了能够稳定地控制点阵屏的显示,本实验平台采用了CD4094作为行线和列线扫描信号的控制芯片。CD4094芯片简单来说就是一串入并出的功能,将CPU的串行数据转化为并行数据输出。 行(列)扫描信号分别采用了两片CD4094级连的方式来构成,第一片的数据溢出信号LQS连接到第二片的串行数据输入口。当CPU通过DATA引脚串行输入16位的行扫描信号时,第一片CD4094(标号U1101)存储先输入的8位数据,后输入的8位数据通过引脚LQS溢出,然后输入并存储到第二片CD4094(标号U1102)。CLK信号是时钟信号,当时钟信号为高电平时,CD4094允许串行输入的数据发生变化。LL1LL8是并行输出信号。LOE为全局输出使能信号,当LOE输入高电平时,CD4094上锁存的并行数据全部输出。列线扫描信号也是同样的方式。 2. 软件设计 本实验要求编写点阵屏驱动程序以及点阵屏应用程序。驱动程序要求实现字符、图形显示;应用程序可以调用驱动接口,在点阵屏中显示字符与图形。 要在点阵屏上显示字符、图形,只需要按照字符/图形的编码,点亮矩阵屏上相应的LED即可。在本实验平台上,矩阵屏为1616点阵,每屏显示两个字符,只需要把168点阵的字库码送到可容纳两个字符字库码(216字节)的显示缓冲区,然后根据显示缓冲区的内容控制点阵屏上LED灯的亮灭。字库码表明了显示某个字符时点阵屏上的LED的亮灭布局,每一个LED灯的状态用一位二进制表示,1表示该LED亮,0表示该LED灭,对于168点阵的字库码,每个字符的字库码所占用的存储容量为16*8/8 = 16 Byte。 在点阵屏显示驱动程序中,开辟一个显示缓冲区用来接受字库码,(字库码是由应用程序传递过来的),然后采用动态扫描的方法来实现字符、图形的显示。每次扫描一行,这样依次循环扫描16行,经过一定的延时处理,就可以实现字符、图片的静态显示。 为了实现字符和图片的动态流动显示,还需要一个大小为可容纳3个字符字库码(316字节)的缓冲区,该缓冲区中每次保存3个字符的字库码。在显示过程中,为了达到流动效果,每次将该缓冲区中的前两个字符字库码的各字节左移i位与其后第16字节右移8-i位相或的结果复制到显示缓冲区中显示,直到第一个字符完全移出、第三个字符完全移入时,更新缓冲区。如此循环即可实现字符的流动显示。 在显示时,根据字库码,对点阵屏逐行动态扫描。扫描时,行线的数据与列线的数据都通过CD4094锁存起来,然后经过片选使能再同时输出。 在本实验中,使用到的通用端口有GPIOB4/5,GPIOC0/7,GPIOD10,GPIOG8,因此对它们的工作模式应配置为输出模式。5 实验步骤:1) 准备实验环境使用ULINK2仿真器连接Embest EduKit-IV实验平台的主板JTAG接口;使用Embest EduKit-IV实验平台附带的交叉串口线,连接实验平台主板上的COM2和PC机的串口;使用Embest EduKit-IV实验平台附带的电源适配器,连接实验平台主板上的电源接口。2) 串口接收设置在PC机上运行windows自带的超级终端串口通信程序,或者使用实验平台附带光盘内设置好了的超级终端,设置超级终端:波特率115200、1位停止位、无校验位、无硬件流控制,或者使用其它串口通信程序。(注:超级终端串口的选择根据用户的PC串口硬件不同,请自行选择,如果PC机只有一个串口,一般是COM1)3) 打开实验例程a) 运行Vision IDE for ARM软件,点击菜单栏“Project”,选择“Open Project”,在弹出的对话框选择实验例程目录8.1_DotLed_Test子目录下的DotLed_Test.Uv2工程。b) 默认打开的工程在源码编辑窗口会显示实验例程的说明文件readme.txt,详细阅读并理解实验内容。c) 工程提供了两种运行方式:一是下载到SDRAM中调试运行,二是固化到Nor Flash中运行。用户可以在工具栏Select Target下拉框中选择在RAM中调试运行还是固化Flash中运行。在本次实验中,选择SDRAM中调试运行。d) 接下来开始编译链接工程,在菜单栏“Projiet”选择“Build target”或者“Rebuild all target files”编译整个工程,用户也可以在工具栏单击“或者”进行编译。e) 编译完成后,在输出窗口可以看到编译提示信息,比如“.SDRAMDotLed_Test.axf - 0 Error(s), 0 Warning(s).”,如果显示“0 Error(s)”即表示编译成功。4) 拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug-Start/Stop Debug Session项将编译出来的映像文件下载到SDRAM中。5) 下载完成后,单击菜单栏Debug-Run项运行程序。用户也可以使用进行单步调试程序。6) 全速运行后,用户可以在超级终端看到程序运行的信息,出现“Please Look At The 1616 LEDS”,查看矩阵LED上显示的信息。7) 用户可以Stop程序运行,使用Vision IDE for ARM的一些调试窗口跟踪查看程序运行的信息。6实验结果6.1 原始程序int main(void) sys_init();/ Initial systemuart_printf(n Please Look At The 16X16 LEDSn);led_init(); / Initial led diplayfor(;)char_out(0, WELCOME TO EMBEST EDUKIT IV );char_out(0,_);/* name:led_update* func:refresh the led display* para:none* ret:none* modify:* comment:*/static void led_update(void)int j = 20;while(j-)led_char_disp();/* name:l_display_scroll* func:shift the display* para:bits:the position str:point the buffer* ret:none* modify:* comment:*/static void refresh_l_display_array(u8 bits, u8 *str)u32 i;u32 remaining_bits = 8-bits; for(i=0;i16;i+)l_display_array2*i = (*strremaining_bits);l_display_array2*(i+1)-1 = (*(str+16)remaining_bits);str+;6.2 程序运行结果程序执行后,在PC上通过超级终端看到如下信息:“Please Look At The 1616 LEDS”;在1616矩阵LED能够看到“WELCOME TO EMBEST EDUKIT IV ”上,并随时间流逝而向从右向左不断循环流动显示。6.2 程序修改1) 程序运行结果程序执行后,在PC上通过超级终端看到如下信息:“Please Look At The 1616 LEDS 专业:检测技术与自动化装置 姓名:刁玉贤 学号:20101105” ;在1616矩阵LED能够看到“Detection Technology and Automatic Equipment”上,并随时间流逝而向从左向右不断循环流动显示。2) 改动部分int main(void) sys_init();/ Initial systemuart_printf(n Please Look At The 16X16 LEDSn);uart_printf (n专业:检测技术与自动化装置 姓名:刁玉贤 学号:20101105n);led_init(); / Initial led diplayfor(;)char_out(0, Detection Technology and Automatic Equipment );char_out(0,_);/* name:l_display_scroll* func:shift the display* para:bits:the position str:point the buffer* ret:none* modify:* comment:*/static void refresh_l_display_array(u8 bits, u8 *str)u32 i;u32 remaining_bits = 8-bits; for(i=0;i16;i+)l_display_array2*i = (*strremaining_bits);l_display_array2*(i+1)-1 = (*(str+16)remaining_bits);str+; 7 实验心得以前只做过8051的开发实验,对于ARM9还是第一次接触,自己只能边看英蓓特公司的PDF教程,边做实验,这个教程写得很详细,硬件连接及相关的参数设置,当然还有实验步骤、实验结果等,一应俱全!由于内容太多只能大致看一下,以后有时间慢慢研究了。 刚开始只是瞎倒腾,熟悉一下MDK开发环境,开发软件。很长时间没有用过C语言编程序, Main函数也看不懂了,C语言也该好好补补了。一些设置还要看datasheet,我是看了2、3遍,要设置哪个寄存器就看哪一章。第一遍很吃力,其实还有很多不懂。但知道怎么用。通过以后的实验,慢慢理解。有时看不懂,过一段时间在来看,也许就能豁然开朗。通过本次实验对ARM9嵌入式系统设计有了更深一步的了解,知道了如何使用UVision MDK软件进行编程编译,并下载到实验箱中,使图像、声音、文字得以显示;了解了新的显示设备矩阵LED;对S3C2410有了一定的了解,外围电路的设计有了认识。更重要的是学会了如何解决在实习中遇到的各种问题并很好的解决,为以后使用该软件进行编程打下了坚实的基础,也培养了自己对该软件的兴趣,目前的学生正面临找工作的压力,通过这次实习积累了经验,对找工作也起到了辅助的作用,希望能够有机会对该软件进行进一步的学习研究。最后感谢指导老师和同学们的细心帮助。参考文献:1 熊茂华、杨震伦编著. ARM嵌入式系统设计与开发应用,清华大学出版社,2008.1 2 于明等,ARM9嵌入式系统设计与开发教程,北京:电子工业出版社,2006.53 范书瑞等编著,ARM处理器与C语言应用开发,北京:北京航空航天大学出版社 ,2008,14 嵌入式教学平台EduKit-IV实验丛书, 英蓓特信息技术有限公司附: 程序int main(void) sys_init();/ Initial systemuart_printf(n Please Look At The 16X16 LEDSn);led_init(); / Initial led diplayfor(;)char_out(0, WELCOME TO EMBEST EDUKIT IV );char_out(0,_);/* File:Dotled.c* Author:embest* Desc:DotLed_Test * History:*/*-*/* include files */*-*/#include #include 2410lib.h#include fonts.h#include led16x16.h/*-*/* function declare */*-*/extern void led_char_disp(void);/*-*/* global variables */*-*/u8 l_display_array2*16;u8 assic_buffer3*16;/*=l_display_array:+-+-+| | | | D | E | | | | +-+-+A buffer data and B buffer data -D buffer dataB buffer data and C buffer data -E buffer dataassic_buffer:+-+-+-+| | | | A | B | C |- update the C buffer and move the B buffer data to the A buffer| | | | and move the C buffer data to the B buffer data+-+-+-+=*/* name:led_update* func:refresh the led display* para:none* ret:none* modify:* comment:*/static void led_update(void)int j = 20;while(j-)led_char_disp();/* name:l_display_scroll* func:shift the display* para:bits:the position str:point the buffer* ret:none* modify:* comment:*/static void refresh_l_display_array(u8 bits, u8 *str)u32 i;u32 remaining_bits = 8-bits; for(i=0;i16;i+)l_display_array2*i = (*strremaining_bits);l_display_array2*(i+1)-1 = (*(str+16)remaining_bits);str+;/* name:l_display_scroll* func:scroll the display* para:str:point the buffer* ret:none* modify:* comment:*/static void l_display_scroll ( u8 *str )int i;for(i=0;i8;i+)refresh_l_display_array(i, str);led_update();/* name:copy_data* func:copy data* para:dst:point the dest data src:points the source data* ret:none* modify:* comment:*/static void copy_data(u8 *dst, u8 *src, u32 size)while(size-)*(dst+) = *(src+);/* name:refresh_assic_buffer* func:refresh buffer* para:str:points the new char* ret:none* modify:* comment:*/static void refresh_assic_buffer(u8 *str)copy_data(&assic_buffer0, &assic_buffer16,16);copy_data(&assic_buffer16, &assic_buffer32,16);copy_data(&assic_buffer32, str,16);l_display_scroll(assic_buffer);/* name:char_out* func:display the chars* para:font:0 str:points of the chars* ret:none* modify:* comment:*/void char_out(u8 font, u8 *str)u8 *str_ptr;u8 glyph;glyph = ( u8 )*str;while(glyph != 0 )str_ptr = fontsfont.ascii_code + ( glyph - fontsfont.ascii_beg) * fontsfont.ascii_height;refresh_assic_buffer

温馨提示

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

最新文档

评论

0/150

提交评论