打印

2440地址映射问题,求教!

[复制链接]
2522|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tnt505man|  楼主 | 2008-3-18 10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用仿真器调试我自己的裸机程序,在一块2440开发板上。

开发板能够正常运行wince,但没有任何源码,我想自己开发裸机程序。我目前正在调试串口中断,我先把开发板自带的boot烧到flash的bank0,然后打开仿真器,使用ads来调试。有以下问题请教:

1.调试串口中断可以用仿真器进行单步吗?或是一定要烧到flash里进行盲调?

2.我使用仿真器单步跟踪,我对地址做了查看:

地址0x30000000以后放的是我工程的异常跳转表;

30000000    [0xea000074]   b        ResetHandler
30000004    [0xea000052]   b        HandlerUndef
30000008    [0xea000057]   b        HandlerSWI
3000000c    [0xea000062]   b        HandlerPabort
30000010    [0xea00005b]   b        HandlerDabort
30000014    [0xeafffffe]   b        0x30000014
30000018    [0xea000047]   b        HandlerIRQ
3000001c    [0xea000040]   b        HandlerFIQ
30000020    [0xea000008]   b        EnterPWDN

地址0x0以后放的也是一个跳转表,不过和地址0x30000000处的不一样。

00000000    [0xea00000a]   b        0x30
00000004    [0xeafffffe]   b        0x4
00000008    [0xeafffffe]   b        0x8
0000000c    [0xeafffffe]   b        0xc
00000010    [0xeafffffe]   b        0x10
00000014    [0xeafffffe]   b        0x14
00000018    [0xeafffffe]   b        0x18
0000001c    [0xeafffffe]   b        0x1c

当irq中断来的时候,我的程序开在了地址0x18上:

00000018    [0xeafffffe]   b        0x18

请问为什么两个表不一样呢?另外地址0x30000000是内存起始地址吧,那地址0x0是不是flash上?地址0x0能否修改?

怎样才能把我的0x0地址映射到地址0x30000000呢?我用的是2440,没有remap吧,是用MMU吗?还是别的方法?

相关帖子

来自 2楼
农民讲习所| | 2008-3-18 12:15 | 只看该作者

写一段汇编代码:

单独编译生成数据文件,在你程序开始打开中断前,把数据全部写到地址0开始的位置,这样中断就跳转到0x30000000开始

    LDR PC, Addr_0      ;未使用
    LDR PC, Addr_1      ;未使用
    LDR PC, Addr_2      ;软件中断
    LDR PC, Addr_3      ;取指错误中断
    LDR PC, Addr_4      ;取数错误中断
    LDR PC, Addr_5      ;保留
    LDR PC, Addr_6      ;IRQ
    LDR PC, Addr_7      ;FIQ

Addr_0          DCD 0x30000000
Addr_1          DCD 0x30000004
Addr_2          DCD 0x30000008
Addr_3          DCD 0x3000000c
Addr_4          DCD 0x30000010
Addr_5          DCD 0x30000014
Addr_6          DCD 0x30000008
Addr_7          DCD 0x3000001c

建议使用MMU映射,还可以大幅度提高运行速度。

使用特权

评论回复
板凳
农民讲习所| | 2008-3-18 10:59 | 只看该作者

两个方法:

1)打开MMU,映射。
2)在INIT.S中,修改0地址开始数据为 0x30000000 开始

使用特权

评论回复
地板
tnt505man|  楼主 | 2008-3-18 11:23 | 只看该作者

111

请问方法2详细如何操作?怎么修改为0x30000000?

使用特权

评论回复
5
tnt505man|  楼主 | 2008-3-19 11:18 | 只看该作者

谢谢

谢谢,我按照你说的已经搞定了,原因是我的小于4K的工程A和后面要运行的工程B的跳转表不一致。

使用特权

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

本版积分规则

3

主题

8

帖子

0

粉丝