打印

at91sam9260 u-boot里面应用中断问题

[复制链接]
1530|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
@渐行渐远@|  楼主 | 2013-11-21 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手求指点,我用at91sam9260编写了一个串口驱动加在了u-boot中想利用中断来完成数据收发,但程序始终无法进入中断服务程序。
现在我把整个启动过程给介绍一下:开始时uboot镜像是存放在dataflash0x8400地址中的,在系统上电时,内部rom固化的一段程序会检测dataflash前32个字节是否正确,如果正确就会把一级boot即bootstrap从dataflash搬移到内部sram中去然后把sram映射成0地址程序开始执行一级boot完成一系列初始化,然后把u-boot镜像从dataflash 0x8400地址处搬移到内存0x23F00000,然后跳转该地址处执行u-boot代码。
现在我个人理解u-boot里面start.S中的异常向量表在0x23F00000开始的地方而不再0地址,然而当发生中断时回去0地址处查找中断向量表,现在0地址处为映射的内部sram,里面存放的一级boot启动代码,所以无法执行,要想进入中断应该需要把0x23F00000进行一次地址映射,映射为0地址,然后发生中断后就能找到u-boot里面的异常向量表完成正常跳转。不知道理解的对不对,希望高手能够指点一下,怎么样能够实现中断功能!!谢谢!

相关帖子

沙发
huangxz| | 2013-11-21 22:05 | 只看该作者
将中断向量复制到sram 就可以了,而且u-boot好像是支持中断的,
只不过一般情况下都没有使用中断而已

使用特权

评论回复
板凳
@渐行渐远@|  楼主 | 2013-11-22 09:30 | 只看该作者

求指教!!

本帖最后由 @渐行渐远@ 于 2013-11-22 09:33 编辑

顶一下!!

使用特权

评论回复
地板
@渐行渐远@|  楼主 | 2013-11-22 09:36 | 只看该作者
huangxz 发表于 2013-11-21 22:05
将中断向量复制到sram 就可以了,而且u-boot好像是支持中断的,
只不过一般情况下都没有使用中断而已 ...

你好,谢谢你的回答,我还想再请教一下该怎样把start.S中的中断向量表复制到sram中去呢?以前没碰到这样的问题不知道要怎么做才好,麻烦你再指点一下如何操作。谢谢了!

使用特权

评论回复
5
huangxz| | 2013-11-22 15:15 | 只看该作者
@渐行渐远@ 发表于 2013-11-22 09:36
你好,谢谢你的回答,我还想再请教一下该怎样把start.S中的中断向量表复制到sram中去呢?以前没碰到这样 ...

memcpy就可以了,不过关键的是要remap一下,这样中断以后的能给向量中断找到正确的入口

使用特权

评论回复
6
@渐行渐远@|  楼主 | 2013-11-22 16:54 | 只看该作者
huangxz 发表于 2013-11-22 15:15  memcpy就可以了,不过关键的是要remap一下,这样中断以后的能给向量中断找到正确的入口 ...

请问这个remap是怎么回事呢?不是已经把异常向量表拷贝到0地址sram中去了吗?为什么拷贝完还要remap呢?该怎么映射咋呀?对这点不太明白,希望能够详细解释下!

使用特权

评论回复
7
@渐行渐远@|  楼主 | 2013-11-22 20:19 | 只看该作者
huangxz 发表于 2013-11-22 15:15
memcpy就可以了,不过关键的是要remap一下,这样中断以后的能给向量中断找到正确的入口 ...

我直接按照你说的把sdram中的异常向量表复制到了sram中去,可还是无法进入中断,是不是就是因为我还没有进行remap,但是要如何进行remap呢?现在实在不知道该如何做了,请你帮忙指点指点吧,该如何remap?

使用特权

评论回复
8
黄小俊| | 2013-11-22 21:14 | 只看该作者
路过

使用特权

评论回复
9
@渐行渐远@|  楼主 | 2013-11-23 08:58 | 只看该作者
各位大神,行行好指点指点小弟怎么做吧!感激不尽

使用特权

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

本版积分规则

1

主题

21

帖子

0

粉丝