关于nboot和eboot的问题

时间:2022-09-04 17:54:13
开发板构架2440+nandflash,我想用nboot+eboot来引导wince,现在从网下来bootloader的源码,nboot写到block0,eboot写到block2(jtag),nboot串口可以显示,然后按“e‘,在读取完eboot侯就死机了,eboot没起来。我下载的源码都是基于2440的、wince5.0网上很常见的那种,而且我看源码,串口匹配,都是0口,
1)但是为什么eboot起不来呢?至少有输出才对啊。
2)还有我知道block1中要写入一个tocblock1的文件,记录nk的信息,但是谁写入得呢,是eboot么?什么时候写的呢。我看wince4.2之前的版本都是把这个文件用jtag写进去的,但是我买的开发板给的手册没有这一项。现在是什么原理呢?
3)还有一个MBR的什么扇区信息,也是eboot写的么?
4)nboot写入的是nboot.bin文件,写eboot时候需要什么文件,.nb0还是.bin 他们有什么区别?
5)网上有两种常见的eboot,一种目录下有startup.s文件,初始化硬件cpu等可以在norflash上运行。还有一种没有startup.s文件,一般文件夹都是小写。我现在用的是第二种。想知道用nboot引导eboot,硬件还需要重新初始化么,因为nboot已经把最基本的都设置过了。如果需要的话在那个文件中?这种eboot的代码流程是怎么进行的?我怀疑串口没有输出是因为某个硬件初始化不对,但是找不到相关文件

回答单个问题也给分,谢谢了

20 个解决方案

#1


在初期最好找个好的来弄,不然开发一个bootloader涉及了ARM多方面,很难的。

优龙,立宇泰的都不错。

#2


关于eboot啊,什么MBR,我的博客有一些介绍,楼主找些代码来看就更好。

#3


eboot要烧录.nb0文件

至于区别,你在论坛里搜索一下,已经回答过很多次了。

MBR,TOC可以用也可以不用,看你的nboot是怎么写的了。

#4


mark

#5


1.估计是串口没起来。
2.你是指调试信息吗?那个是EBOOT打。3也是EBOOT的事
4.BIN和NB0一个是压缩的一个是没有压缩的
5.这种认识不太正确,要看代码的。

#6


该回复于2009-03-05 09:21:07被版主删除

#7


up

#8


关于问题5,我看到网上介绍的eboot流程都是从startup.s开始的。但是有的eboot没有这个文件,那么nboot在把指针交给eboot时,第一个执行的是那个函数或者文件呢,不会是main()吧?eboot不需要对硬件再进行初始化了么

#9


引用 8 楼 xinxizheng 的回复:
关于问题5,我看到网上介绍的eboot流程都是从startup.s开始的。但是有的eboot没有这个文件,那么nboot在把指针交给eboot时,第一个执行的是那个函数或者文件呢,不会是main()吧?eboot不需要对硬件再进行初始化了么
没啊,从eboot。nbo最开始执行,就是从start。s开始执行

#10


我用的那个eboot没有这个文件啊(start。s)

#11


up

#12


引用 10 楼 xinxizheng 的回复:
我用的那个eboot没有这个文件啊(start。s)

你看看source文件中又没有包括这个文件或者相关的汇编文件,如果没的话真的就直接到c了

#13


我找到了,应该是先运行的arm文件夹下的一个fw.s的文件,这个文件引用了内核的硬件初始化文件,也就是eboot和内核共享代码。但是在我查看串口初始化的 时候,发现eboot引用的串口初始化函数UART_BASE0=0X1B00000,(大约是这个数,记不清),但是在nboot汇编中这个值初始化是0x50000000,这是为什么,内核把地址重新影射了么?

#14


检测 EBoot 里面的 MMU 配置,要是 EBoot 没有起来的话多半是 EBOOT 的 MMU 没有配置好,可以在 EBOOT 的初始化汇编中加两个 LED 看看程序跑到哪里了。

#15


谢谢,问题还没解决,过几天再结贴。我现在看eboot的源码,汇编部分,fw.s 是与内核公用的,内核写进去可以启动说明内核这部分代码没问题(用开发板自带的eboot.bin,无源码),但是为什么我的eboot没有显示呢。网上看到说微软的编译器有问题,编出来的文件前四k是空的,具体没看明白,这个有影响么?,

