2440官方bsp调试问题请教??

xuefeng_baggio 2009-11-25 09:16:21
各位大侠好,小弟最近把2440官方bsp的eboot阶段调试过了,现在有个问题我用usb下载nk.nin后能正常启动wince,能看到wince界面了。但是复位后有时候可以正常启动(这是正常的情况),但是我sysgen后nk大小可能发生了些变化,今天下载nk.bin后,nboot都没有了??我看了代码下载nk时会擦除nand,但是为什么会把nboot和eboot都擦掉呢??韦伯大哥在吗?我在线等!我dnw下载地址是0x30000000,昨天我下载nk复位后是可以启动wince的??
...全文
95 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
博说医械研发 2009-11-25
  • 打赏
  • 举报
回复
我的BSP好像 define了一个Reserve block的值,从你的F命令看是在此阶段才设置的这个值,所以你在恰当的位置把这个值设置一下使必要的block设置成reserve就行了。
在判断MBR之前就设置这个值,或者更好的办法是设置一下MBR的起始block
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
难道说每次都要先擦除下剩余的nand??


Enter your selection: f
Reserving Blocks [0x0 - 0x11] ...
...reserve complete.
Low-level format Blocks [0x12 - 0xfff] ...
...erase complete.
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
唉!整了半天发现问题了,但是不知道原因!我发现如果我在下载nk之前按"F" F) Low-level format the Smart Media card 就可以正常启动,但是下载前什么都不做就是上面错误的调试信息。
这个是正常的调试信息::
INFO: OEMLaunch: Found chain extenstion: '' @ 0x80200000
Writing single region/multi-region update, dwBINFSPartLength: 25692212
IsValidMBR: MBR sector = 0x240
OpenPartition: Invalid MBR. Formatting flash.
Enter LowLevelFormat [0x0, 0xfff].
Erasing flash block(s) [0x0, 0xfff] (please wait): EraseBlocks: found a bad block (0x0) - skipping...
EraseBlocks: found a bad block (0x1) - skipping...
EraseBlocks: found a bad block (0x2) - skipping...
EraseBlocks: found a bad block (0x3) - skipping...
EraseBlocks: found a bad block (0x4) - skipping...
EraseBlocks: found a bad block (0x5) - skipping...
EraseBlocks: found a bad block (0x6) - skipping...
EraseBlocks: found a bad block (0x7) - skipping...
EraseBlocks: found a bad block (0x8) - skipping...
EraseBlocks: found a bad block (0x9) - skipping...
EraseBlocks: found a bad block (0xa) - skipping...
EraseBlocks: found a bad block (0xb) - skipping...
EraseBlocks: found a bad block (0xc) - skipping...
EraseBlocks: found a bad block (0xd) - skipping...
EraseBlocks: found a bad block (0xe) - skipping...
EraseBlocks: found a bad block (0xf) - skipping...
EraseBlocks: found a bad block (0x10) - skipping...
EraseBlocks: found a bad block (0x11) - skipping...

韦伯大哥你看看这是什么原因呀??现在完全是研究了!嘎嘎!
博说医械研发 2009-11-25
  • 打赏
  • 举报
回复
IsValidMBR: MBR sector = 0x0
ecc error f00cfcc3 ffffffff
OpenPartition: Invalid MBR. Formatting flash.
Enter LowLevelFormat [0x0, 0xfff].
Erasing flash block(s) [0x0, 0xfff] (please wait): EraseBlocks: found a bad block (0x1) - skipping...
Done.
WriteMBR: MBR block = 0x0.


你的MBR在block 0?
看这些信息倒是像在此阶段擦除的
博说医械研发 2009-11-25
  • 打赏
  • 举报
回复
Erasing flash block(s) [0x0, 0xfff] (please wait): EraseBlocks: found a bad block (0x1) - skipping...


