基于ARM9的CMOS图像采集系统的设计与实现1_第1页
基于ARM9的CMOS图像采集系统的设计与实现1_第2页
基于ARM9的CMOS图像采集系统的设计与实现1_第3页
基于ARM9的CMOS图像采集系统的设计与实现1_第4页
基于ARM9的CMOS图像采集系统的设计与实现1_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ARM9的CMOS图像采集系统的设计与实现系统简介采用32位ARM微处理器、CMOS图像传感器和CPLD为核心器件,设计实现面向机器视觉领域的CMOS图像采集系统,主要功能模块有SDRAM存储单元、图像采集单元、以太网传输模块、UART串口通信模块、Flash模块、电源模块等;与传统的“图像采集卡-PC-终端控制设备”模式的机器视觉系统相比,具有体积小、成本低、功耗低、实时性强、设计灵活等优点。该系统可应用于视频图像监控、图像自动检测、医疗及军事检测等场所,具有良好的应用前景。机器视觉在国民经济、科学研究以及国防建设等领域都有着广泛的应用。在大批量工业生产过程中,用人工视觉检查产品质量效率

2、低且精度不高,用机器视觉可以提高生产效率和自动化程度。图像采集系统是机器视觉系统的重要组成部分,目前图像采集常用的两种图像传感器为CCD与CMOS图像传感器。CCD一般输出带制式的模拟信号,需要经过视频解码器得到数字信号才能传入微处理器中,而CMOS图像传感器直接输出数字信号,可以直接与微处理器进行连接。不同的CMOS图像传感器有不同的性能,主要表现在图像分辨率大小不同、帧速率不同、曝光方式不同等,CMOS图像传感器可直接通过I2C来设置图像分辨率大小及曝光、增益等参数,而CCD图像传感器则需要对视频解码器进行设置来控制图像的曝光、增益等参数信息。相对于CCD图像传感器,CMOS图像传感器具有

3、低功耗、小体积、高速数据传输和方便控制等优点,因此,CMOS图像传感器更适用于嵌入式系统应用中1。本文从实际应用出发,采用32位ARM9微处理器S3C2410A作为CPU来控制其他功能模块,设计实现面向机器视觉的CMOS图像采集系统,主要功能模块有SDRAM存储单元、图像采集单元、以太网传输模块、UART串口通信模块、Flash模块、电源模块等。与传统的“图像采集卡-PC-终端控制设备”模式的机器视觉系统相比,具有体积小、成本低、功耗低、实时性强、设计灵活等优点。1 系统结构典型的机器视觉系统一般包括图像采集模块、图像数字化模块、数字图像处理模块、光源系统、智能判断决策模块和机械控制执行模块2

4、。其中图像采集和数字图像处理模块的速度是评价嵌入式视觉系统硬件设计的性能指标,文献36分别给出了目前常见的四种嵌入式视觉系统结构:(1) 采用USB接口摄像头结构3:图像采集部分的硬件用USB接口的CMOS摄像头,摄像头应可与集成的USB的CPU接口直接相连。USB接口可以实现高速的串行通信,但USB摄像头要开发专门的驱动,大大增加了软件的开发量和难度。(2)引入异步FIFO结构4:在图像传感器和主控CPU间采用异步FIFO解决传感器输出数据频率和主控CPU采集频率不匹配的问题,当FIFO满时CPU再快速读取FIFO数据。异步FIFO可以是双口RAM或者在FPGA内开辟。(3) CPLD为核心

5、的图像采集结构5:直接由CPLD根据图像传感器输出的时序信号,控制SRAM的读写,当一帧数据信息采集完毕后向CPU发送采集完毕信号;CPU需要对图像进行处理时,再通过CPLD到SRAM里读取数据。(4) 由外部中断实现图像采集结构6:图像传感器的帧同步、行同步和像元同步信号分别与CPU的一个外部中断连接,CPU根据中断次数来判断一帧图像是否采集完成。通过对几种方案的对比分析,综合实际应用及开发难度等因素,确定系统结构如图1所示,系统由图像采集、图像缓冲和图像处理三部分组成。在图像缓存中,CPLD将图像传感器采集的10位数据移位成32位,再通过外部请求DMA的办法,由主控CPU的DMA控制器将3

