在分析启动代码之前先看一下S3C2440的NAND启动:
by
f1jiang
-
移动操作系统
-
2011-12-21 08:41:29 阅读(765) 回复(0)
在配置NAND启动模式之后,S3C2440上电会先将NAND中的0x0 - 0x1000共4096字节的数据拷贝到位于Bank0中的Boot Internal SRAM上
Bank0如下图:
UBOOT从NAND flash启动分析 在分析启动代码之前先看一下S3C2440的NAND启动: 在配置NAND启动模式之后,S3C2440上电会先将NAND中的0x0 - 0x1000共4096字节的数据拷贝到位于Bank0中的Boot Internal SRAM上 Bank0如下图: 可以看出Boot Internal SRAM为4KB大小,也正是因为Boot Internal SRAM只有4KB大小,所以只能从NAND中拷贝4K的内容 = 3= 这个Boot Internal SRAM是配置为NAND flash启动模式才有的 这4K内容...
用的是S3C2410.见附件start.s 其中关于nand flash启动的那一段一直百思不得其解,按说从NAND flash启动时,应该是前4KB映射到NGCS0,其中的代码将NAND中存放的程序拷贝到RAM中,但该文件提供的程序好象是先从NAND拷贝 128K的代码到ResetEntry开始的地方,即地址为0的地方,然后再从ResetEntry处拷到RAM中,但此时NGCS0好象只有4KB的 RAM区,怎么能存储128K的代码,一直没想通.望高手指点,谢谢! 搞明白了,是两条指令的差别 LDR r0,=_entry和A...
1.首先应该先了解flash ROM的种类 NOR flash地址线和数据线分开,来了地址和控制信号,数据就出来。 NAND flash地址线和数据线在一起,需要用程序来控制,才能出数据。 通俗的说,只给地址不行,要先命令,再给地址,才能读到NAND的数据,在一个总线完成的。 结论是:ARM无法从NAND直接启动。除非装载完程序,才能使用NAND flash. 三星的2410可以从NF启动程序,它会把第一块的前4KB复制到内部SRAM中然后从SRAM执行,也就是说,你需要编...
用的是S3C2410.见附件start.s 其中关于nand flash启动的那一段一直百思不得其解,按说从NAND flash启动时,应该是前4KB映射到NGCS0,其中的代码将NAND中存放的程序拷贝到RAM中,但该文件提供的程序好象是先从NAND拷贝 128K的代码到ResetEntry开始的地方,即地址为0的地方,然后再从ResetEntry处拷到RAM中,但此时NGCS0好象只有4KB的 RAM区,怎么能存储128K的代码,一直没想通.望高手指点,谢谢!搞明白了,是两条指令的差别 LDR r0,=_entry和A...
目前系统的启动情况是:uboot在NOR flash中,上电从nor flash启动,到uboot命令行时,手动加载服务器上的uImage到内存中,然后从内存启动。 #tftp 0x30007fc0 uImage #bootm 顺利进入系统(参考附件)。 想改为:不要手动加载服务器上的uImage,改成从nand flash加载,即从本地启动。 我目前的思路是:把rootfs放到nand中,然后挂接nand中的文件系统,实现开发板的本地启动,当然当前的uboot也是要修改的。 但我不知道这样行不行...
昨天通过网上提供的方法,经过修改,实现了linux启动时显示真彩色的logo。 但是公司有很多的OEM客户,他们需要定制产品的开机画面,而修改logo则需要重新编译内核,比较麻烦。 于是我就想到先将logo烧写到flash的某一个位置,然后开机时直接从这个位置读取并显示。 但是我怎么样修改内核代码才能读到flash的值呢? 各位大侠能否给个提示或者例子呢? 公司第一次用嵌入式linux,没有人会,我也是第一次做,所以公司内部是没有人可以...
由于我的板子除了没有nor flash外,其他的配置基本上了smdk2410的一样。所以只需要更改以下几个文件: 1、cpu/arm920t/start.s; 2、include/configs/smdk2410.h; 3、board/smdk2410/memsetup.S 4、增加nand flash c语言读程序board/smdk2410/nand-read.c 5、board/smdk2410/Makefile 以下修改使用http://blog.chinaunix.net/u/19186/showart_241752.html上的移植代码,十分感谢。 (一)start.s修改内容 注释掉以下程序...
最近几天一直在折腾这个事情,就是想做一个自己的根文件系统,我的方法是将内核和跟文件系统编译到一起去。但是现在发现,我tftp将制作好的内核和文件系统传到内存中是可以运行的,但是一旦将它烧写到flash中的话,就一直无法启动。昨天请教师兄了,他说从来没有遇到过这种问题,只能来这里求教高手帮忙了?有谁遇到过这种问题。
u-boot移植正常,接下来的工作是将linux内核2.4.21移植到at91rm9200。首先下载,设置好变量,然后执行ping,可以ping通。但是在固化到flash之后,无法启动eth0。查看启动部分,如下: eth0: Link now 10-HalfDuplex eth0: AT91 ethernet at 0xfefbc000 int=24 10-HalfDuplex (00:00:00:00:00:00) 也就是说,原先设置的ethaddr变量没有存入,结果只能成为00:00:00:00:00:00。这时用ifconfig查看,没有显示。如果执行ifconfig ...
u-boot移植正常,接下来的工作是将linux内核2.4.21移植到at91rm9200。首先下载,设置好变量,然后执行ping,可以ping通。但是在固化到flash之后,无法启动eth0。查看启动部分,如下: eth0: Link now 10-HalfDuplex eth0: AT91 ethernet at 0xfefbc000 int=24 10-HalfDuplex (00:00:00:00:00:00) 也就是说,原先设置的ethaddr变量没有存入,结果只能成为00:00:00:00:00:00。这时用ifconfig查看,没有显示。如果执行ifconfig ...