Jlink调试2440进不了中断的看这里

发布者:chinapxf最新更新时间:2022-04-21 来源: eefocus关键字:Jlink调试  中断 手机看文章 扫描二维码
随时随地手机看文章

很多人学习2440都是从裸机开始的。刚开始的小菜LED,然后定时器、按键这些常用内部外设,最后则是LCD、Nand等复杂外设。


用Jlink裸机调试2440小程序时,中断的调试是一个重要内容。像定时器、按键等外设调试都需要用到中断。


今天在调试以前写的定时器测试工程时活见鬼的总是不成功。因为是以前调试ok的工程,所以可以肯定代码没有错的,应该是调试方面的错误。于是乎:

(1)换了下MDK的版本,从4.1.2降到之前的3.5,一样不行。

(2)调试时单步执行,在Memory栏内输入SRCPND和INTPND寄存器的地址,单步时通过观察这两个寄存器的值,确定中断是否真的发生。结果中断确实发生,证明程序真的是无误的,那一定就是中断发生了而没有被正确响应。

(3)怀疑是Jlink的问题,于是将链接地址设置到0x0开始,编译得到bin后,使用Jlink Commander的loadbin setpc等命令加载到0x0地址(即内部SRAM)运行。ok,结果中断被响应了。彻底证明了程序是正确的,而是中断发生后没有被正确响应。

(4)将链接地址修改为0x0的工程再次用JLink单路调试。OK的,中断也可以被响应。到这里问题就已经明了了。之前我用Jlink调试程序时都是直接加载到0x30000000开始的地址的(SDRAM中),这样在不适用中断的例程中没有问题,而在使用了中断时,因为0x0地址开始的硬件中断向量表是空的,因此发生中断时程序便会跑飞。


结论:

一级中断向量表在0x0位置开始,因此不管代码加载到哪里执行,这个向量表都得链接到0x0地址才行。但是0x0地址开始只有4k字节大小,如果工程太大放不下呢?这就需要合理设置ROM,或者是编排一个scatter文件,时加载时boot部分加载到0x开始的4k范围内,而其他部分再加载到SDRAM内,就可以正确响应中断了。


关键字:Jlink调试  中断 引用地址:Jlink调试2440进不了中断的看这里

上一篇:S3C2440 cp15协处理器详解
下一篇:S3C2440 外部按键中断解析

推荐阅读最新更新时间:2024-11-17 10:19

