打印

请问2410为什么可以在地址0x3000000去开始运行程序??

[复制链接]
3336|13
手机看帖
扫描二维码
随时随地手机跟帖
沙发
m5t133| | 2007-5-20 19:21 | 只看该作者

回复

它的MMU可以把代码实际的位置映射到0地址去.
但我也发现了一个问题,有时候把MMU的功能禁用好象也能中断.实在迷惑,不知道是我看错了还是别的原因.

使用特权

评论回复
板凳
ppiigg| | 2007-5-20 19:28 | 只看该作者

查看一下分散加载文件,可能和它有关

使用特权

评论回复
地板
MultiICE| | 2007-5-20 21:11 | 只看该作者

现在大学,一上来就教单片机,而且只教单片机

毒害不轻啊。慢慢理解吧,总会明白原因所在的。

使用特权

评论回复
5
52mcu|  楼主 | 2007-5-21 08:32 | 只看该作者

真是迷惑阿,异常向量表为啥可以在0x30000000啊

0x00000000 Reset Supervisor
0x00000004 Undefined instruction Undefined
0x00000008 Software Interrupt Supervisor
0x0000000C Abort (prefetch) Abort
0x00000010 Abort (data) Abort
0x00000014 Reserved Reserved
0x00000018 IRQ IRQ
0x0000001C FIQ FIQ

使用特权

评论回复
6
农民讲习所| | 2007-5-21 09:15 | 只看该作者

因为BOOTLOADER已经把整个程序搬到0x30000000

使用特权

评论回复
7
52mcu|  楼主 | 2007-5-21 15:29 | 只看该作者

没有BOOTLOADER啊

使用的是ads工程。ARM Linker 中 RO Base 设为 0x30000000 Image entry point 也设为0x30000000  程序就可以运行了,0x00000000处并没有任何异常向量。不知道程序是怎么知道到0x30000000处寻找异常向量的(照道理,应该到0x00000000处寻找异常向量)?????????????????

使用特权

评论回复
8
andrew.xu| | 2007-5-22 16:09 | 只看该作者

地址映射

有的可以通过芯片引脚电平,决定映射地址
有的可以通过某寄存器映射地址
映射了之后,对0x30000000和0x00000000的操作,都是对0x30000000的操作

使用特权

评论回复
9
52mcu|  楼主 | 2007-5-22 17:04 | 只看该作者

2410这个片子并没有地址映射的功能。

使用特权

评论回复
10
minmindede| | 2007-5-22 17:12 | 只看该作者

你把flash卸下试试? 不可能,是因为你flash烧入了程序

使用特权

评论回复
11
1dqmoon| | 2007-5-22 20:00 | 只看该作者

同意楼上的

nor flash里面烧了程序,0x30000000位置是sdram的位置,flash里的程序负责把你的用户程序拷到sdram中,然后转向0x30000000开始运行,所以ads中的地址为0x30000000

顺便说一下,2410是可以进行地址映射的,但你没有操作最开始的boot部分,所以你看不出来

使用特权

评论回复
12
52mcu|  楼主 | 2007-5-26 19:23 | 只看该作者

"2410是可以进行地址映射的"

"2410是可以进行地址映射的"  那最可能的就是通过mmu实现的了。mmu 感觉很深奥。不知道是如何实现的。

使用特权

评论回复
13
手足无措| | 2007-5-27 16:39 | 只看该作者

应该是BOOTLOADER把整个程序搬过去把

使用特权

评论回复
14
52mcu|  楼主 | 2007-5-28 20:55 | 只看该作者

不管怎么搬

不管怎么搬异常向量应该是0x00000018 IRQ IRQ  而不应是0x30000018 IRQ IRQ  啊??????

使用特权

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

本版积分规则

157

主题

292

帖子

0

粉丝