看上去是擦除了
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fjx1982441 的回复:]
肯定是将存储nboot和eboot的块一起擦除了,擦除地址有误啊。
[/Quote]请教下这个下载地址是怎么控制的呢?我没有改呀?
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yashi 的回复:]
正常是不会擦除nboot,eboot所在块的,除非你修改了代码。。。。
[/Quote]老斩大哥 那部分代码是管方的,小弟没敢改,就是看看分析下,昨天还是好的呢?不知道是nk不对还是下载地址不对,但是昨天我用的就是0x30000000地址下载的??
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 veabol 的回复:]
看EBOOT下载烧录NK的时候都擦除了哪些BLOCK,估计是对OS的BLOCK地址设置出错,导致一同擦除了NBOOT
[/Quote]
韦伯大哥,我的调试信息是+IMAGE_TYPE_RAMIMAGE+++++++baggio.
+WriteOSImageToBootMedia
+WriteOSImageToBootMedia: g_dwTocEntry =1, ImageStart: 0x80200000, ImageLength: 0x1880834, LaunchAddr:0x8021e4f0
INFO: OEMLaunch: Found chain extenstion: '' @ 0x80200000
Writing single region/multi-region update, dwBINFSPartLength: 25692212
IsValidMBR: MBR sector = 0x0
ecc error f00cfcc3 ffffffff
OpenPartition: Invalid MBR. Formatting flash.
Enter LowLevelFormat [0x0, 0xfff].
Erasing flash block(s) [0x0, 0xfff] (please wait): EraseBlocks: found a bad block (0x1) - skipping...

Done.
WriteMBR: MBR block = 0x0.
Done.

OpenPartition: Partition Exists=0x0 for part 0x21.
CreatePartition: Enter CreatePartition for 0x21.
LastLogSector: Last log sector is: 0x1ffdf.
CreatePartition: Start = 0x260, Num = 0xc420.
Log2Phys: Logical 0x260 -> Physical 0x280
WriteMBR: MBR block = 0x0.
BP_SetDataPointer at 0x0
WriteData: Start = 0x0, Length = 0x1880834.
Log2Phys: Logical 0x260 -> Physical 0x280
Updateded TOC!
IsValidMBR: MBR sector = 0x0
OpenPartition: Partition Exists=0x0 for part 0xb.
CreatePartition: Enter CreatePartition for 0xb.
FindFreeSector: FreeSector is: 0xc680 after processing part 0x21.
CreatePartition: Num sectors set to 0x13820 to allow for compaction blocks.
CreatePartition: Start = 0xc680, Num = 0x13820.
WriteMBR: MBR block = 0x0.
-WriteOSImageToBootMedia
+TOC_Write
-TOC_Write 您看下?我看了源码 BP_LowLevelFormat (0, g_FlashInfo.dwNumBlocks, dwFlags);
调用这个函数里有擦除的!都是从0开始的。我发现个问题 昨天我可以复位启动时下载nkIsValidMBR: MBR sector = 0x0这里是0x024,不知道现在为什么是0x0了。

fjx1982441 2009-11-25
  • 打赏
  • 举报
回复
肯定是将存储nboot和eboot的块一起擦除了,擦除地址有误啊。
yashi 2009-11-25
  • 打赏
  • 举报
回复
正常是不会擦除nboot,eboot所在块的,除非你修改了代码。。。。
博说医械研发 2009-11-25
  • 打赏
  • 举报
回复
看EBOOT下载烧录NK的时候都擦除了哪些BLOCK,估计是对OS的BLOCK地址设置出错,导致一同擦除了NBOOT
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
没人帮顶??韦伯大哥呢??看看什么问题??
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
比较可伶 !分少了!大侠们别见怪呀!
xuefeng_baggio 2009-11-25
  • 打赏
  • 举报
回复
这个问题先暂时每次下载时先擦除下,以后有时间了,再进一步深入研究!结贴!感谢韦伯大哥,老斩大哥,GM老兄!结贴!
gooogleman 2009-11-25
  • 打赏
  • 举报
回复
楼主在 flash 驱动中 把bootloader的 block标记为坏块,他就不会擦除的了。不然会不见的了、

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