很多人学习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内,就可以正确响应中断了。
上一篇:S3C2440 cp15协处理器详解
下一篇:S3C2440 外部按键中断解析
推荐阅读最新更新时间:2024-11-17 10:19
推荐帖子
- 【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