Real6410的NBL1.LSB和NBL2编译下载不能启动的问题

原创 2012年03月24日 11:26:30

********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

时间:2012.03.24

类别:WINCE系统开发

********************************LoongEmbedded********************************

 

Real6410开发板的NBL1.LSBNBL2的这两部分生成的镜像合成为block0img.nb0,但利用SD卡更新的IROM_SD_EBOOT.nb0更新的第一阶段的bootloaderblock0.nb0,所以为了统一,我修改NBL1.LSBNBL2的这两部分生成为block0.nb0(72KB)。然后基于SD卡启动的方式来烧录这个block0.nb0,但是系统不能启动,但如果基于Real6410开发板厂家提供的block0.nb0(68KB)来烧录,确实可以正常启动的。为了进一步明确问题,我基于usb的更新方式来更新我自己编译生成的block0.nb0(72KB),确实可以正常启动,而如果更新厂家提供的block0.nb0(68KB)却不能正常启动。

 

为了搞清楚这个问题,仔细查看了NBL1.LSBNBL2EBOOT.WHIMORYEboot.SDFuser这几部分的代码,发现是Real6410修改了三星原厂的代码,下面我们来分析此问题,先看NBL1.LSB部分的main函数下面的部分:

1

可知nbl1部分是从第10page开始读取nbl2部分的,而我对比了Real6410提供Eboot.SDFuser和三星原厂此文件夹nand.cpp文件烧录block0.WriteRawImageToBootMedia函数相关部分,发现是Real6410做了下面的修改:

2

Real6410采用的MLC NAND FLASH一个page的大小为2048,所以根据上面的内容可知Real6410nbl2部分的镜像文件写到第6page开始的地址,而上面我们知道nbl1是从第10page的地方去读取nbl2,这样肯定导致了nbl1只能拷贝nbl2的后大半部分,这样就无法正常启动了。所以还原回三星原厂的内容,经过测试,就不存在上面提到的问题了。

 

下面我们来看NBL1.LSBbib文件

3

在来看NBL1.LSBmakefile文件包含的一个语句:

copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl1.nb1 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl1.nb0

意思就是NBL1.nb0是由NBL1.nb1 Copy得到的,接下里看NBL2makefile文件的相关部分:

copy /b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl1.nb1 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl1.nb2 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl2.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\block0.nb0

意思是block0.nb0= nbl1.nb1+nbl1.nb2+nbl2.nb0合成的,我觉得似乎没必要这样处理,既然S3C6410支持8KBstepping stone,那么我尝试了把图3中的0x00001000(4KB)改为0x00002000(8KB),而且去掉NBL1.LSBmakefile上面的语句,同时把NBL2makefile文件上面的部分改为:

copy /b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl1.nb0 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\nbl2.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\block0.nb0

这样修改编译生成的nbl1.nb0大小为8KBnbl2.nb0大小为68KBblcok.nb0大小72KB,然后基于sd卡和usb卡的方式来更新block.nb0,均可以正常启动,这样岂不是更容易理解。

 

real6410开发板和主机的网络连接问题

这两天想试试UBOOT下的tftp下载功能,所以要建立开发板和ubuntu的网络连接,中间遇到一些问题,现记录下来,以免忘记。 1.刚开始时无论是PC机ping开发板还是开发板ping电脑,都ping...
  • yangyan0810
  • yangyan0810
  • 2014年01月11日 00:40
  • 1431

编译安装mysql

一、编译安装MySQL前的准备工作 安装编译源码所需的工具和库 [sql] view plaincopy yum install gcc gcc-c++ ncurses-devel...
  • yibing548
  • yibing548
  • 2015年12月26日 23:26
  • 1955

源码编译安装Apache开机自启动

当用源码安装完Apache之后无法利用命令设置开机自启动,不过可以把启动命令写在/etc/rc.d/rc.local文件里,下面简单说下怎么设置命令自启动(centos6):原理Linux系统系统服务...
  • nange_nice
  • nange_nice
  • 2017年08月05日 15:55
  • 550

Centos通过源代码编译安装httpd并启动

通过源代码编译安装httpd
  • kingolie
  • kingolie
  • 2016年11月09日 20:04
  • 724

Ubuntu10.04下Linux内核编译的完整步骤

[转] http://supportopensource.iteye.com/blog/680483 1、在http://www.kernel.org/上下载最新的内核源代码linux-2....
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2014年03月17日 21:38
  • 2474

FFmpeg编译和使用问题总结

最近使用ffmpeg的软解码,第一步当然就是编译了,编译过程中遇到各种各样的问题,如下是正确编译步骤: 从官网下载源码:http://ffmpeg.org/download.html ...
  • u011784994
  • u011784994
  • 2017年05月16日 18:03
  • 330

Uboot的移植中遇到的一些问题,及解决方法。

首先感谢tekkamanninja分享的源码:https://github.com/tekkamanninja/u-boot-2010.03-tekkaman,也可以参考友善之臂的移植手册。 由于本学...
  • c1194758555
  • c1194758555
  • 2016年08月05日 09:40
  • 1210

Eclipse异常: 无法编译10种解决大法

Eclipse和myeclipse强大的IDE工具,随着版本的不断升级,各种bug不断。先总结10种解决方法,总有一种方法能够解决。 今天启动项目,又遇到找不到或无法加载主类的情况,清除项目后无法...
  • l3922768721
  • l3922768721
  • 2017年02月09日 10:13
  • 3126

redis3.0.2 编译安装(启动参数方式启动)

1.下载redis3.0.2[root@Moxiaokai ~]# wget http://download.redis.io/releases/redis-3.0.2.tar.gz  [root@M...
  • cy309173854
  • cy309173854
  • 2016年09月22日 11:36
  • 1567

Android5.0环境搭建,源码编译,模拟器启动。

Android5.0环境搭建,源码、linux内核编译,模拟器启动。        我是一名17届大学生,实习了1.5个月的MTK,结果因为公司即将淘汰功能机,所以从MTK的坑里跳进了Android的...
  • m0_37655835
  • m0_37655835
  • 2017年03月02日 20:57
  • 1208
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Real6410的NBL1.LSB和NBL2编译下载不能启动的问题
举报原因:
原因补充:

(最多只允许输入30个字)