我的开发板只有nand flash,但uboot不支持从nand flash启动,要移植uboot到自己的开发板上,需要对源码做一些修改,这里先来分析一下《ARM嵌入式linux系统开发从入门到精通》中给出的代码,虽然按照这个步骤编译出的二进制文件还有一些问题,但分析一下有助于之后对uboot的调试。由于uboot不支持从nand flash启动,所以将程序复制到DRAM里面去需要新加代码实现,一般通过copy_myself函数来实现。 首先看一下对start.S的修改: ...
在分析启动代码之前先看一下S3C2440的nand启动:
在配置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内容...
uboot-2010.03 移植到 2410( 从 nand 启动 )
【环境】
<a> Ubuntu 10.04 LTS
<b> u-boot-2010.03
<c> FS2410 主板, SAMSUNG S3C2410A 微处理器
<d> 交叉编译器 arm-linux-gcc-4.3.2
<e> nand: Samsung K9F1208U0B , 64M
【步骤】
Step1: 创建板级源码
<1> 解压
creator sz111@126.com 我的2440开发板没有norflash,是从nand引导的,但是扬创不提供U-BOOT的源代码, 所以决定移植一个,但是一直因为没有一个很好的调试方法。一直没有完成。最近看到 skyeye支持nand启动,同时支持u-boot。随决定移植一下,目前初期阶段是移植2410的 版本,ok之后再移植2440的版本。 我上一篇《在cygwin下面用skyeye调试u-boot》有写u-boot需要下载1.1.4版本或 1.1.2版本的。我采用的是1.1.4版本。主要...
由于我的板子除了没有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修改内容 注释掉以下程序...
友善的mini2440用户往往要碰到这个问题: 将光盘中的uboot1.1.6按用户手册的方法下到nand flash中, 希望从nand flash启动,然后按uboot的menu提示烧写内核到板子上,启动内核。 往往会出错, 重启... 嘿嘿,发现已经烧的u-boot不见了,啥都启不动了~~~ 今在 http://www.arm9home.com 论坛上看到很多帖子讨论此事, 综合前辈们的意见,终于使uboot在板子启动内核了。 先是改了uboot1.1.6两个地方: 1.将/include/configs/open24x0....
板子是飞凌OK6410A , 256ram 现在我刚改完nand部分,照抄一本叫<嵌入式Linux学习手册V0.63>的手册里的步骤。 然后用飞凌提供的MMC来烧写编译好的u-boot-nand.bin,然后拔码选到nand启动,串口没有输出,LCD白屏,但可以看到我在start.S里的设置的LED test是有效果的,即低2位的灯是亮的。 那么这是不是说明我的烧写过程是正确的?我可能连基本的烧写也没做对呢(我的烧写方法和学习手册中暗示的方法好像不一样,我的方法是飞凌...
环境:fedora 9(内核版本2.6.24.4),arm-linux-gcc-2.95.3,u-boot-1.1.4,skyeye-1.2.6rc1,s3c2410A 1、编译u-boot 首先修复u-boot的几个BUG: (1)arm-linux-gcc-2.95.4的安装位置必须在/usr/local/arm/2.95.3(可做符号链接),否则会出现cpp0错误; (2)hello_world.srec错误(make 3.81的bug引起) 可以简单的改一个目录 examples下的Makefile来解决。 将原文件的第58行开始的内容: SREC = hello_world.srec BI...