#16


fw.s 是与内核公用的??

________________________

估计是4.2BSP吧,我的5.0BSP没有这个文件,还有和内核公用的?我觉得这两个文件都差不多的。其实在OAL可以把这个文件删减一些。

#17


4.2和5.0的名字不同,5.0叫startup.s,4.2叫fw.s

#18


我用的是开发板提供的bsp包,可能他们也是从4.2移植到5.0的。

#19


问题解决,给分了,原来还是微软编译器的问题,用pb编译eboot,前四k代码是空的

#20


大虾们 什么是EBOOT ? NBOOT?

#1


在初期最好找个好的来弄,不然开发一个bootloader涉及了ARM多方面,很难的。

优龙,立宇泰的都不错。

#2


关于eboot啊,什么MBR,我的博客有一些介绍,楼主找些代码来看就更好。

#3


eboot要烧录.nb0文件

至于区别,你在论坛里搜索一下,已经回答过很多次了。

MBR,TOC可以用也可以不用,看你的nboot是怎么写的了。

#4


mark

#5


1.估计是串口没起来。
2.你是指调试信息吗?那个是EBOOT打。3也是EBOOT的事
4.BIN和NB0一个是压缩的一个是没有压缩的
5.这种认识不太正确,要看代码的。

#6


该回复于2009-03-05 09:21:07被版主删除

#7


up

#8


关于问题5,我看到网上介绍的eboot流程都是从startup.s开始的。但是有的eboot没有这个文件,那么nboot在把指针交给eboot时,第一个执行的是那个函数或者文件呢,不会是main()吧?eboot不需要对硬件再进行初始化了么

#9


引用 8 楼 xinxizheng 的回复:
关于问题5,我看到网上介绍的eboot流程都是从startup.s开始的。但是有的eboot没有这个文件,那么nboot在把指针交给eboot时,第一个执行的是那个函数或者文件呢,不会是main()吧?eboot不需要对硬件再进行初始化了么
没啊,从eboot。nbo最开始执行,就是从start。s开始执行

#10


我用的那个eboot没有这个文件啊(start。s)

#11


up

#12


引用 10 楼 xinxizheng 的回复:
我用的那个eboot没有这个文件啊(start。s)

你看看source文件中又没有包括这个文件或者相关的汇编文件,如果没的话真的就直接到c了

#13


我找到了,应该是先运行的arm文件夹下的一个fw.s的文件,这个文件引用了内核的硬件初始化文件,也就是eboot和内核共享代码。但是在我查看串口初始化的 时候,发现eboot引用的串口初始化函数UART_BASE0=0X1B00000,(大约是这个数,记不清),但是在nboot汇编中这个值初始化是0x50000000,这是为什么,内核把地址重新影射了么?

#14


检测 EBoot 里面的 MMU 配置,要是 EBoot 没有起来的话多半是 EBOOT 的 MMU 没有配置好,可以在 EBOOT 的初始化汇编中加两个 LED 看看程序跑到哪里了。

#15


谢谢,问题还没解决,过几天再结贴。我现在看eboot的源码,汇编部分,fw.s 是与内核公用的,内核写进去可以启动说明内核这部分代码没问题(用开发板自带的eboot.bin,无源码),但是为什么我的eboot没有显示呢。网上看到说微软的编译器有问题,编出来的文件前四k是空的,具体没看明白,这个有影响么?,

#16


fw.s 是与内核公用的??

________________________

估计是4.2BSP吧,我的5.0BSP没有这个文件,还有和内核公用的?我觉得这两个文件都差不多的。其实在OAL可以把这个文件删减一些。

#17


4.2和5.0的名字不同,5.0叫startup.s,4.2叫fw.s

#18


我用的是开发板提供的bsp包,可能他们也是从4.2移植到5.0的。

#19


问题解决,给分了,原来还是微软编译器的问题,用pb编译eboot,前四k代码是空的

#20


大虾们 什么是EBOOT ? NBOOT?

#21