打印

个人对S3C2440裸机进不了中断的一点理解,请朋友们指点指点

[复制链接]
3040|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
matianyu|  楼主 | 2012-5-14 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 matianyu 于 2012-5-14 16:41 编辑

之前做2440的中断实验,就是进不了中断。然后按照网上的说法在程序中加入头文件#include “mmu.h” 在主函数中加入MMU_Init()函数就能实现中断,对mmu一无所知,使用mmu来实现中断有两种方法:
一种是将mmu.c文件中MMU_SetMTT(0x00000000,0x03f00000,(int)__ENTRY,RW_CB)的(int)__ENTER改成0x30000000;
一种是在2440init.s文件中加入下面程序
EXPORT  __ENTRY
    ENTRY
__ENTRY。自己不知道为什么这么干。。自己这样试了一下果断很靠谱。

再次谷歌。。。
试了第二种方法:将程序下载到nand flash的0x0地址处,uboot菜单选择a,然后将程序下载到nand flash中,结果也靠谱。。

看了网上说的,谈谈自己的理解:我的板子有两种启动方式,通过开关可以实现nor flash启动和nand flash启动,我将开关拨到nor flash一边,地址为0x0的地方接的是nor  flash  。之所以进不了中断,是因为我用的jlink调试,把程序下载到地址为0x30000000的SDRAM中,因此2440init.s中的中断向量表被放在0x30000000开始的地方。地址为0x0的地方不存在中断向量表。。发生IRQ的时候,PC指向地址为0x00000018处,此处不存在所谓的中断处理的入口地址。自然找不到相关中断处理程序处理中断。这样理解可否?:sleepy:

找个时间好好理解下MMU。。。为后面操作系统做下准备。。。

相关帖子

沙发
zchong| | 2012-5-17 08:34 | 只看该作者
差不多吧
关键点是发生中断后必须去0x0那一段地址取中断向量,所以在发生中断前需要设置好中断向量,不管是通过mmu还是其它方法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

10

帖子

2

粉丝