主题 : 新手请教,ARM9的几个问题 复制链接 | 浏览器收藏 | 打印
向你学习!
级别: 新手上路
UID: 11311
精华: 0
发帖: 19
金钱: 105 两
威望: 27 点
综合积分: 38 分
注册时间: 2009-12-03
最后登录: 2010-07-20
楼主  发表于: 2009-12-09 17:13

 新手请教,ARM9的几个问题

因需要,开始接触ARM9,是S3C2440的。这段时间一直查看资料,按照手册上的步骤看了几个演示程序,很有些吃力。-_-
在此总结一下,望各位高手指点校正,暂时只是裸机运行:
在购买的ARM9开发板上,已经固化了supervivi到NORFlash里面,手册上还提到通过片选nGCS6,连接外部的SDRAM,有64M的空间。在ADS1.2编译器里面很关键的设置有:
RO base:0x3000 0000
系统上电运行,从NORFlash启动BIOS(手册里提到的BIOS是不是supervivi ?),也就是引导加载代码,然后配后超级终端与USB下载,将.bin的测试文件下载到系统板中,然后运行。

在此,想弄明白几点:
1、所谓的bootloader,系统的引导加载代码是指一个工程文件里的2440init.s文件里的代码,还是指在板子里面已经固化到NORFlash里面的代码---->supervivi呢?而文件2440init.s应该是启动代码?(看一些资料没有弄清楚)

2、系统的整体运行是:
上电后,ARM9T内核从NORFlash里运行一段特殊的代码,然后将用户应用代码帮到上面设置ADS的地方吗?

3、若掉电,再上电,为啥不能继续运行上次下载到系统的测试代码呢?(通过手册里面提到,借助超级终端和USB下载的.bin文件)

4、板子外设所提到的SDRAM,NORFlash,NANDFlash芯片,到底是如何体现其作用的?

望各位砸砖,我知道自己的能力太菜,认真向各位学习!

谢谢

级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
1楼  发表于: 2009-12-09 19:51
抛砖引玉,说说我个人的理解。

1、supervivi是bootloader,它在NOR和NAND里面各有一份拷贝。
   当然,你也可以移植自己的bootloader,比如eCOS,vivi……
   “2440init.s”是启动代码,位置无关,所以可以编译链接到0x3000000位置。
2、系统可以从NOR,也可以从NAND FLASH启动。其它的理解没错。
3、因为你选择的是下载到RAM……
4、
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2009-12-09 22:39
1、所谓的bootloader,系统的引导加载代码是指一个工程文件里的2440init.s文件里的代码,还是指在板子里面已经固化到 NORFlash里面的代码---->supervivi呢?而文件2440init.s应该是启动代码?(看一些资料没有弄清楚)

所谓bootloader, 你可以简单的理解为就是CPU从上电后开始执行的第一条指令到运行OS内核(Linux或者WinCE)前的所有代码。它有可能是固化在NOR中的(CPU从NOR Flash启动),也有可能是被"硬件"从NAND Flash复制到CPU内部RAM的(CPU从NAND启动)。 对于ARM来说,它就是上电后物理地址0x0开始的代码。
bootloader的主要作用是初始化CPU和必要的外设到一个确定的执行状态,为运行后面的OS内核作准备。
2440init.s并不是supervivi的源代码,它最早来自于三星提供的firmware test程序2440test。如果你把2440test也看成是一个OS的话,那2440test本身也可以看作是一个bootloader。2440init.s只是这个bootloader的一部分,准确的说是最先被CPU执行的一部分。从概念上说,它属于bootloader的第一阶段(stage 1). 每个bootloader,比如Linux的supervivi, u-boot, WinCE的Eboot都有类似的部分。关于bootloader的概念,参考http://www.ibm.com/developerworks/cn/linux/l-btloader/

2、系统的整体运行是:
上电后,ARM9T内核从NORFlash里运行一段特殊的代码,然后将用户应用代码帮到上面设置ADS的地方吗?

对于S3C2440A从NOR Flash启动的模式来说是这样的。参考上面的文章中关于bootloader stage 1的描述

3、若掉电,再上电,为啥不能继续运行上次下载到系统的测试代码呢?(通过手册里面提到,借助超级终端和USB下载的.bin文件)

楼上的兄弟已经解释的很清楚了。

4、板子外设所提到的SDRAM,NORFlash,NANDFlash芯片,到底是如何体现其作用的?

简单的说,SDRAM - 执行存储在NOR Flash或者NAND Flash中的代码(必须先从Flash复制到SDRAM中); NOR Flash - 存储代码或运行存储在它里面的代码(比如bootloader stage 1); NAND Flash - 只能用于存储代码。存储在其中代码必须复制到RAM中才能被CPU执行。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
向你学习!
级别: 新手上路
UID: 11311
精华: 0
发帖: 19
金钱: 105 两
威望: 27 点
综合积分: 38 分
注册时间: 2009-12-03
最后登录: 2010-07-20
3楼  发表于: 2009-12-10 09:25
谢谢,两位的指点,继续学习