6、2位数据送到RAM保存。这样可以减少常见中低速图像采集的资源浪费,又避免了CPU响应滞后的缺点。 图1 图像采集系统框图2 硬件设计系统总体硬件结构图如图2所示。其中,图像采集器采用柯达公司的CMOS单色图像传感器KAC9638;图像的缓存由CPLD芯片XC95144和外扩SDRM(HY57V561620)组成;图像处理核心部分采用Samsung公司的ARM9(S3C2410A),并外扩了UART、以太网通信接口、USB口及LCD人机接口,方便系统调试和与其他设备交换数据。 图2 系统硬件结构框图 硬件系统工作流程是:(1)系统上电后ARM9通过I2C接口直接对图像传感器进行初始化,然后等待上

7、位机命令;(2)接收到上位机命令后,ARM9先进行DMA初始化,然后向CPLD发送采集命令。CPLD启动图像采集并申请ARM9的DMA,将一帧图像的数据保存到ARM9的SDRAM中;(3)完成图像采集后ARM9进入DMA完成,进行图像处理并将结果通过串口输出。2.1 存储器选择S3C2410A芯片外部可寻址的存储空间是1 GB,被分成8个存储块,每块128 MB,各个存储块由片选信号nGCS0nGCS7译码产生。数据总线引脚为DATA0DATA31共32根,可配置成8 bit/16 bit/32 bit的数据宽度;地址总线引脚为ADDR0ADDR26共27根,支持128 MB空间。S3C241

8、0A是32位的微处理器,外部总线也是32位,要充分发挥其32位总线性能优势,应采用32位的存储系统。方法是采用两片16位数据宽度的Flash存储器芯片并联或一片32位数据宽度的Flash存储器芯片。本设计采用了两片Intel的E28F128J3A组成了16M32bit的NOR Flash,其中一片为高16位,另一片为低16位。采用三星公司的两片半字SDRAM (HY57V561620)共同组成一个16 M32 bit的SDRAM系统,提高了其与CPU的通信效率。2.2 通信接口设计2.2.1 UART及USB接口设计S3C2410A的UART提供了三个独立的异步串行I/O口,每个串行口可以独立

9、地工作在中断模式和DMA模式。UART使用系统时钟,支持最高230.4 kb/s波特率的数据通信。每个UART串行口提供两个16 B的FIFO分别用来做发送和接收缓冲。本系统采用MAX202芯片作为RS-232的接收器/驱动器,将UART0和UART1连接到9DB接头与DSP和PC通信。S3C2410A有2个USB主设备和1个USB从设备,USB设备控制器允许DMA模式的批量传输、中断传输和控制传输。在系统设计中,USB设备用来和PC机通信供调试用,因此使用从设备口(兼容USB Ver1.1标准)。2.2.2 以太网接口电路设计S3C2410A片上没有以太网口,因此必须外加以太网控制器才能扩展

10、。系统采用16位以太网控制器CS8900A,该芯片的特点是:符合IEEE802.3标准,支持全双工收发可达10 Mb/s,内置SRAM收发缓冲,减轻了对主处理器的开销。以太网电路如图3所示,S3C2410A通过16位数据线,20位地址线连接CA8900A。片选信号为nGCS3,即将CS8900A的内部寄存器和帧缓冲区映射到S3C2410A的Band4中连续4 KB的存储区中,主机可以通过这个存储空间直接访问CS8900A的内部寄存器和帧缓冲区。CS8900A与RJ-45接口直接连接一个网络变压器,起到电平转换及电气隔离的作用。此外,CS8900A提供两种操作模式:I/O模式和内存模式,本系统通

11、过CPLD选择其工作模式。FB2022网络变压器RJ-45接口CPLD CS8900A控制逻辑 S3C2410A D0-d15 A0-a19 nCSC3 R/W 图3 以太网口连接电路结构图2.3 图像采集模块电路设计图像传感器采用柯达公司生产的CMOS单色图像传感器KAC9638。KAC9638是高性能、低功耗、SXGA CMOS有源像元传感器,具有以下特点:(1)KAC9638是1/2英寸,1 0241 280有效图像阵列的CMOS图像传感器,在满足应用场合所需的分辨率条件下,还具有良好的动态范围(55 dB),最小照度(2.40/Lux-sec)等性能;(2)KAC9638内置10位的A

