天嵌 ARM开发社区

 找回密码
 注册
查看: 2683|回复: 5

uart-interrupt程序死在堆栈初始化里InitStacks ;SVCMode

[复制链接]
ducling 发表于 2013-4-17 15:44:17 | 显示全部楼层 |阅读模式
对照《ARM处理器裸机开发实战》里的UART-INTERRUPT程序,一直进不了主循环,用AXD调试发现程序在启动代码的堆栈初始化里InitStacks,不往下执行了,代码如下:
        bic        r0,r0,#MODEMASK|NOINT
        orr        r1,r0,#SVCMODE
        msr        cpsr_cxsf,r1                ;SVCMode
        ldr        sp,=SVCStack                ; SVCStack=0x33FF_5800
就在 msr        cpsr_cxsf,r1        ;SVCMode这个指令处不动了,有高人知道原因吗?
 楼主| ducling 发表于 2013-4-17 16:02:33 | 显示全部楼层
用的是tq2440的板子,调试软件是H-JTAG和并口,从nandflash启动
谁有简单的串口中断程序,发一下,我对照一下查找原因。
回复

使用道具 举报

 楼主| ducling 发表于 2013-4-19 18:00:21 | 显示全部楼层
原因找到了,不过,我觉得是我板子上2440芯片的原因
在将中断屏蔽初始化为无效时问题出来了
原代码如下:
void Uart0_Interrupt_Init(void)
{
        rINTMSK         &= ~(1 << 28) ;
        rINTSUBMSK         &= ~((1 << 0) | (1 << 1)) ;       
}
但是一直在启动代码里不动了,后来改为这样,程序运行没有问题:
void Uart0_Interrupt_Init(void)
{
        rINTMSK         &= ~(1 << 28) ;
        rINTSUBMSK         &= ~(1 << 0)  ;       
}
就是那个INTSUBMSKDE [1]位及INT_TXD0位不能置1。是不是s3c2440芯片有问题啊

为了找这个问题可费了劲了,在网上找了好久都没有找到答案,最后是将代码一条一条去掉,然后再试,才找到问题。
回复

使用道具 举报

 楼主| ducling 发表于 2013-4-20 11:27:46 | 显示全部楼层
这是源代码,希望有TQ2440的板子的帮我试一下,在rINTSUBMSK &= ~((1 << 0) | (1 << 1)) ; 这个指令下是否能正常工作,看我的板子是不是S3C2440的芯片有问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

CoCo 发表于 2013-5-11 15:30:48 | 显示全部楼层
这几天我也在纠结这个实验,按照你说的把1《《1位去掉后程序正常运行,,
回复

使用道具 举报

CoCo 发表于 2013-5-11 16:02:45 | 显示全部楼层
LZ如果知道原因了请在这里回复一下
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-18 15:31 , Processed in 2.045797 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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