supervivi的一点秘密

http://www.cnblogs.com/hnrainll/archive/2011/03/09/1978253.html

自从2009-7版本的supervivi,其实是由三个程序组成的: 

1. vboot和nboot的混合体, 
2. 原来的supervivi 
3. eboot 
他们使用不同的编译器编译出,最后粘在一起形成supervivi,所以,supervivi并不是单纯的一套代码,而是三套代码。 
其中,vboot和nboot的混合体暂且可以成为xboot,它的原始版本是nboot,但做了比较大的修改,以便可以做到这三个功能: 
(1)检测开发板的K1-K6按键是否按下以启动supervivi 
(2)启动Linux 
(3)启动WinCE 
xboot是由ARM Linux GCC编译的,其bin文件小于4K,因为xboot的功能比较多,而大小有限,所以无法像nboot那样加载开机图片和进度条,像vboot或者nboot一样,xboot实际是支持各个容量nand flash读取启动的。 
原来的supervivi姑且称为old-supervivi,它主要保留了以前的功能: 
(1)下载烧写Linux映像文件 
(2)设置Linux启动参数 
(3)格式化或者烧写整片Nand Flash 
(4)下载裸机程序到内存运行,或者烧写到nand flash的block 0 
old-supervivi也是由ARM Linux GCC编译的,因为三星原来的vivi实在太烂,如果要同时支持512 byte和2K byte的nand flash,需要做很多的调整,鉴于时间原因,我们暂时没有做这样的开发,因为重新设计一个新结构的bootloader比做这样的改进还要快一些。所以现在有两个版本的supervivi: 64M和128M 
eboot其实是用PB编译出来的bin文件直接塞进supervivi里面的,但执行烧写nk.bin的命令时会调用这个eboot,所以不像其他烧写过程,nk.bin烧写完是无法返回supervivi菜单的。 
当然,我们对eboot做了很多删减,只保留了最基本的烧写功能。 
至此,或许你应该明白,supervivi实际是一团bootloader糅合在一起的东西,它无法通过单一的编译器制作生成,对于它的开放性也就几乎失去了意义,supervivi的功能很强的,而且简单易用,你只要学会使用它就可以了。对于喜欢研究bootloader的网友,有很多开源的可以参考学习;对于打算做项目的用户,完全可以使用vboot或者nboot来代替它,vboot和nboot的代码量很小,而且简单易懂,很容易实现定制化,比如加个开关控制之类的功能,因为实际的产品对于bootloader的要求大部分是很简单的,只要启动够快就行,关键还在于系统及应用部分。 
希望这点“小秘密”对你有所帮助。

你可能感兴趣的:(supervivi的一点秘密)