zoukankan      html  css  js  c++  java
  • supervivi的一点秘密

    自从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的要求大部分是很简单的,只要启动够快就行,关键还在于系统及应用部分。
    希望这点“小秘密”对你有所帮助。

  • 相关阅读:
    摘:复习STL
    C#:在其它dll中调用此文件中的资源
    摘录:CSharp调用C动态链接库详解
    C/C++基本数据类型
    mysqlreport指南
    mysqlreport工具
    收藏一个简洁的PHP可逆加密函数
    解决MySQL查询数据不一致诟病
    Ubuntu下搭建C/C++开发环境
    mysql:主键和索引的区别
  • 原文地址:https://www.cnblogs.com/hnrainll/p/1978253.html
Copyright © 2011-2022 走看看