12、/D转换器,直接输出8位或10位的数字灰度值,在保证精度的同时不需另外接A/D转换器,大大简化外围电路;(3)KAC9638具有良好的电源管理功能和低功耗特性。数据传送时芯片的总功耗为150 mW。此外,为进一步降低系统的功耗,芯片还具有可编程“上电”和“下电”模式。CMOS图像传感器目前普遍采用I2C总线,本系统通过S3C2410A的I2C总线与KAC9638的SCL、SDA连接。由S3C2410A直接完成对图像传感器的初始化。KAC9638内部嵌入了一个10位A/D转换器,因而可以同步输出10位的数字视频流,但是S3C2410A具有32位的外部总线,直接将10位数据接到总线上会造成资源浪费

13、,降低CPU效率,因此,KAC9638和S3C2410A之间连接CPLD,由CPLD完成10位视频数据到32位的转换,图像采集接口电路结构框图如图4所示。 图4 图像采集接口电路结构框图为使S3C2410A能像访问内存一样读取图像传感器的数据,将CPLD映射到S3C2410A的存储单元上。CPLD上的图像缓存片选信号nGCS4,地址映射到S3C2410A的Bank4,地址范围:0 x200000000 x27ffffff。实际只用其中的一个地址0 x20000000(即DMA的源地址)。图像传感器由S3C2410A的clockout0引脚提供。此外,PCLK、HREF、VSYNC分别为像素、行

14、、帧同步信号;OE为图像传感器启动采集信号;XINT是ARM9与CPLD的外部中断联络信号;XDREQ和XDACK为S3C2410A的DMA的请求和握手信号。3 系统驱动软件设计3.1 I2C串行总线通信协议I2C总线是嵌入式系统常见的网络接口,由SCL(串行时钟)和SDA(串行数据)两根总线构成。该总线有严格的时序要求,总线工作时,由串行时钟线SCL传送时钟脉冲,由串行数据线SDA传送数据。总线必须由主设备控制,主设备产生串行时钟控制总线的传输方向,并产生起始和停止条件。I2C总线传输一个字节的时序如图5所示。当主设备写从设备时,传输的数据要跟有从设备的地址。从设备不能主动执行数据传输,所以

15、主控设备读从设备时必须发送一个带有从设备地址的读请求。本系统中ARM9是主设备,图像传感器是从设备,ARM9通过I2C总线改写KAC9638寄存器的值完成初始化。根据I2C通信协议,改变某个寄存器的值的过程是:先发送CMOS传感器特定写地址(7位地址+0),紧接着发送需要写的寄存器的地址,再发送数据;而要读取某个寄存器的值的过程是:先发送CMOS传感器特定写地址,紧接着发送需要读的寄存器的地址,再发送CMOS传感器特定读地址(7位地址+1),最后接收数据。 图5 I2C总线一个字节的传输时序 3.2 图像采集CPLD时序控制CPLD采集两个10位像元数据组合成32位(不够的位用0补充)可以提高

16、图像采集效率。并且设计中使用DMA的方式保存图像数据,可以减少CPU的开销。以CPLD为核心器件设计的图像采集逻辑结构图如图6所示。图6 图形采集逻辑结构图逻辑结构图的工作原理如下:(1) CLKOUT0为S3C2410A的输出时钟引脚,根据S3C2410A内部寄存器MisCCR中46位的不同设置可以输出不同的时钟,如系统时钟FCLK、AHB(内部)总线时钟HCLK和APB(外部)总线时钟PCLK等。系统将其作为CMOS图像传感器的主时钟输入MCLK。(2) 启动信号START为S3C2410A的一个I/O,高电平有效,由于KAC9638的启动信号OE是低电平有效,所以它们之间要连接一个非门。

17、(3) VSYNC为传感器的帧同步信号,输出一帧有效图像时该信号一直为高电平,用该信号连接S3C2410A的外部中断XINT,使CPU能控制一帧图像的开始和结束。(4) D9:0为图像传感器输出的数据流,D15:10位用0填充,组成16位数据输入到缓冲。缓冲的写入允许信号是启动信号START和帧有效信号VSYNC的逻辑与。在缓冲内两个周期移位成32位数据。(5) 缓冲写入时钟WRCLK由传感器的像元输出时钟PCLK提高,一个周期写入一个10位A/D值,所以一次输出32位数据时,输出时钟周期是PCLK的二分频。并将PCLK的二分频作为S3C2410A外部DMA的请求信号XDREQ。(6) 片选信

