QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3172|回复: 10

请问各位:如何调试中断?

[复制链接]
发表于 2005-7-19 20:30:06 | 显示全部楼层 |阅读模式
我的程序中断有问题,用axd+jtag 调试代理,一到中断哪儿,即使我外部触发了中断,好像也不响应???是不是用调试代理没办法调试中断,而必须使用仿真器才可以???

另外,我单步调试44binit.s,至bl InitStacks时,按F10单步调试,程序好像就中跑飞或者死机,AxD窗口下Stepping Image进度条一闪一闪的,这是什么原因啊?
 楼主| 发表于 2005-7-19 21:18:06 | 显示全部楼层
重新编译了一遍,一切ok了,哈
下一步准备将uart的实现方法改一下,sdt下比较麻烦,在ads下只要重载一下fputc就可以了。
然后是移植ucosii
感觉用ads是比sdt爽很多!
革新公司真可恶,卖开发板的时候推荐我使用sdt,还说用ads会很多问题,害得我一开始花了不少时间折腾sdt,原理图还很多错,郁闷

买开发板还是应该找一家信誉比较好之公司,各位后来的ddmm

关于中断的调试,我觉得应该是不可以使用jtag来的,必须用硬件仿真器

好像李明老师在课上也说过,有些是没法用单步调试的,如中断

是吧,斑竹,呵呵
回复

使用道具 举报

发表于 2005-7-23 09:37:35 | 显示全部楼层
嗯,最近这段时间你的工作进展迅速啊,恭喜!  
回复

使用道具 举报

 楼主| 发表于 2005-7-23 10:21:56 | 显示全部楼层
呵呵,我感觉进展太慢了,前段时间为编译器莫名其妙的问题浪费了不少时间,到昨天总算解决了。

现在才开始往44b0上移植ucosii,感觉没有我原来想像的容易。

例程中有些东西如#define SEMIHOSTED_STACK_NEEDS 1024
       extern void ARMTargetInit(void);
      extern void ARMTargetStart(void);
我都不知道有什么作用。
回复

使用道具 举报

发表于 2005-7-27 16:44:04 | 显示全部楼层
44B0 上的移植可以参考以前 arming 的版本。 lumit 网站上有,下载看看?
有问题可以给 [email protected] 发信,他可是 44b0 的高手,嘿嘿!
回复

使用道具 举报

 楼主| 发表于 2005-7-27 18:52:21 | 显示全部楼层
我参考的就是arming的版本,还不错,已经跑起来了

谢谢你给我介绍了一个440b的大侠,不好意思,下回直接去"骚扰"他,呵呵
回复

使用道具 举报

发表于 2005-8-2 09:49:09 | 显示全部楼层
中断肯定能用,但我用的是4510,不是44b0,所以只能给你一些建议:
    在ads的CodeWarrior 中编译时一定要把程序段、数据段设定在合适的位置,如用4510,中断向量均要求在开始部分(0x0地址),程序段特别是涉及中断向量部分的程序,必须定位在开始部分。这种定位是用CodeWarrior环境中的菜单项edit->target setting完成的。用axd调试时,4510默认的0x0地址是flash,不能把程序加载在flash中调试,这样程序就跑飞了。必须把程序加载在sdram中,实现的办法是在加载程序以前,要先用axd的system views->command line interface命令方式重映射存储器,使sdram在0x0地址,最好能processor view->memory试一下重映射是否实现了,然后,切记:option->configure processor中,关闭axd的监视,就可以调试中断了。
    对44b0,好象不提倡重映射,可以先在flash中写入中断向量,跳转到sdram段中,但“切记”切记。
wenbbo
回复

使用道具 举报

 楼主| 发表于 2005-8-2 11:04:25 | 显示全部楼层
谢谢wenbbo
中断能正常响应了,不过现在又有一个新问题。
我用adw调试,发现一个很奇怪的现象,在复位的时候,也就是说单步完ResetHandler后,我观察EXTINTPND,发现初值不为0(44b0的datasheet上明明说复位值为0),而是0x0000000f,而INTPND初值也不为0,而是0x02500088.
也就是说一复位后就有外部中断,实在不明白.这样会导致出现一些问题,比如我的键盘使用了外部中断,那么程序一开始运行就会响应外部中断,但实际上这时我关没有按下按键。
btw:在调试的时候,我的板子的flash里面已经烧写有bootloader---ARMBoot,不过我觉得和这个没关系吧,即使我板子的flash里面没有bootloader,也应该可以调试啊。

谢谢 
回复

使用道具 举报

发表于 2005-8-2 16:59:08 | 显示全部楼层
你把板子的 flash bootloader 冲掉,随便写一个1byte的文件进去,然后再看看你说的那些寄存器的值。
回复

使用道具 举报

发表于 2005-8-4 17:32:10 | 显示全部楼层
复位后有中断并不少见,我的板子上有usb/pdiusbd12芯片,它在不处理时,其INT引脚总是低电,这是属于EXTINTPND的吧。所以,首先要搞清楚是谁在报中断,用INTMSK屏蔽不清楚和不需要的。而需要的,象我的usb,是通过usb编程解决的。其实就是适时地写一下INTPND寄存器就可以了(当然必须处理好引起部分)。我有usb固件程序发在这个论坛上,它涉及这部分内容,也有中断向量等,你参考吧。
回复

使用道具 举报

 楼主| 发表于 2005-8-4 19:14:06 | 显示全部楼层
谢谢wenbbo
谢谢各位热心的朋友
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 01:18 , Processed in 0.141221 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表