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的NBL1.LSB和NBL2编译下载不能启动的问题

********************************LoongEmbedded******************************** 作者:LoongEmbedded(ka...

Hadoop中DataNode不能启动的问题

Hadoop中DataNode不能启动 1、DataNode不能动的主要原因是多次格式化namenode文件系统造成的。 $ hdfs namenode -form...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

IIS 不能启动的问题

今天我公司服务器突然IIS不能启动,启动时提示“启动失败”,进入服务,手动启动IISADMIN服务也不行。 查看系统日志多次出现三个错误报告: 1、IIS Admin Service 服务因 21...

IIS不能启动的问题哦

我的web服务器本来好好的,结果关机的时候提示在更新系统,再次打开电脑时,web服务器再怎么也无法启动了.上网一查才知道,遇到这种情况的不只我一人,还好,有很多好心的网友提供了宝贵的经验,让我知道以下...

tomcat下载,安装及闪一下启动不了的问题

TOMCAT 是什么? Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及...

IE和FF下的兼容性问题

长久以来JavaScript兼容性一直是Web开发者的一个主要问题。在正式规范、事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬。为此,主要从以下几方面差异总结IE和Firefox的Javas...

nginx的启动、访问和配置

2、nginx的启动、访问和配置 1、 nginx-s signal Where signal may be one of thefollowing: stop — fast shutd...

window下zookeeper的下载启动和报错等问题

前言在使用dubbo等需要用到zookeeper,之前window下本地部署,启动一直有问题,后面折腾了下才部署成功,此次记录下来,以备后用。下载百度或者google下zookeeper官网,里面就有...

RocketMQ 4.1 下载 编译 配置 启动

去年11月份阿里的rocketMq进入了apache的开源孵化阶段,这个是借鉴的kafa,11年移植过来的java版本,经过淘宝这些年的不断改进,功能已经非常强大;作为技术人员是必须要学习掌握的,今天...

RetroScope工具:下载,编译,启动

RetroScope工具涉及Papers: (1)DSCRETE: Automatic Rendering of Forensic Information from Memory Images via...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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