18、号线nGCS4:作为32位缓冲的控制线,低电平有效。在进行数据采集时将DMA方式的源地址设置在BANK4范围内,读操作时即选中该缓冲。3.3 DMA方式采集图像数据程序设计系统采集一帧图像数据的流程图如图8所示。图8 采集图像数据流程图 启动图像采集:主控CPU从串口或其他通信口接收到采集命令后,通过START信号线通知CPLD采集信号,CPLD再通过硬件引脚OE启动KAC9638采集图像数据。 DMA初始化:包括DMA的源地址、目标地址、DMA次数等初始化。 开外中断:当一帧数据采集完成后,通过外部中断通知CPU。 DMA数据传输无需CPU干预,一帧图像完成后产生中断。(5) DMA中断产生

19、并且外部中断产生才算是一帧图像采集完成,然后交由主控CPU进行处理。若只有其中一个中断产生,并且等待另一个中断超时,则是在采集过程中丢失了数据,采集图像失败。4 硬件调试4.1 硬件调试环境在系统硬件调试中,使用集成开发环境配合JATG仿真器进行调试是目前采用最多的一种调试方式7。集成开发环境选用ARM公司的ADS1.2。JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JATG边界扫描口进行调试的设备。属于完全非插入式(即不使用片上资源)调试。4.2 硬件调试步骤(1)BootLoad系统引导测试先使用英蓓特公司开发的Flash烧写工具将BootLoad程序烧写到Flash,若在PC超级

20、终端上能正确接收目标板的串口返回的启动信息,表明系统正常运行,可以用ADS下载程序到SDRAM进行调试。(2)图像传感器测试I2C配置测试将ADS编译好的bin文件下载到目标板的SDRAM,超级终端接收到返回的图像传感器ID正确,则表明I2C通信正常。通过I2C配置图像大小为3(H)5(V),用示波器测量传感器帧同步(vsync)、行同步(hsync)及像元时钟(pclk)的关系。图像采集测试为方便检验采集到的图像,将ARM采集到的图像数据通过UART口发送到PC终端,再将数据组合成图像显示。5、应用前景采用CMOS图像传感器、CPLD和ARM9的DMA结合完成图像的采集是本系统的特点。该方法

21、提高了图像的采集速度,减少了CPU的开销。CMOS图像传感器价格适中,外围简单,且集成I2C接口便于编程控制;CPLD将CMOS传感器输出数据移位成32位数据,可以使传感器以更高的速度输出;ARM9的DMA负责图像采集,使得CPU可以解放出来处理其他任务。实验测试结果证明,该图像采集系统硬件平台方案设计合理、可行。该系统在实际中可以应用于视频图像监控、图像自动检测、医疗及军事检测等场所,具有良好的应用前景。参考文献1 李继军,杜云刚,张丽华等.CMOS图像传感器的研究进展J.激光与光电子学进展,2009(04):45-52.2 付斌,王科俊,陆扬.基于USB2.0的CMOS图像采集系统的实现J

22、.微计算机信息,2009(10):96-98.3 李洪宇机器视觉图像采集设计与研究D大庆:大庆石油学院,2007.4 龙再川,赵凯生,洪明坚,等ARM系统中DMA方式在数据采集中的应用J国外电子元器件,2007(2):66-69.5 林志琦,张修谦,富丽,等基于TMS320F2812和CPLD的200万像素数字图像采集系统接口的设计J长春理工大学学报,2007,30(2):39-41.6 叶权来,郑黎明ARM9平台下的CMOS图像传感器数据采集系统J电子工程师,2007,33(6):70-72.7 符意德,陆阳嵌入式系统原理及接口技术北京:清华大学出版社,2007附录资料:不需要的可以自行删除

23、ARM经典40问答第1问:Q:请问在初始化CPU堆栈的时候一开始在执行mov r0, LR这句指令时处理器是什么模式A:复位后的模式,即管理模式。第2问: Q:请教:MOV中的8位图立即数,是怎么一回事 0 xF0000001是怎么来的 A:是循环右移,就是一个0255 之间的数左移或右移偶数位的来的,也就是这个数除以4一直除, 直到在0-255的范围内它是整数就说明是可以的! A:8位数(0-255)循环左移或循环右移偶数位得到的,F0000001既是0 x1F循环右移4位,符合规范,所以是正确的。这样做是因为指令长度的限制,不可能把32位立即数放在32位的指令中。移位偶数也是这个原因。可以

