zhoutonglink 发表于 2012-7-1 18:53:42

初学arm9 对体系结构不是太清楚 几个问题求解答

不知道我下面这样理解对不对:
首先我知道有两种启动方式nor flash和nand flash
s3c2440裸跑程序:当从nor flash启动的时候,表现为哈佛结构,nor flash作为程序存储器,外接SDram做数据存储器
                        当从nand flash启动的时候,程序小于4kb的时候表现为哈佛结构,内部SRAM作为程序存储器,外接SDRAM做数据存储器;程序大于4KB时,前4KB程序表现为哈佛结构,内部SRAM做程序存储器,外接SDRAM做数据存储器,4KB以后程序表现为冯诺依曼结构,程序存储器和数据存储器都为外接SDRAM。启动过程如下:先将前4KB程序读入内部SRAM,用于初始化硬件以及将剩余程序读入外接SDRAM,然后再外接SDRAM中运行剩余程序。

gracialee 发表于 2012-7-2 09:31:49

我觉得你的理解正确。

wyoujtg 发表于 2012-7-2 09:57:27

错!

s3c2440有两种启动方式,从nor flash和从nand flash启动,都是哈佛结构,所谓哈佛结构,就是程序与数据统一编址的寻址结构

当从nor flash启动的时候,nor flash作为程序存储器,sdram做数据存储器,但也可以把程序拷贝到sdram中运行

当从nand flash启动的时候,s3c2440会把nand flash前面4K的内容(程序头)拷贝到s3c2440内部的iram,并从iram中运行,程序头再把nand flash中剩余的程序拷贝到sdram,最后跳转到sdram中运行

zhoutonglink 发表于 2012-7-2 16:32:43

wyoujtg 发表于 2012-7-2 09:57 static/image/common/back.gif
错!

s3c2440有两种启动方式,从nor flash和从nand flash启动,都是哈佛结构,所谓哈佛结构,就是程序与数 ...

哈佛结构是数据和代码分开的吧

winterw 发表于 2012-7-2 17:40:13

wyoujtg 发表于 2012-7-2 09:57 static/image/common/back.gif
错!

s3c2440有两种启动方式,从nor flash和从nand flash启动,都是哈佛结构,所谓哈佛结构,就是程序与数 ...

哈佛是分开的。。。

wyoujtg 发表于 2012-7-2 17:55:06

winterw 发表于 2012-7-2 17:40 static/image/common/back.gif
哈佛是分开的。。。

看来我搞错了

winterw 发表于 2012-7-2 22:48:01

wyoujtg 发表于 2012-7-2 17:55 static/image/common/back.gif
看来我搞错了

你的smile写的挺棒,正在拜读{:biggrin:}

w_ying_qun 发表于 2012-7-2 23:19:06

到底哪个是对的?

maxbiger 发表于 2012-7-4 18:01:36

我来解析吧,,我的肯定是对的。。肯定。。肯定

ARM的地址就是 统一编址的。
NOR 启动的方式,在 低地址有NOR flash存储器,高一点地址有RAM随机内存,就这样子,2440内部那个4K的启动SDRAM因为跟NOR flash地址重叠了,跳线选择NOR启动的时候

4K的启动SDRAM没有选上,所以4K的启动SDRAM是不能用的。nand flash因为没有挂在地址上,它就像SD卡那样通过一个控制器来读取的,所以nand flash任何时候都可以用。

nandflash 启动的时候,nor flash就没有用了(没片选上),启动的时候芯片内部有电路自动把nandflash 前面4K的代码拷贝到4K的启动SDRAM,然后从4K的启动SDRAM启动。
如果启动代码 大于4K就要自己拷贝到外部SDRAM中运行了。

其实理解这些东西只要明白: 任何代码,它要运行,都要存在于统一编址的地址中。比如 NOR Flash 和外部SDRAM就在这个地址中的,所以代码必须在其中任何一个才能运行

在nand flash中是不能运行的,在SD卡也不行,硬盘也不行,芯片内部4K的启动SDRAM可以,因为它在这个地址中

laixiaoshuai90 发表于 2012-7-10 19:11:45

maxbiger 发表于 2012-7-4 18:01 static/image/common/back.gif
我来解析吧,,我的肯定是对的。。肯定。。肯定

ARM的地址就是 统一编址的。


你说的很对,代码是不能在nand flash中运行的。因为数据不能以 字 为单位读出,故无法运行。2440内部那个4K的启动SDRAM好像有个名字叫stone。

herofish 发表于 2012-7-11 10:58:05

大家能帮忙看看这个有关2440的问题吗?
http://www.amobbs.com/thread-5485398-1-1.html

绘梦之卷 发表于 2012-7-11 17:20:44

laixiaoshuai90 发表于 2012-7-10 19:11 static/image/common/back.gif
你说的很对,代码是不能在nand flash中运行的。因为数据不能以 字 为单位读出,故无法运行。2440内部那个 ...

从Nand Flash启动CPU时,CPU会通过内部的硬件将Nand Flash开始的4KB数据复制到称为Steppingstone的4KB内部RAM中,起始地址为0,然后跳到地址0开始执行。
页: [1]
查看完整版本: 初学arm9 对体系结构不是太清楚 几个问题求解答