附件5综合设计报告参考样本-电子科技大学_第1页
附件5综合设计报告参考样本-电子科技大学_第2页
附件5综合设计报告参考样本-电子科技大学_第3页
附件5综合设计报告参考样本-电子科技大学_第4页
附件5综合设计报告参考样本-电子科技大学_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

电子科技大学综合设计报告题目全称人脸识别课程名称嵌入式系统综合训练指导老师廖勇职称副教授序号姓名学号班号报告成绩(40分)设计过程成绩(30分)1严伟201222301000938282董超华201222301001236263杨龙201222301000734244郭庭昊2012223010008322256(注学生姓名填写按学生对该综合设计的贡献及工作量由高到底排列,分数按排名依次递减。序号排位为“1”的学生成绩最高,排位为“6”的学生成绩最低。)指导老师评语(对设计过程和报告成绩分别进行点评)指导签字本小组成员任务分工情况序号姓名学号分工完成情况1严伟2012223010009代码编写、报告撰写完成2董超华2012223010012代码编写、报告撰写完成3杨龙2012223010007需求分析、报告撰写完成4郭庭昊2012223010008测试、报告撰写完成电子科技大学综合训练报告1、综合训练目的1熟悉并熟练使用ARM2440开发板串口通讯功能;2提高ARM汇编编程能力;3在不断地查询数据手册的过程中,学会如何快速查找手册类资料;4对在裸板上进行一些初始化操作,实现UART串口通讯驱动,即实现PC端与开发板间串口的通讯,从PC终端输入数据,开发板再将其经过/不经过转换后返回到PC终端;5通过分小组完成方式,锻炼团队合作能力。2、综合训练任务1了解串口基本通信原理,查看开发板数据表上关于串口的连接方式,以及其特点;2根据ARM2440开发板的硬件原理,初始化开发板,初始化串口硬件,控制串口硬件实现字符串接收和发送功能;3编程实现ARM2440开发板上的UART通讯;其中配置串口的主要任务如下1设置管脚模式;2设置通信模式;3设置数据读取模式;4设置是否使用硬件缓存;5设置是否启使用硬件流控;6设置传输速度,即波特率;3、裸板上串口驱动程序的设计31整体结构设计根据以上两节对本次课程设计的目的和需求的分析可以知道,本次课程设计需要完成以下两个任务1裸板的正常启动;2串口的正确驱动。裸板的正常启动过程比较简单。由于裸板的启动过程中不能够被其他事件打断,其运行方式是顺序运行,因此,其过程比较简单,将其划分为一个模块比较适合。串口的正确驱动则稍显复杂。为了在程序运行时验证串口经过配置能够正确运行,因此,在本次程序的设计时需要设计一个串口应用小程序来展示结果。串口应用程序需要展示串口的发送和接收数据功能,在本次设计中将发送数据过程安排在串口应用程序中实现,而将串口接收数据过程作为普通中断来处理。因此,可将串口的正确驱动任务划分为串口应用程序模块、FIQ处理模块和UART中断服务模块。综上所述,本次裸板上串口驱动程序设计的模块图如图1所示。裸板串口驱动程序包括裸板启动模块、串口应用程序模块、FIQ处理模块和UART中断服务模块,其中裸板启动模块完成对开发板的初始化,串口应用程序模块、FIQ处理模块和UART中断服务模块是用于配置并展示串口的配置是否正确。裸板串口驱动程序裸板启动模块串口应用程序模块FIQ中断处理模块UART中断服务模块图1裸板上串口驱动程序模块图32模块设计根据31节对裸板上驱动程序的整体结构的设计可知,在编写代码前需要完成以下模块的详细设计裸板启动模块、串口应用程序模块、FIQ处理模块和UART中断服务模块。321裸板启动模块设计本次课程设计使用的开发板为以三星公司生产的S3C2440芯片作为处理器的飞凌ARM2440开发板,所以裸板启动的任务是通过设置让飞凌ARM2440开发板正常工作。为了让开发板可以正常运行,需要对所有需要设置的部件进行设置。由于飞凌2440开发板没有NORFLASH,因此,开发板默认是从NANDFLASH启动。在板子上电复位时,处理器会将NANDFLASH的前4KB数据拷贝至内部的一个大小为4KB的RAM中,因此可以直接将中断向量表放在程序开始的地方,那么在处理器拷贝完成后,中断向量表就放到了需要放到的地方,这样可以免去软件拷贝的过程。正是由于这个原因,裸板启动的第一个任务是跳过中断向量表,执行真正的程序。由于启动的过程不能被其它中断打断,所以接下来应该关闭中断,禁止处理器响应外部中断。并且由于在上电复位的时候,内存还没有初始化,因此暂时还需要禁用CACHE和MMU。接下来,需要关闭开门狗计数器,避免其在启动过程中产生复位信号中断启动过程。然后需要设置时钟,让整块板子工作在正常的时钟频率下。完成时钟的配置后需要配置内存控制器以使得外部的内存可用。紧接着需要将堆栈指针初始化,为应用程序的运行做准备。由于在本次课程设计中只要求对UART进行配置,因而需要屏蔽掉与之无关的其他中断,以免在产生中断后没有相应的中断服务程序为其服务。在裸板初始化的最后需要打开CACHE、将中断向量表完善、打开中断。打开CACHE主要是为了让指令执行的效率提高,打开中断是为了让处理器能够响应外部事件。本模块的最后一步是进入串口应用程序,但是由于启动代码的运行是顺序运行的,所以只需要让串口应用程序的代码接在启动代码之后即可,在程序运行的时候会自动进入串口应用程序。综上所述,裸板启动的流程图如图2所示。关闭中断禁用CACHE和MMU关闭看门狗设置时钟配置内存控制器初始化堆栈指针配置中断控制器打开CACHE完善中断向量表打开中断进入串口应用程序结束跳过中断向量表开始图2裸板启动模块流程图322串口应用程序模块设计为了验证串口经过配置后能够正常地收发数据,在此设计了串口应用程序模块来展示。串口应用程序模块需要完成的任务如下1根据接收到的数据按照一定的对应关系控制4个LED灯的亮和灭;2在没有数据接收的时候,自动的将当前数据逐渐增加,并反应到LED灯上;3实时向PC返回当前LED灯所表示的数据。刚进入本模块是可能还没有收到数据,需要对数据进行一次初始化,在此初始化为0,因此,在板子运行时可以看到4个LED从全灭到全亮的过程,反复循环。综上,串口应用程序的模块流程图如图3所示。开始配置串口1配置GPH端口延时配置GPB端口将0X33FFEBFC对应的内存单元清零读取0X33FFEBFC处的值至R2将R2的值加1后送回0X33FFEBFC将R2的低4位分别移至R0的5、6、8、10位R0的其他位清零清除R2的高24位R210R2加10后送至R4NR2加55送至R4Y将R4送至UART1发送寄存器将R0取反后送至GPBDATA延时图3串口应用程序模块流程图323FIQ中断处理模块设计在开发板的运行过程中,处理器为了和外界进行交互必然会使用中断这一机制来实现。在处理器接收到中断信号后进入中断服务程序通常还需要做一些前期的处理,主要是中断现场的保护,然后转向用户编写的中断服务程序运行,最后还需要关闭中断源,恢复现场以及返回断点继续执行。三星公司的S3C2440处理器提供了快速中断方式。在本次课程设计中将UART产生的中断设置为快速中断方式,因此,需要在快速中断的中断处理程序中处理这一中断。于是,可以把FIQ中断处理模块的流程图设计为图4。开始保存现场跳转到UART1中断服务程序清楚SUBSRCPND寄存器的相应位清除SRCPND寄存器的相应位清楚INPND寄存器的相应位恢复现场利用SPSR恢复CPSR的标志位中断返回结束图4FIQ中断处理模块流程图324UART中断服务模块设计UART中断服务模块比较简单,由于本次课程设计中中断控制器器开启了UART的数据接收中断,因此处理时只需考虑数据接收的问题。在进入本模块后,首先需要检查串口是否收到数据,如果收到数据则需要检查数据是否存在错误,如果没有错误则需要将数据读出并减一后放到内存的特定地方,方便串口应用程序使用。因此,可将其流程图设计为图5。读取UTRSTAT1并测试其最后一位最后一位是1读取UERSTAT1Y检测是否有错误没有错误读取URXH1至R2Y跳转至R14指向的地址读取UTXH1寄存器并将其丢弃NR264R2自减(551)YR2自减(481)N将R2的低8位存至0X33FFEBFCN结束开始图5UART中断服务流程图4、裸板上串口驱动程序的实现在对裸板上串口驱动程序进行详细设计以后,现在需要根据流程图逐步实现裸板上的串口驱动程序。41裸板启动模块的实现本次课程设计的裸板启动第一步是跳过中断向量表,因此只需要使用一个标号和一条跳转指令即可实现。禁用CACHE和MMU时需要执行ARM920T数据手册中的4条协处理器操作指令即可实现。在关闭中断时将当前状态处理器的I位和F位置为1即可,实现时直接使用两条状态字访问指令即可完成。禁止看门狗定时器时直接将看门狗控制寄存器中的使能位清0即可。在此之后,需要正确的设置开发板上所有的时钟频率。在本次课程设计中把FCLK设置为405MHZ,FCLKHCLKPCLK按照148的比例进行设置。由于在飞凌的开发板上输入时钟为12000MHZ,在设置MPLLCON和UPLLCON寄存器的时候需要计算分频系数,但三星公司要求使用他们提供的数据,因此直接使用即可。时钟分频系数和UPLLCON的设置可用代码41实现。MPLLCON的配置可由代码42实现。代码41MPLLCON的配置LDRR0,0X4C0000140X4C000014CLKDIVNMOVR1,0X5UCLKUPLL4800MHZ,HCLKFCLK/410125MHZ,PCLKHCLK/250625MHZSTRR1,R0MRCP15,0,R1,C1,C0,0SETCPUBUSMODETOASYNCHRONOUSMODEORRR1,R1,0XC0000000MCRP15,0,R1,C1,C0,0LDRR0,0X4C0000080X4C000008UPLLCONLDRR1,0X00038022SETUPLL4800MHZFIN1200MHZSTRR1,R0代码42MPLLCON的配置LDRR0,0X4C0000040X4C000004MPLLCONLDRR1,0X0007F021SETMPLL40500MHZFIN1200MHZSTRR1,R0在时钟配置完成后需要对内存控制器进行配置。由于本次使用的开发板只有BANK6挂载了64MB的SDRAM,因此,只需要配置BANK6和BANK7即可(数据手册要求BANK6和BANK7的某些配置必须一致,如大小、地址分布等)。设置内存控制器可用代码43实现。代码43设置内存控制器LDRR0,0X4800001C0X4800001CBANKCON6LDRR1,0X18001SDRAM,RCD3CLOCK,9BITSCOLUMNADDRESSSTRR1,R0ADDR0,R0,40X48000020BANKCON7STRR1,R0ADDR0,R0,40X48000024REFRESHLDRR1,0XA004EBENABLEREFRESH,AUTO/CBRREFRESH,RP4CLOCK,RC;44CLOCK,REFRESHCOUNT1259STRR1,R0SETSDRAMSIZE64MBBANK7ISUNAVAILABLEADDR0,R0,40X48000028BANKSIZEMOVR1,0X91BURSTENABLE,64MBSTRR1,R0SETSDRAMMODEADDR0,R0,40X4800002CMRSRB6MOVR1,0X0020STRR1,R0ADDR0,R0,40X48000030MRSRB7STRR1,R0在内存设置完成后需要对不同模式下的堆栈指针进行初始化,在本次课程设计中使用满递减堆栈方式,主要是方便以后与C程序的互相调用。用户/系统堆栈大小设置为1MB,其余各个模式的堆栈均设置为1KB。在设置堆栈时需要不断地切换处理器模式,进而修改相应的指针寄存器。堆栈设置完成后需要设置中断控制器,在这里需要将UART1中断的中断方式设置为快速中断模式,并且暂时屏蔽其他可屏蔽中断(由于只编写了UART1的中断服务程序)。在此以后,需要打开CACHE,加快指令执行速度,恢复中断向量表。由于在上电复位是可能产生快速中断,所以在初始时,快速中断对应的中断向量其实和复位中断一样,因此,在所有初始化完成以后需要将其修正。本次课程设计直接修改相应的代码,其代码可用代码44实现。这段代码有很大的特殊性,在不同的代码环境下需要仔细地进行修改。在完成以上的这些工作后,需要打开中断,然后结束本模块运行,转向串口应用模块运行,由于代码都是按顺序进行放置的,所以实际上并不需要使用代码来完成跳转。代码44转向串口应用模块BUILDINTERRUPTVECTORLDRR0,0XEA0000050XEA000005(B0X34)LDRR1,VECTORTABLEIRQSTRR0,R142串口应用模块的实现串口的配置分为两个方面,一是对串口本身的配置,二是对通用I/O口的配置。在本次课程设计中,串口的数据格式为1位停止位、无校验位、8位数据位;串口的波特率为115200BPS;串口的时钟选用PCLK;串口不使用FIFO,不使用流控;串口的分频系数为26(由INT时钟频率/波特率161计算获得)。配置通用I/O口时只需要将相应的I/O口的功能设置为串口下使用的功能即可。因此,串口的配置可用代码45实现。代码45串口的配置LDRR2,0X50004000SETTHEDATAFORMATOFUART1NOPARITY,1STOPBIT,8DATABITSLDRR3,0X00000003STRR3,R2LDRR1,0X50004004CHOOSEPCLKASCLOCKLDRR2,0X00000045STRR2,R1ADDR1,R1,40X50000008UFCON0EORR2,R2,R2DISABLEFIFOSTRR2,R1LDRR1,0X5000400CDISABLEAFC,ACTIVATERTSLDRR2,0X00000001STRR2,R1LDRR1,0X5000402826INT50625000/115200X161LDRR2,0X0000001ASTRR2,R1LDRR2,0X56000070CHANGESOMEOFGPHPINSFUNCTIONTOUARTFUNCTIONLDRR3,0X0000FAAASTRR3,R2串口配置完成后需要将与LED灯相连的I/O口配置为输出,并将输出值全部设置为1,关掉所有LED灯。该步骤完成后,将0压入用户栈中,该0所在的位置将用来存放LED计数值以及在串口收到的数据的存放地址(地址为0X33FFEBFC),这样就实现了UART中断服务程序和串口应用程序的通讯。也就实现了PC机上通过串口来控制LED灯的亮与灭。LED的控制方法如下将计数值得低四位分别移至第5、6、8、10位后再相加,在取反即可得到当前计数值对应的控制LED的数据,在送到I/O口的输出寄存器即可。为了使发送的数据能够方便人的识别,因此需要将数字转换为等价的字符进行发送。在本次课程设计中数据的转换时按照计数值得大小来分别进行转换,当计数值小于10时,需要将其加上48(字符0对应的ASC码为48);当计数值大于9时,需要将其加上55(字符A对应的ASC码为65)。这样,当数据发送到PC时就可直接识别了。数据的转化可由代码46实现。代码46数据的转化ANDR2,R2,0X0F;R2ISCOUNTERVALUECMPR2,10BCSMORETHAN10ADDR4,R2,48BCHANGEMORETHAN10ADDR4,R2,55CHANGESTRBR4,R5STRR0,R1在完成了上述操作以后,直接将相应的数据送至UART1的数据发送寄存器即可完成数据的发送。发送完成后,采用循环进行延时,再使用跳转指令返回应用代码开始的地方重复执行本段代码即可。43FIQ中断处理模块的实现现场保护的工作是保存当前所有寄存器的值到堆栈中,使用一条STMFD指令即可完成(由于堆栈的方式是满递减堆栈)。然后使用一条跳转指令即可跳转到中断服务程序起始地址处。当中断返回时需要关闭中断源,恢复现场以及当前状态寄存器的内容。关闭中断源只需要对照数据手册将相应寄存器的相应位置1即可,恢复现场只需要使用一条LDMFD指令即可实现。最后返回断点出继续执行。以上操作可用代码47实现。代码47中断处理STMFDR13,R0R12,R14BLUART1HANDLERMOVR0,0X0008LDRR1,0X4A0000180X4A000018SUBSRCPNDSTRR0,R1CLEARUART1RECEIVESUBINTERRUPTREQUESTMOVR0,0X00800000MOVR1,0X4A0000000X4A000000SRCPNDSTRR0,R1CLEARUART1INTERRUPTREQUESTADDR1,R1,0X100X4A000010INTPNDSTRR0,R1CLEARALLINTERRUPTREQUESTMRSR0,SPSRMSRCPSR_F,R0LDMFDR13,R0R12,R14SUBSPC,R14,444UART中断服务模块的实现由于FIQ中断处理模块已经将保护现场和恢复现场等工作完成了,所以在本模块中只需要完成对UART1中断的处理工作即可。由于启动代码屏蔽了除UART1接收中断以外的其他中断,所以在中断服务时只需要考虑UART1的接收中断即可。首先需要使用LDR命令来读取UART1发送器的状态字,并CMP指令来判断其中的位,根据判断结果来决定如何处理。如果是收到了正确的数据,需要对其进行一定的转换后才能存储到内存中去。转换的步骤如下,首先判断数据的大小,如果数据大于64,则将其减去(551),如果数据小于64,则将其减去(481),然后再使用STR指令将其存储到内存中。最后退出中断服务程序。上诉的操作可用代码48实现。代码48串口中断服务程序JUDGERXLDRR0,0X50004010LDRR1,R0ANDR1,R1,1CMPR1,1BEQJUDGEMISTAKELDRR4,0X50004024LDRR2,R4BNESTOPJUDGEMISTAKELDRR2,0X50004014LDRR3,R2ANDR3,R3,0X0FCMPR3,0X0BEQREADLDRR4,0X50004024LDRR2,R4BNESTOPREADLDRR4,0X50004024LDRR2,R4ANDR2,R2,0X0FFCMPR2,64BGTCONVERSIONSUBR2,R2,481ANDR2,R2,0X0FBSAVEDATACONVERSIONSUBR2,R2,551SAVEDATALDRR3,0X33FFEBFCSTRR2,R3STOPBXR145、测试51测试工具具备SAMSUNGS3C2440ACPU处理器的飞凌2440开发板、JLINK仿真器、串口线、KEIL开发工具、AXD开发工具、DNW串口工具、JLINK烧写工具和串调试助手。52测试过程1双击KEIL图标,打开KEIL工具。点击PROJECTOPENPROJECT,打开名为BOOTUVPROJ的工程文件;点击OPTIONSUSER,将KEIL按照图6所示进行设置,配置完成后编译当前工程可获得BIN文件。图6USER命令配置2使用串口线将开发板的串口0与PC机相连,使用JLINK将开发板与PC机相连,然后给开发板上电。3双击AXD图标打开AXD工具;点击OPTIONCONFIGURETARGET,选择JLINKRDIDLL,如图7所示。54图7CONFIGURETARGET界面4配置完毕后,打开虚拟XP系统,将配置链接在主机上的串口

温馨提示

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

评论

0/150

提交评论