24、看一看 HYPERLINK t _blank arm体系结构(ADS自带的英文文档)的相关部分。第3问: Q:请教: HYPERLINK t _blank arm微控制器基础与实战2.2.1节关于第2个操作数的描述中有这么一段:#inmed_8r常数表达式。该常数必须对应8位位图,即常熟是由一个8位的常数循环移位偶数位得到。 合法常量:0 x3FC,0,0 xF0000000,200,0 xF0000001. 非法常量:0 x1FE,511,0 xFFFF,0 x1010,0 xF0000010. 常数表达式应用举例: LDR R0,R1,#-4 ;读取 R1 地址上的 HYPERLINK /

25、 t _blank 存储器单元内容,且 R1 = R1-4 针对这一段,我的疑问: 1. 即常数是由一个8位的常数循环移位偶数位得到,这句话如何理解 2. 该常数必须对应8位位图,既然是8位位图,那么取值为0-255,怎么0 x3FC这种超出255的数是合法常量呢 3. 所举例子中,合法常量和非法常量是怎么区分的 如0 x3FC合法,而0 x1FE却非法0 xF0000000,0 xF0000001都合法,而0 xF0000010又变成了非法 4. 对于汇编语句 LDR R0,R1,#-4,是先将R1的值减4结果存入R1,然后读取R1所指单元的 值到R0,还是先读取R1到R0,然后再将R1减4

26、结果存入R1 A:提示,任何常数都可用底数*2的n次幂 来表示。 1. HYPERLINK t _blank arm结构中,只有8bits用来表示底数,因此底数必须是8位位图。 2. 8位位图循环之后得到常数,并非只能是8位。 3. 0 xF0000010底数是9位,不能表示。 4. LDR R0, R1, #-4 是后索引,即先读,再减。 可以看一看 HYPERLINK t _blank arm体系结构对相关寻址方式的说明。第4问: Q:在程序移植的过程中,什么代码段处于什么样的模式,这可真是一个困扰人的大难题,有没有一种标志或办法能够识别代码段处于什么样的模式 A:读取 CPSR ,任何时

27、候都是可以读。第5问: Q:为什么保护现场时,总是保护 R0-R3,R12,为什么不保护R4-R11A:请看一看 HYPERLINK t _blank arm-thumb过程调用标准这个文档。第6问: Q:请问 mov R1,#0 x00003DD0 错误: out of the range of operation是怎么回事情 我就是想IODIR=0 x00003dd0,汇编就是 LDR R0,=IODIR MOV R1,#0 x00003dd0 STR R1,R0 编译时候说是超出操作范围 A:使用ldr,mov的操作数为8位位图数。第7问: Q:在 HYPERLINK t _blank

28、arm7TDMI(-S)处理器内部有37个用户可见的寄存器: 问题:用户可见应该怎样理解 这37个寄存器是否是37个不同的物理寄存器, 例如R8与R8_fiq应该是两个不同的物理寄存器吧 A:用户可见是指用户可以通过程序操作的。R8与R8_fiq是两个不同的寄存器。第8问: Q: USR模式,SVC模式,IRQ模式分别有哪些限制 A:对于外设操作限制与芯片设计有关。USR模式不能设置CPSR寄存器。 用户模式下无SPSR寄存器,代码可以为 HYPERLINK t _blank arm,Thumb.第9问: Q:请问在初始化堆栈时就决定了工作模式是什么意思 如何决定工作模式的 A:设置CPSR寄

29、存器。第10问: Q:请问: HYPERLINK t _blank arm汇编程序设计中所谓的文字池作何理解 A:可以理解为常量数组,文字池中保存的是常量,这些常量可以是正常的常量,也可以是地址。第11问: Q:为什么在中断向量表中不直接LDR PC,异常地址.而是使用一个标号,然有再在后面使用DCD定义这个标号 A:因为LDR指令只能跳到当前PC 4kB范围内,而B指令能跳转到32MB范围,而现在这样在LDR PC, xxxx这条指令不远处用xxxxDCD定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现4GB全范围跳转。 Q: LDR 不是可以全空间跳转的吗 HYPERLIN

