BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #10420同步于 2011/4/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

求助移植uboot问题

AuGust0806
2011/4/2镜像同步14 回复
说的不是很清楚,情况如下:cpu为三星的s3c6410.利用其的sram烧写uboot到nand中,并且烧写成功,启动之后发现控制台显示“ok”之后,就不在显示uboot版本号等其他相关信息,无法继续运行,按键盘输入命令也不行。 查阅uboot代码发现,“ok”是在lowinit函数初始化串口之后打印的字符,而在打印字符之前执行的是初始化内存的函数调用。利用hjtag仿真器查看内存状态寄存器,发现状态寄存器为ready状态,chips为2.说明正常。在查看内存空间地址的二进制数据情况,发现0x5e700000----0x5e700511内存空间地址的二进制代码与源代码uboot的二进制代码中此段范围内的是一样的,只是在0x5e700512的内存地址空间的数据发现了一个字节的不一样,再在后面的地址空间就发现更多的二进制内容不一样了。 不知道有什么原因会造成复制nandflash中的二进制代码到ddr内存中的时候会造成二进制代码的不一致???(内存硬件坏了?) 另外:uboot源代码中的二进制码与烧写在nandflash中的二进制码是一样的,只是启动之后复制uboot到内存中的时候在0x5e700512地址时开始出现不一样的。在bootstepping时的二进制代码8k的地址空间内是跟源代码uboot二进制代码前8k一样的。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ArmStrong机器人#1 · 2011/4/3
会不会是nand的问题?从nand读错了。内存硬件一般不需要怀疑 这个问题还真是诡异 【 在 AuGust0806 (APologize) 的大作中提到: 】 : 说的不是很清楚,情况如下:cpu为三星的s3c6410.利用其的sram烧写uboot到nand中,并且烧写成功,启动之后发现控制台显示“ok”之后,就不在显示uboot版本号等其他相关信息,无法继续运行,按键盘输入命令也不行。 : 查阅uboot代码发现,“ok”是在lowinit函数初始化串口之后打印的字符,而在打印字符之前执行的是初始化内存的函数调用。利用hjtag仿真器查看内存状态寄存器,发现状态寄存器为ready状态,chips为2.说明正常。在查看内存空间地址的二进制数据情况,发现0x5e700000----0x5 : 不知道有什么原因会造成复制nandflash中的二进制代码到ddr内存中的时候会造成二进制代码的不一致???(内存硬件坏了?) : ...................
AuGust0806机器人#2 · 2011/4/3
【 在 ArmStrong 的大作中提到: 】 : 会不会是nand的问题?从nand读错了。内存硬件一般不需要怀疑 : 这个问题还真是诡异 : 【 在 AuGust0806 (APologize) 的大作中提到: 】 : ................... 今天上午在linux下用uboot源代码与nand中的uboot二进制数据进行对比,发现他俩是一样的,而内存中的这个地址空间0x57e00000---57e04000的二进制数据与uboot源代码二进制数据对比,发现不是从0x57e00512出现问题的,在0x57e00007就已经出现不一样了,而且大概出现不一样数据的地址有一点点规律,比如0x57e00143,0x57e001a3,0x57e00203,0x57e00263,0x57e002c3这些地址的数据为0x00,而源代码uboot中的这些地址为0xe5,其他地址也有不是这样规律的错误的。 是不是可以把问题定位到nand数据复制到内存时发生错误,或者内存发生错误,比如地址线虚焊。开发板内存是同学焊接的
hobby机器人#3 · 2011/4/5
出错的地址值之间,差值都是96,这是为啥呢? 既然还可以看到打印信息,我建议你自己加点儿代码做一下flash和sdram的读写测试 比如: 1、顺序递增数据逐个写入,然后再读出来比较 2、如果出错的总是那些地方(print一下对应位置内存和flash的内容),大概是地址线虚焊之类的? 3、如果出错的地方会变动,可能是内存访问的时序问题?(这个是纯瞎猜的)
ArmStrong机器人#4 · 2011/4/6
首先你应该仔细查看一下硬件--nand或者收发器焊接有没有短路或者虚焊。 nand一般是8位或者16位数据线,如果某个位错了,那错误一般会比较严重,因为这8位要做命令,地址,数据,重复很多次。 你把数据尽量完整地帖一下,否则没法分析 【 在 AuGust0806 (APologize) 的大作中提到: 】 : 今天上午在linux下用uboot源代码与nand中的uboot二进制数据进行对比,发现他俩是一样的,而内存中的这个地址空间0x57e00000---57e04000的二进制数据与uboot源代码二进制数据对比,发现不是从0x57e00512出现问题的,在0x57e00007就已经出现不一样了,而且大概出现不一样� : 是不是可以把问题定位到nand数据复制到内存时发生错误,或者内存发生错误,比如地址线虚焊。开发板内存是同学焊接的
AuGust0806机器人#5 · 2011/4/6
【 在 ArmStrong 的大作中提到: 】 : 首先你应该仔细查看一下硬件--nand或者收发器焊接有没有短路或者虚焊。 : nand一般是8位或者16位数据线,如果某个位错了,那错误一般会比较严重,因为这8位要做命令,地址,数据,重复很多次。 : 你把数据尽量完整地帖一下,否则没法分析 : ................... 附件为u-boot和memory,其中u-boot为二进制源代码,memory为内存中读写出的0x0000h--0x4000h二进制代码,通过代码对比软件显示,如下地址出现不同:007h,09a,143,1a7,203,263,2c3,323,383,3e3,,3f2,50a,512,514,55e,5d3,5d7,5d8........版主可以通过对比软件meld进行查看。二进制源代码可在厂商开发板上运行,这基本说明二进制代码没问题吧。但在同学画的相同硬件的pcb板上却发现以上问题。 附件(181.8KB) u-boot.bin 附件(16KB) memory.bin
AuGust0806机器人#6 · 2011/4/6
【 在 hobby 的大作中提到: 】 : 出错的地址值之间,差值都是96,这是为啥呢? : 既然还可以看到打印信息,我建议你自己加点儿代码做一下flash和sdram的读写测试 : 比如: : ................... 准备打算测试一下,现在通过hjtag仿真器得到的错误地址有的相同,有的不相同,错误内容有的相同,有的不相同。
ArmStrong机器人#7 · 2011/4/7
比较了一下,完全没有规律的,应该不是某个数据线的问题,因为数据线虚焊短路我都见过,不是这个样子,基本上nand都不能读写,建议第一,还是查看焊接,第二,看看sdram的初始化有没有问题,第三,测一下nand和sdram读写时序,就对错误的那一个地址进行读写对比测试,应该很快就能判断问题所在 【 在 AuGust0806 (APologize) 的大作中提到: 】 : 附件为u-boot和memory,其中u-boot为二进制源代码,memory为内存中读写出的0x0000h--0x4000h二进制代码,通过代码对比软件显示,如下地址出现不同:007h,09a,143,1a7,203,263,2c3,323,383,3e3,,3f2,50a,512,514,55e,5d3,5d7,5d8........版主可以通过对比软件meld进行查
AuGust0806机器人#8 · 2011/4/13
【 在 ArmStrong 的大作中提到: 】 : 比较了一下,完全没有规律的,应该不是某个数据线的问题,因为数据线虚焊短路我都见过,不是这个样子,基本上nand都不能读写,建议第一,还是查看焊接,第二,看看sdram的初始化有没有问题,第三,测一下nand和sdram读写时序,就对错误的那一个地址进行读写对比测试,应该很快就能判断问题所在 : 【 在 AuGust0806 (APologize) 的大作中提到: 】 : : 附件为u-boot和memory,其中u-boot为二进制源代码,memory为内存中读写出的0x0000h--0x4000h二进制代码,通过代码对比软件显示,如下地址出现不同:007h,09a,143,1a7,203,263,2c3,323,383,3e3,,3f2,50a,512,514,55e,5d3,5d7,5d8........版主可以通过对比软件meld进行查 : ................... 前几天忙着其他的工作,这两天继续弄uboot,针对版主建议做如下工作:1、焊接部分,同学几乎无法查看,2、初始化部分已反复查看,未查出情况,3、对之前的nand错误地址0x00000007和正确地址0x00000008均进行读写操作,发现读这两地址上的数据写到sdram中均正确。现在的情况就特别尴尬了,因为感觉无技可施了,除了继续查看内存初始化情况。还请版主支下招
ArmStrong机器人#9 · 2011/4/14
焊接无法查看是啥意思?原来我们做板子,有很多诡异的问题,最后拿板子仔细看看查到是焊接问题,拿着板子仔细看两遍也不费事阿。 就是说你用仿真器单独读写地址是正确的,但是在uboot中就不对? 【 在 Au用Gust0806 (APologize) 的大作中提到: 】 : 前几天忙着其他的工作,这两天继续弄uboot,针对版主建议做如下工作:1、焊接部分,同学几乎无法查看,2、初始化部分已反复查看,未查出情况,3、对之前的nand错误地址0x00000007和正确地址0x00000008均进行读写操作,发现读这两地址上的数据写到sdram中均正确。现在的