4-关于JTAG调试、启动代码烧写.doc_第1页
4-关于JTAG调试、启动代码烧写.doc_第2页
4-关于JTAG调试、启动代码烧写.doc_第3页
4-关于JTAG调试、启动代码烧写.doc_第4页
4-关于JTAG调试、启动代码烧写.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1 检测与调试1.1 测试的意义测试是借助合适的手段方法,为了保证PCB设计和制板的正确性,以及对系统性能,可靠性,稳定性进行检查验证。只有保证硬件系统达到设计时要求的健康性、稳定性和功能性,才能进行上层开发。1.2 PCB检测的步骤1.2.1 目检制板之后需要对实际硬件进行检测,首先是目视焊接检查(visual examination),目检虽然不借助任何仪器但是但却是实际硬件测试的序曲,要使用人眼这一部高精密的仪器,对整版进行外观上的“扫描”。主要察看是否有芯片方向错焊,甚至芯片歪斜的情况;是否出现蚀刻铜箔断裂缺失甚至剥离的情况;检查双列贴片类型的芯片,是否有引脚间堆锡(短路)或者引脚虚焊(断路)以及其它一些诸如裂纹、分层、起泡、残余铜等属于加工工艺方面出现问题的情况。1.2.2 电压检查当认为PCB不具有难以接受的影响系统的缺陷时,便可以开始和电相关的测试。供电的检查是整个系统上电检查的前奏,目的是排除任何可能发生的供电错误,如电源短路包括电源平面间短路,开路、芯片错碰电平。虽然是电压的检查,但是此时还不宜上电,避免击穿芯片烧毁电路。需要对照原理图、PCB,按照系统中所标出的电压,逐个检查芯片的电源脚是否处于对应的电源网络。首先,用万用表拨蜂鸣档检查电源适配接头的+5V和GND,以不鸣为正常。然后,将万用表黑笔与地相接,红笔逐个试探各电压测试点,以检测不同电源平面和地之间是否短路,以不鸣为正常。接着,将万用表黑笔与其中一个电源相接,红笔逐个试探个电压测试点,以检测不同平面之间是否存在短路,检测是否存在供电错误的问题,以不鸣为正常。最后,对于个别芯片,为确保万无一失,对其电源脚和接地脚进行检测。测量电源脚的时候,需要用万用表黑笔接在该芯片的供电电平测试脚处,红笔接芯片对应电源脚,以万用表鸣叫为正常。测量接地脚的时候,同法用黑笔接参考地端,红笔接芯片接地端。当PCB确定无误的时候,可以尝试加电进行下一步。1.2.3 上电检查上电后留意主要元件以及电源周围钽电容的状态,如果听见锡膏融化被挤压的尖锐声音、发现元件红热、闻到树脂焦糊味或者是电容爆炸,必须立即断电。当PCB上电源指示LED工作正常时,即可开始进行其它点的检测。上电检测的一个重点内容是串口的好坏,因为还没有数据进出,因此主要对串口电平进行检测,对照第三章中的图3.5,检测两只MAX3232的管脚2(C+)、6(C-)、7(T2out)、9(R2out)、12(R1out)、14(T1out)的电平,检验值应符合以下电压值:C+的值为+5.5V+6V、C-的值为-5.5V-6V,R1out、R2out值为+3.3V,T1out、T2out值为-6V。检验的目的是保证MAX3232空闲状态下内部已经处于正常状态,一旦加载启动代码就可以输出调试信息。4.3第一次烧写启动代码刚完成上电检测,所有电平都正确的时候,整个系统还不具备任何一丁点的功能。因此需要首先为系统配置引导程序,引导程序使用三星公司的标准程序经ADS编译后生成镜像,将20针MultiICE-JTAG口接在电路板的对应接口上,从PC上启动SJF-2440.exe烧写工具,选择对应的FLASH型号K9F1208U0C,输入烧写的真实地址0x00000000,进行烧写。在嵌入式系统中,不像PC那样,在主板上有一个CMOS,用来存放固件,而是用一个被称作bootloader的程序,用以启动系统和作简单的管理。实际上,在一个稍微复杂的嵌入式系统中,bootloader是十分重要的,它有如下的一些作用:(1) 把内核(kernel)复制到RAM,然后启动它;(2) 初始化硬件;(3) 下载程序并写入flash;(4) 检测目标板.Vivi是什么?Vivi是mizi公司设计,为ARM处理器系列设计的一个bootloader,因为vivi目前只支持使用串口和主机通信,所以您必须使用一条串口电缆来连接目标板和主机。一、安装BIOS1、安装BIOS到ARM板连接JTAG 烧写板到目标板,打开板子电源,使用命令行工具sjf2410.exe 可以烧写bios到NandFlash 或者Nor flash。烧写sbc_vivi 到Nand Flash 的典型界面如下:2、安装USB驱动BIOS 烧写完毕,取下JTAG 烧写板,并选择从Nand Flash 启动系统,打开dnw.exe 软件,点菜单Configuration,设置串口如下:再点菜单Serial Port-Connect,按住电脑键盘空格键以进入vivi模式,此时打开板子电源或者复位系统,可以看到从串口打印出如图信息,如果信息不全,请再次使用上面的步骤安装一次BIOS。提示:如果此时接上USB 电缆,将会看到dnw.exe 标题栏显示USB:OK,这表明您可以使用USB 来下载程序了,详见以下安装步骤。二、安装Linux安装Linux 系统主要有以下步骤:(1)格式化Nand Flash在vivi 模式下输入:bon part 0 192k 1216k 对板子进行分区。说明:bon 是分区命令,以上命令的意思是把Nand Flash 从0 开始分为三个区:0- 192k: 大小为192k192k-1216k:大小为1M1216k-64M:大小为62.8M注意:分区后不要关电或者掉电,因为此时NandFlash中已经被清空,需要照下面的步骤再重新下载一次BIOS,否则你将需要使用SJF2410.exe再次下载一次。(2)重新安装BIOS接上面的步骤,输入:load flash vivi u此时出现如下提示界面,板子等待用户进行USB 下载传输,点USB Port-Transmit,找到并选择sbc_vivi 开始下载,下载完毕,vivi 将会被自动烧写到Nand Flash。提示:用户也可以使用load flash vivi x命令,通过超级终端的xmodem 协议来下载程序。(3)安装内核文件接上一步骤,输入:load flash kernel u此时点击USB Port-Transmit 选择您所需要的的内核文件开始下载。下载完毕,Linux内核文件将会被自动烧写到Nand Flash。提示:用户也可以使用load flash kernel x命令,通过超级终端的xmodem 协议来下载程序,不过速度比较慢。(4)安装文件系统接上一步,输入:loadyaffse root u此时点击USB Port-Transmit 选择相应的文件系统映象开始下载。下载完毕,Linux内核文件将会被自动烧写到Nand Flash。提示:此过程大概需要2-3 分钟。(5)启动系统接上一步,在vivi 模式下输入boot,或者重新启动SBC2410X 可以正常启动系统。三、ADS编译过程:1、 将JTAG调试小板连接到计算机并口,并和调试目标连上。在打开H-JTAG的时候,H-JTAG会自动执行检测操作。用户也可以通过H-JTAG的菜单/工具栏进行检测,如下图所示。如果检测成功,H-JTAG主界面将会显示检测到的芯片类型和ID,如果检测失败,请检查H-JTAG设置和硬件连接。 图4-1 检测目标板2、 打开ADS,添加工程文件,以串口调试为例,添加工程文件UART.mcp,如下所示:3、选择“DebugRel Setting”,弹出设置窗口如下:选择ARM Assembler,选择芯片类型,此处我们选用ARM920T,如图所示:再点击ARM C Comple,同样选择ARM920T,如下图所示:再点击ARM Linker,设置RO Base为0x3000000,设置RW Base为0x3040000,最后点击确定。如下图所示:3、 点击make,点击Debug, 弹出AXD界面。对AXD进行配置ADS(ARM DEVELOPER SUIT)是ARM公司原厂的IDE,拥有众多的用户。AXD是ADS自带的调试软件。下面介绍如何配置AXD以配合H-JTAG进行调试。首先,点击“Option”“Configure Target” 菜单,如图所示: 图 Configure Target 菜单接下来用户会看到如图所示的Configure Target配置窗口。 Configure Target配置窗口在上图所示的配置窗口中,点击ADD按钮,用户会看到如图4-3所示的选择DLL文件的对话框。在对话框中选择H-JTAG安装目录下的H-JTAG.dll,点击确定。 图4-3选择H-JTAG.dll确定后,用户可以看见H-JTAG已经添加到AXD里去了,如图4-4所示。双击H-JTAG或者单击Configure按钮,用户就可以看到如图4-5所示的H-JTAG信息。在图4-4中,点击OK,ADX的配置就全部完成了。图4-4 配置完成图4-5H-JTAG信息4、 在AXD里面加载镜像文件。如下图所示。点击“file”“load image”,找到所调试的程序选择DebugRel下面的“.axf”文件。点击“open”,加载成功。5、点击“运行”调试程序,此时如果程序没有问题,在超级终端可以观察到相应的程序运行结果。1.3 内存测试程序内存测试程序的目的是检测内存的所有存储单元是否能被正常读写。只要可以正常访问所有存储单元,也即从另方面证明,MCU与SDRAM间通信良好,信号可正常在MCU到SDRAM的每一根传输线上传播。根据3.4.2章节的设计,测试的地址范围从0x30200000,到0x31ff0000。因为将偏移地址0x00000000到0x00200000的共计2M字节的空间划分给系统用于存储启动代码,启动代码会在系统上电后被全部从FlashROM装入到RAM。所以,能够启动硬件从串口得到调试信息,就证明了SDRAM中起始2M空间的无误性。测试程序定义了一个MemTest( )函数,函数分为两个部分,首先设定一个指针变量pt,用来存储内存的每一个存储单元的地址,因为本系统构建了32位的数据总线,因此pt的类型为无符号整形unsigned int。第一部分为对内存单元的写操作,将指针指向的地址存入指针指向地址的存储空间。第二部分对内存单元进行读操作和校验数值,操作指针依次指向每一个存储空间,读每一个存储空间,并将其值与指针变量中存储的值进行比较,如果有误则说明存储系统出现问题,用一个标准输出语句报错并将问题单元格的地址输出。主要代码如下:Uart_Printf(Memory Test(%xH-%xH):WR,_RAM_STARTADDRESS+0x00200000,(_ISR_STARTADDRESS&0xffff0000); /输出log,信息为存储测试开始,首先进行men写操作,输出操作范围为地址0x00200000H到0x33ffff00Hpt=(U32 *)(_RAM_STARTADDRESS+0x00200000);/开始,首先将起始地址赋给指针变量pt,指针指向测试的起始地址0x00200000while(U32)pt0x31ffff00 *pt=(U32)pt; /将pt本身的地址值赋给pt指向的存储单元,32位地址数据被分为2个字分别存储到两片内存的对应单元中pt+;/pt指向下一个存储单元格 Uart_Printf(bbRD); /开始进行读操作并对单元格内容进行校验pt=(U32 *)(_RAM_STARTADDRESS+0x00200000);/开始,首先将起始地址赋给指针变量pt,指针指向读操作的起始地址0x00200000while(U32)pt0x31ffff00 data=*pt; /将指针变量pt所指向单元格中的内容赋给32位辅助变量dataif(data!=(U32)pt) /判断pt所指向单元格中的内容是否与pt指向的地址一至,如果不一致,进入大括号执行里面的语句 memError=1;/内存出错标志变量置1 Uart_Printf(bbFAIL:0x%x=0x%xn,i,data);/报错并举出出错的地址 break; /报错后跳出校验循环pt+; /指针指向下一个单元,准备下一循环读操作 if(memError=0)Uart_Printf(bbO.K.n); /条件比较中看标志变量memError是否为假,如果为假即无错误发生,检测结束,输出“O.K.”,程序结束。程序中存储空间起始地址_RAM_STARTADDRESS为0x00000000,中段服务程序装载空间起始地址_ISR_STARTADDRESS为0x33ffff00,分别在三星提供的头文件option.h中定义。1.4 小结当准备调试一块板的时候,一定要先认真的做好目视检查,检查在焊接的

温馨提示

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

评论

0/150

提交评论