30、K t _blank arm微控制器基础与实战程序清单5.3. A: LDR伪指令通过设置指令缓冲池才能实现全范围跳转,而LDR指令则只能实现4KB范围跳转。第12问: Q: ARM7TDMI-S和 HYPERLINK t _blank arm7TDMI有何区别 A: ARM7TDMI-S是ARM7TDMI的可综合(synthesizable)版本(软核)。 对应用工程师来说,除非芯片生产厂商对ARM7TDMI-S进行了裁减,否则ARM7TDMI-S与ARM7TDMI没有太大的区别,其编程模型与 HYPERLINK t _blank arm7TDMI一致。第13问: Q: DCD伪指令的疑惑。

31、 StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 这句话是什么意思 DCD后面的程序标号或数字表达式是何意 A:它的内容是初始化递减堆栈的最高地址,看 HYPERLINK t _blank arm微控制器基础与实战2.3.2节。 第2章 编译器与语言第14问: Q:00254: Unimplemented RDI message是什么错误提示 我的设置连接都正常,是不是芯片烧了 A:是JTAG的问题。可以先使用ISP操作试试就知道了,如果能ISP,说明LPC2104没有损坏,还能正常运行程序。第15问: Q:请教:我在调试程序的时候

32、在AXD中出现这样的提示信息: RDI Warning 00159:could not open specified device port. 我是根据配套教程的步骤设置的。 A:请按照光盘easy HYPERLINK t _blank arm_drivereadme.txt安装驱动程序。第16问: Q:我用实验程序运行经常出现下列信息! 程序不能 HYPERLINK / t _blank 下载到目标板。 Warnning! interrupt vectors data is not correct! Program you downloaded can not run freely! A:1

33、.仿真器配置一定要正确,即Easy HYPERLINK t _blank arm Configuration设置窗口中的FLASH项中选择Erase Flash when need; 2.向量表累加和要为0; 3.可以先在RAM调试一个程序(运行),然后STOP,再使用File-Load Image加载要 HYPERLINK / t _blank 下载到FLASH的调试文件。第17问: Q:在ADS中是否可以进行软件调试基于UCOS-II的程序 A:ADS软件调试只能调试 HYPERLINK t _blank arm的内核,不能调试外设。但是取消 PLL 锁定检测后,可以调试任务切换,最终到空

34、闲任务上。开始移植时软件仿真是最好的工具。第18问: Q: HYPERLINK t _blank armulate软件是干什么的 2104不是用EasyJTAG.dll来仿真吗 A:软件仿真只能仿真 HYPERLINK t _blank arm 核。第19问: Q:有关LPC2106.INC的问题。我无法在project引用lpc2106.inc文件,只能引用lpc2106.h文件, 这是什么原因 且当我的主程序用汇编编写时,不能引用lpc2106.h,用lpc2106.inc则无法加入project,请问汇编器应如何设置 A:不用加2106.inc只要该文件在你的工程文件夹中,就可以直接在汇

35、编程序的开始处加 include 2106.inc. 注意:该文件是汇编文件定义的头文件,定义内部寄存器。第20问: Q:入口点是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE时总是提示我 Image does not have an entry point,可是我是把光盘的vetctors.s 复制过来的,而且仔细看了看,已经声明了ENTERY,这是怎么回事A:需要在ADS中设置入口。第21问: Q:请教:如何定义不被初始化变量 A:让编译器不知道有这个内存地址即可。 A:如用分散加载文件分配RAM故意预留一部分RAM不分配,用它来存您不需要初始化的东西。或者不调用编译器

36、提供的启动代码,不过这样可能编程会麻烦一些。第22问: Q:我直接通过JTAG口 HYPERLINK / t _blank 下载EasyArm板带的Ext1_test程序到 HYPERLINK t _blank arm中,出现中断向量的告警: interrupt vector is not correct HYPERLINK t _blank arm is not running freely. 果然复位后芯片不能运行。但是我用串口 HYPERLINK / t _blank 下载后芯片能正常工作,中断也行的。 并且我用JTAG仿真的话,芯片能正常工作,中断也行的,唯独JTAG口 HYPERLI