基于S3C2440A嵌入式微处理器实现高速接入网络的设计
嵌入式系统广泛应用在工业测控、智能仪表、智能家庭等很多领域。随着嵌入式系统应用范围的不断扩展及网络应用的日益普及,使得越来越多的嵌入式系统需要网络功能。三星公司S3C2440A是国内应用较多的嵌入式微处理器之一,在S3C2440A应用系统中,目前只支持10/100M的网络接口,有很大的实用价值,既可以拓展S3C2440A的应用领域,也可以给其它嵌入式系统高速接入网络提供一种简单易行的参考。 设计方案 本系统主要由S3C2440A、存储器、AX88180、千兆PHY芯片88E1111、嵌入式Linux、网络驱动程序等组成嵌入式Linux内核负责系统任务的管理并集成TCP/IP协议,方便实现网络功能控制。S3C2440A负责整个系
[单片机]
基于S3C<font color='red'>2440</font>A嵌入式微处理器实现高速接入网络的设计
OpenCV2.0.0移植到ARM9(三)(JZ2440----S3c2440
在前面已经交叉编译生成了OpenCV的库,libjpeg相关的库。下面尝试OpenCV应用程序编写与交叉编译。 1、opencv测试程序 test.cpp程序代码: #include stdio.h #include highgui.h #include imgproc.h int main(int argc,char *argv ) { IplImage* img = cvLoadImage( abc.jpg ); cvNamedWindow( Example1 , CV_WINDOW_AUTOSIZE); cvShowImage( Example1 , img); cvWaitKey(
[单片机]
OpenCV2.0.0移植到ARM9(三)(JZ<font color='red'>2440</font>----S3c<font color='red'>2440</font>)
MSP430单片机硬件知识(2)-中断
中断是MSP430微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。MSP430的几乎每个外围模块都能够产生中断,为MSP430针对事件(即外围模块产生的中断)进行的编程打下基础。MSP430在没有事件发生时进入低功耗模式,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU再次进入低功耗状态。由于CPU的运算速度和退出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态。 MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。 (1)系统复位的中断向量为0xFFFE。 (2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVI
[单片机]
STM32初学笔记3之外部中断
学习的第三部分,我选择了外部中断,因为个人觉得除了时序问题,我们应用的最多的就要数中断了,当然还有一个定时器还没学,呵呵,只能往后放一下了。当然,我不打算花太多时间去搞GPIO,所以就自己看了一下手册,能用就行了。 反正学习这些东西还是根据个人的习惯吧,我学习主要也就是参考ST给的示例程序,反正还是很有用的。今天花了差不多两个小时的时间根据EXTI的示例程序自己编写了一个程序,最后在ALIENTEK上面运行成功,下面将示例代码展示如下: 笔者将跟硬件平台有关的配置放在一个板级支持包的源文件里面,具体请查看: 板级支持包的应用 一文。 一、GPIO的配置 二、嵌入向量中断控制器配置 三、中断服务程序 说
[单片机]
STM32初学笔记3之外部<font color='red'>中断</font>
jz2440裸机开发与分析:串口编程4之struct内存占用介绍
由于在x86(32位机器)平台下,GCC编译器默认按4字节对齐, 如:结构体4字节对齐,即结构体成员变量所在的内存地址是4的整数倍。 可以通过使用gcc中的__attribute__选项来设置指定的对齐大小。 1): attribute ((packed)),让所作用的结构体取消在编译过程中的优化对齐, 按照实际占用字节数进行对齐。 2): __attribute((aligned (n))),让所作用的结构体成员对齐在n字节边界上。 如果结构体中有成员变量的字节长度大于n, 则按照最大成员变量的字节长度来对齐。 代码如下: struct person{ char *name; int age; char s
[单片机]
TMS320C32 DSP的中断编程方法及BOOT功能实现
摘要:采用C语言对DSP编程具有很多优点。针对TMS320C32芯片的特点,提出了一种基于C语言的中断编程方法,同时介绍了具体的BOOT功能实现方案,给出了相应的源程序和结论。 关键词:C语言 BOOT表 中断向量 TMS320C3X系列芯片是美国TI公司推出的第一代浮点DSP芯片,具有丰富的指令集、很高的运算速度、较大的录址空间和较高的性价比,在各领域得到了广泛的应用。TMS320C32是TMS320系列浮点数字信号处理器的新产品,在TMS320C30和TMS320C31的基础上进行了简化和改进。在结构上的改进主要包括可变宽度的存储器接口、更快速的指令周期时间、可设置优先级的双通道DMA处理器、灵活的引导程序装入方式、可重新
[应用]
u-boot移植到s3c2440开发板(一)--建立单板
由于没有系统的学习shell,所以Makefile大多数看不懂,一个小小的细节,把我难住了几天。现在开始分享我的操作过程 本文所有linux下的操作是root用户,如果你使用普通用户,请在命令前加上 $ sudo xxxx 所有Linux命令都是加粗,需要加入的文本是斜体 /* *  Ubuntu 16.04 *  u-boot-2016.05.tar.bz2 *  arm-linux-gcc-4.4.3.tar.gz */ 准备工作 1.下载u-boot,我是用的u-boot-2016.05.tar.bz2,可以自己去官网下载 下载地址, ftp://ftp.denx.de/pub/u-boot/ 2.下载arm-linux-g
[单片机]
u-boot移植到s3c<font color='red'>2440</font>开发板(一)--建立单板
基于Linux和s3C2440的GPC控制器设计
近年来,基于Internet的网络化控制系统已成为国内外测控领域研究的热点,在石油勘探开发、钢铁化工等领域有着广阔的应用前景。而控制器的设计和研发是整个网络控制系统的关键和核心。在一些地域高度分散以及环境恶劣的控制现场,使用嵌入式系统作为控制器节点,可更有利于多点分布式综合布控及并行处理,实现更好的测控效果。然而由于网络传输本身的特点,网络时延会不可避免地影响网络控制系统的控制性能和稳定性,因此本文提出基于S3C2440A及嵌入式Linux的GPC(Generalized PredictiveControl)控制器的设计方案,具有一定的通用性。 1 控制器硬件平台设计 控制器节点是嵌入式网络化测控系统的中心。在测控系统中,
[单片机]
基于Linux和s3C<font color='red'>2440</font>的GPC控制器设计

推荐帖子

【R7F0C809】第十五篇--项目第三阶段编码实现之无线模块1
本帖最后由陌路绝途于2015-11-811:05编辑 本次使用的无线模块是zigbee模块。再次开贴对于zigbee的模块使用以及调试做一个详细的解说。Zigbee简介物联网→传感器→无线传感器网络→Zigbee。Zigbee调试器驱动安装首先下载SmartRF驱动并解压到某一文件夹内,然后按Zigbee开发板→调试器→PC的USB接口的顺序连接设备,打开计算机的设备管理器,会发现存在“无法识别的USB设备”,右键,点
陌路绝途 瑞萨电子MCU
到底该怎么区分旁路电容跟去耦电容的区别呢?
现在完全搞不清楚去耦电容跟旁路电容的区别,去耦半径又是什么呢?为啥去耦电容要挨着IC很近的位置放呢?到底该怎么区分旁路电容跟去耦电容的区别呢?这篇介绍的我觉得挺清晰的,转过来你看看旁路(bypass)电容:是把输入信号中的高频成分作为滤除对象;去耦(decoupling)电容:也称退耦电容,是把输出信号的干扰作为滤除对象。去耦电容和旁路电容都是起到抗干扰的作用,电容所处的位置不同,称呼就不一样了。高频旁路电容一般比较小,根据谐振频率一般是0.1u,0.01u等,而
小太阳yy 开关电源学习小组
很好的ucGUI资料
ucGUI资料很好的ucGUI资料继续ucGUI回帖已不能表示我对你的感谢,我就抢个沙发吧。回复沙发zyc1的帖子百度文库中有 LZ,,貌似没有发完喃》???好像有25章吧。????这个好,下来学习下23章发漏了,谢谢补上了回复4楼ebuffalo的帖子厉害!学习学习一下!有第25章吗??请问一下!这本书名字和IDSN是什么!好买来学习学习!真的很谢谢你了。很好的资料谢谢楼主啊顶啊下载下来学习了,谢谢分享非常感谢。mark,以后
zyc1 微控制器 MCU
音频问题 CETK测试
今天我用cetk来测试我的驱动程序关于AUDIO部分的。我的音频部分录音很放音平时在机器上测都没有问题。。。都用了很长时间了,起码有3个月了。。但是今天用cetk测试的结果是***vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv***TESTSTARTING******TestName:Capture***TestID:3001***LibraryPath:\\w
widb 嵌入式系统
USB固件问题
各位大大江湖救急,有没有人做过OMAP1710USB模块的FW驱动,从模式,使用的是TUSB1105外部tranciver,6pin.问题是:core控制的中断完全没反应,IRQ_SRC寄存器的值始终为0,完全不能进入中断,无法枚举。不知道问题出在哪,哪位大大帮忙解答一下。USB固件问题其他关联的地方设置了没?谢谢,楼上的答复。其他有关联的地方也有设,有可能没设好,我估计可能是OTG方面的寄存器设置有问题,但查了好多遍都觉得没问题。目前的状况是IRQ_SRC寄存器,当插上U
jonystar 嵌入式系统
请教,STM32的HardFault_Handler的问题
程序运行到sprintf时死机了,调式后发现进入了HardFault_Handler里死循环了。请问这个问题可能由啥原因引起的?还有貌似选了优化后,有时sprintf出来的数据会有错误?这个可能由啥原因引起的?谢谢!请教,STM32的HardFault_Handler的问题可能是存储器的分配有问题这种问题的原因很难查,版主说的原因是有可能的。我有过类似的经历!HardFault_Handler问题我也遇到这
weiaa1911 stm32/stm8
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved