29558|10

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

中断无法正常使用,改后系统都无法加载了,请帮忙!! [复制链接]

您好,我现在的问题也是这样的,我用的是2440,原来打算用timer0或者是timer1来做一个定时,在display驱动里面创建了个线程并动态分配映射了一个sysintr,配置好寄存器后,一切都ok,但是就是无法启动IST线程,后来怀疑是事件没有触发事件,单步调试后发现根本没有产生timer1中断,查看中断寄存器发现SRCPND触发了timer1中断,但是INTPND一直不触发。后来怀疑是中断优先级的问题,改用timer0之后同样还是无法使用。后来经过考虑,发现原来的BSP是用timer4作为系统时钟定时,每一个ms处理一次时钟同步,因此我想干脆先用这个定时器来处理,因位timer4并没有中断线程,所以我create一个IST并通过一个事件和这个中断绑定,每次timer4系统时钟中断一到,除了在ISR里完成时钟更新外还顺便激活一个event,让ist做相应的一些memcpy的操作。但是添加完相应代码之后,sysgen之后,烧到板子上,系统就无法正常启动了,打印完以下消息就停了

Preparing for download...
waitforconnect
INFO: OEMLaunch: Jumping to Physical Address 0x302B23ECh (Virtual Address 0x802B23ECh)...


看代码和打印消息感觉好像没有launch成功,并且都还没有加载我改动的代码,怎么会不动了呢? 我并没有改动BIB文件和其它文件,不知道什么原因?大家有没有碰到过这种情况? 或者教我查查看到底是什么问题?谢谢了

最新回复

TIMER1的中断没被禁止吗?硬件上通常不会有问题,还是从你的代码着手吧,说不定你这段代码刚初始化好又被其它驱动等给设置,导致无法出现中断,这个也是有可能的。  详情 回复 发表于 2010-3-12 11:16
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
忘了贴打印信息了:
USB host is connected. Waiting a download.

Addr: 0x30000000 ; Size: 0xF30DE9
Read Bin Files StartAddr:0x80200000 ; Length: 0xF67B7C

Download BIN file information:
-----------------------------------------------------
[0]: Base Address=0x80200000  Length=0xf67b7c
-----------------------------------------------------
+=OEMVerifyMemory+ dwStartAddr:0x80200000  dwLength:0xf67b7c
RAM image 0xa 0x81167b7b
rom_offset=0x0.
ROMHDR at Address 80200044h
Writing single region/multi-region update, dwBINFSPartLength: 16153468
IsValidMBR: MBR sector = 0x1000
OpenPartition: Partition Exists=0x0 for part 0x21.
CreatePartition: Enter CreatePartition for 0x21.
LastLogSector: Last log sector is: 0x3efff.
CreatePartition: Start = 0x1100, Num = 0x7c00.
Log2Phys: Logical 0x1100 -> Physical 0x2100
WriteMBR: MBR block = 0x10.
BP_SetDataPointer at 0x0
WriteData: Start = 0x0, Length = 0xf67b7c.
Log2Phys: Logical 0x1100 -> Physical 0x2100
Updateded TOC!
IsValidMBR: MBR sector = 0x1000
OpenPartition: Partition Exists=0x0 for part 0xb.
CreatePartition: Enter CreatePartition for 0xb.
FindFreeSector: FreeSector is: 0x8d00 after processing part 0x21.
CreatePartition: Num sectors set to 0x36100 to allow for compaction blocks.
CreatePartition: Start = 0x8d00, Num = 0x36100.
WriteMBR: MBR block = 0x10.
TOC {
dwSignature: 0x434F544E
BootCfg {
  ConfigFlags: 0x2830
  BootDelay: 0x1
  ImageIndex: 1
  IP: 192.168.1.6
  MAC Address: 10:23:45:67:89:AB
  Port: 0.0.0.0
  SubnetMask: 255.255.255.0
}
ID[0] {
  dwVersion: 0x20004
  dwSignature: 0x45424F54
  String: 'eboot.nb0'
  dwImageType: 0x2
  dwTtlSectors: 0x400
  dwLoadAddress: 0x80038000
  dwJumpAddress: 0x80038000
  dwStoreOffset: 0x0
  sgList[0].dwSector: 0x400
  sgList[0].dwLength: 0x400
}
ID[1] {
  dwVersion: 0x1
  dwSignature: 0x43465348
  String: ''
  dwImageType: 0x2
  dwTtlSectors: 0x7B3E
  dwLoadAddress: 0x80200000
  dwJumpAddress: 0x802A03BC
  dwStoreOffset: 0x0
  sgList[0].dwSector: 0x2100
  sgList[0].dwLength: 0x7B3E
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}
waitforconnect
INFO: OEMLaunch: Jumping to Physical Address 0x302A03BCh (Virtual Address 0x802A03BCh)...

C
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
估计是OS刚启动就Crash了,我以前也遇到过,在Args里加个变量也会这样
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
那最后怎么解决的?非常奇怪的是 我用这个bootloader加载修改代码之前的镜像竟然又可以加载
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 ivyfengwcm 的回复:
那最后怎么解决的?非常奇怪的是 我用这个bootloader加载修改代码之前的镜像竟然又可以加载

既然这样你的BOOTLOADER本身应该没有问题,还是新MAKE出来的系统有问题。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
Veabol,也许是哦 但是我觉得很奇怪,我新sysgen的系统根被没有改动什么代码,而且改动的代码部分都还没有执行系统就挂了
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

7
 
System Timer(Timer4) 那是 kernel 已经拿去用了, driver 不应该再对它进行操作, 不然 kernel 不正常, 当然会死机了.

建议 lz 还是对 timer1 做中断, 这包括 timer1 的 clock enable, timer1 initial, irq to sysintr 的对映, 若都正确了, 那 timer1 一定是会动的.

Paul, Chao @ Techware
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
我也想拿timer1或者是0啊,但是死活不来中断没办法才出此下策。 刚刚调试发现由于我在oal_timer_s3c2440a.lib里面使用了resetevent,waitforsingleobject和createthread等等,因此在source里面添加了
sourcelibs= $(_COMMONSDKROOT)\lib\$(_CPUINDPATH)coredll.lib。可能是这个导致了以上的原因,因为我注释修改的代码后同样出现以上问题,非要我把这个库在source里去掉才没问题
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
还是按照Paul所说的,不要乱用TIMER4了,TIMER1中断不行应该还是设置的问题,或者中断线程绑定及初始化不正确
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

10
 
用timer1,中断设置都没问题,中断线程绑定和初始化都没有问题。中断源有了, 就是不来中断触发
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
TIMER1的中断没被禁止吗?硬件上通常不会有问题,还是从你的代码着手吧,说不定你这段代码刚初始化好又被其它驱动等给设置,导致无法出现中断,这个也是有可能的。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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