37、NK / t _blank 下载不行。 不知道是什么原因 A:仿真器配置中要设置Erase Flash when need.也可以这样试试: 1.可以先打开一个工程在RAM中调试运行; 2.stop程序; 3.使用File-Load Image重新加载Ext1_test生成的*.axf文件。 Q:仿真器配置中我是设置了Erase Flash when need,但照你说的话,那不是在RAM下调试吗 在RAM下调试我是可以的,但是下载后出现interrupt vector data is not correct. 我又看了几篇文章,是不是跟中断向量表的累加和不为零有关系啊 A:是的,是向量表的累

38、加和不为零。 因为如果用ISP下载能运行,说明向量表的累加和已为零,而用JTAG下载不能运行的情况可能是 没有正常下载代码。先在RAM中调试,目的是为了后面正确下载程序到FLASH.第23问: Q:用Scatter怎样将某个函数或文件定位在Flash的某个位置 第24问: Q:我在仿真时遇到这样的提示: Error, Flash is protected by user configation! 怎么写到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基础与实战附录一。第25问: Q:我在移植实验中想到了两个问题,如下: 1.Debug和Release以及De

39、bugRel有什么不同,为什么在作2104移植实验时,要用Release 2.在Release中为什么要将RW Base设置为0 x40000040 我将其设置为0 x40003000, 为什么不能工作 A:都只是一个问题,内存空间的使用,因为跑OS要比较大的内存空间,所以要腾出点地方。第26问: Q:请问没有MMU的 HYPERLINK t _blank arm芯片是否支持使用malloc()函数动态分配内存 A:是否支持malloc()函数与芯片没有多大关系,主要与编译器有关。 Q:再问:如果没有操作系统支持呢 A:也支持。第27问: Q:在I2C实验程序中,我想查看数据缓冲区DataBu

40、f的值,怎么查看 A:watch窗口或鼠标停留在要查看的变量名上。 Q:我查询的是写入DataBuf缓冲区的值,鼠标在上面根本就不会出现他的值,即使在watch中加入, 结果也是name not found. A:变量被优化,调试时可以把该变量定义为全局变量查看。第28问: Q:仿真软件和2104开发板连接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 电源和开发板都连好,错误和没接开发板一样,驱动也安装了,安装时按确定键时,软件很长时间才有如上反应,请帮忙 A:1.并口是否正常 2.在其它操作系统(如98)下或其

41、它台式PC下试试。第29问: Q:如何生成32位hex文件 我在Release Setting- HYPERLINK t _blank arm fromELF-Output Format中设置为Intel 32bit HEX,可是好像没有生成hex文件 A:试试这种方法: Target-Target Setting- ost Link中选择 HYPERLINK t _blank arm fromELF加上你上面设的应该不成问题。第30问: Q:请问关于settings中r0 base rw base的意思 A:ro:read only,rw:read and write.第31问: Q:编译成

42、功后的信息第一行,code,R0 data,RW data,ZI data,debug分别代表什么 A:R0 只读段,即程序代码空间; RW 可读/写段,即数据变量空间; ZI 清零变量段,即需要清零初始化的数据变量空间。第32问: Q:如何在ADS里面看任务执行的一些情况 比如堆栈。 A:多任务环境下的堆栈,内存等信息需要调试软件的支持才可以实现。 ucos下有一个统计功能的模块可以间接实现部分功能。第33问: Q:请问向flash烧数据时出现:exceeds flash limitation 请予赐教! A:要写入的flash地址超过了范围。如果不是代码太大的问题,可以检查scf文件是否正

43、确。第34问: Q:在LPC2214之类的芯片中如何实现数组的绝对地址定位,比如51的_at_的用法。 A:*(char*)0 x40000300)类似访问 Q:谢谢,但这样做就无须定义数组变量,访问也不便,还有高招吗 A:可以使用分散加载。第35问: Q:请问 ADS编译错误L6221E:Execution region ER_RO overlays with Execution region ER_ZI 该如何解决 A:请用我们网站上的工程模板试一试,最大的可能是因为你的RELEASE或者DEBUG选项里面没有正确设置,按照参考 HYPERLINK t _blank arm微控制器基础与实战上面的设置,是不会有这个问题的。第36问: Q:请教一下:将程序写入flash,再用从JTAG方式调试写入之后再复位程序没什么反映。 看了很多以前的帖子,说memm

温馨提示

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

评论

0/150

提交评论