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执行。