主题 : supervivi的一点秘密 复制链接 | 浏览器收藏 | 打印
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
楼主  发表于: 2010-02-10 23:36

 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的要求大部分是很简单的,只要启动够快就行,关键还在于系统及应用部分。


希望这点“小秘密”对你有所帮助。



新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
友善的板子还不错
级别: 新手上路
UID: 1892
精华: 0
发帖: 39
金钱: 195 两
威望: 39 点
综合积分: 78 分
注册时间: 2008-10-09
最后登录: 2019-12-05
1楼  发表于: 2010-02-22 14:17
顶一下,supervivi还挺好用的
级别: 侠客
UID: 9289
精华: 0
发帖: 124
金钱: 675 两
威望: 165 点
综合积分: 248 分
注册时间: 2009-09-24
最后登录: 2016-07-05
2楼  发表于: 2010-02-24 08:19
级别: 新手上路
UID: 8621
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2009-08-30
最后登录: 2010-07-07
3楼  发表于: 2010-03-19 00:16
有问题要请教一下楼主:

我把板子做了某些修改,但Norflash以及Nandflash部分没有改变。现在用JTAG把suprevivi写进Norflash后,串口可以打印出那一串命令列表,但是无法接受任何的按键输入,所以现在无法写Nandflash了。请问这可能是什么原因导致的呢?我看上面的描述中有这么一条"检测开发板的K1-K6按键是否按下以启动supervivi",现在的板子已经没有这几个按键了,并且相应的中断也重新做了分配,这个会不会影响supervivi的运行呢?

这个已经不是原始的开发板了,也许超出了客服的服务范围,但我现在真的是很迷茫,如果可能的话,还希望楼主能够指点一下。感激不尽!
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
4楼  发表于: 2010-03-19 12:26
如果supervivi在NOR Flash中运行,和按键无关。

如果你是自己做的板子,可能需要多焊几个试试,如果是在mini2440基础上修改的,先检查串口的硬件连接,比如USB转串口等,如果还有问题,只能重新买个mini2440再试试了。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 8621
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2009-08-30
最后登录: 2010-07-07
5楼  发表于: 2010-03-22 23:33
试了很久,还是没有解决问题,现在想能否绕过Norflash,直接使用Nandflash。
现在有两个问题,一是如何烧写Nandflash?手册里似乎提过可以用sjf2440,但没有详细介绍。
二是假设把supervivi写进了Nandflash,然后如何操作?就是如何实现把程序download进sdram里运行以及烧写进Nandflash?我用的是wince系统。
级别: 新手上路
UID: 16687
精华: 0
发帖: 23
金钱: 115 两
威望: 23 点
综合积分: 46 分
注册时间: 2010-03-20
最后登录: 2011-05-18
6楼  发表于: 2010-03-31 08:29
级别: 新手上路
UID: 10107
精华: 0
发帖: 15
金钱: 115 两
威望: 44 点
综合积分: 30 分
注册时间: 2009-10-24
最后登录: 2010-12-27
7楼  发表于: 2010-07-07 14:29
既然说supervivi里面已经包含了eboot
那为什么烧写wince时候还要先烧eboot呢?
能不能把详细的分区信息给出来呢?
或者把烧wince时用的eboot的代码给出来呢?
pb下生成的那个eboot不能用!
多谢!
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
8楼  发表于: 2010-07-07 15:06
引用第7楼sxmman于2010-07-07 14:29发表的  :
既然说supervivi里面已经包含了eboot
那为什么烧写wince时候还要先烧eboot呢?
能不能把详细的分区信息给出来呢?
或者把烧wince时用的eboot的代码给出来呢?
pb下生成的那个eboot不能用!
.......

最新的supervivi已经不再需要eboot
eboot是以前基于pb4.2做的,我们现在都用wince6了,所以更新一次supervivi相当麻烦。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
12056530
级别: 新手上路
UID: 27312
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-08-23
最后登录: 2010-09-01
9楼  发表于: 2010-08-24 23:19