vivi 编译的配置!!!

转的哦!

   

菜单说明  

System   Type //系统类型  

(S3C2440-based)   ARM System  type  //ARM系统类型  (硬件是基于何种芯片)

  (   )   SA1100   –   based  

  (   )   PXA250/210   –   based             //英特尔Xscale arm芯片

  (   )   S3C2400   –   based            //三星公司arm芯片

  (  )   S3C2410   –   based             //三星公司arm芯片

  ( )   S3C2440   –   based               //三星公司arm芯片

  Implementations       //启动位置  

  (SMDK)    Platform  

  (x)SMDK  

  (   )MPORT3  

  (   )MPORT1  

  [ ]Support   NAND              //Boot 支持NAND启动  

  [   ]Support   AMD              //Boot 支持AMD启动  

  –   Low   Level   Hardware Debugging         //底层调试(硬件级)  

  [   ]Enable   simple   memory  test             //简单的存储器测试  

 

General   Setup //通用设置  

  [   ]   Define   TEXT   Address        //定义text段地址  

  (0)   vivi   base   address               //vivi基地址  

[   ]   support   reset   handler    //支持复位处理 

  –   CACHE   Enable          //缓存  

  [   ]   I   –   Cache   on      //指令缓存  

  [   ]   D   –   Cach   on      //数据缓存 

  –   Power   Management //电源管理  

  [   ]   Support   power   management    //支持电源管理  

          Others  

            [   ]   Display   progress   bar            //显示进度  

            [   ]   Support   MD5                    //支持MD5  

             

Private   Data         //专用数据  

  [   ]   Support   VIVI   private   data          //支持vivi专用数据  

  [   ]   Parse vivi private data from  MTD //MTD上解析vivi专用数据  

  [   ]   Use user–define  parameter block      //使用用户设定参数块  

  [   ]   Enable   debugging   messages         //打开调试信息  

 

Serial   Port    //串口  

  [   ]   Serial   Port   (UART)            //support 串口支持  

  [   ]   Support   serial   terminal      //支持串口终端  

  (   EXTENDED)User   interface         //用户界面  

  (   )STANDARD        //标准  

  (   )EXTENDED         //扩展  

  Default   prompt   “vivi”   //默认的提示信息:"vivi"  

          Ports             //端口  

            [   ]   Support   UART   0       //支持UART0  

            [   ]   Support   UART   1       //支持UART1  

            [   ]   Support   UART   2       //支持UART2  

            [   ]   Support   UART   3       //支持UART3  

            –   Transfer   Protocol             //传输协议  

            [   ]   Support   X   –   Modem //支持   X   Modem   传输  

            [   ]   Support   Y   –   Modem //支持   Y   Modem   传输  

            [   ]   Support   Z   –   Modem //支持   Z   Modem   传输  

             

Memory   Technology   Devices   (MTD) //存储器设备种类  

  [   ]   Memory   Technology   Devices   (MTD)  // support 支持存储器  

  [   ]   Debugging           //调试  

  NOR   Flash   chip   drivers             //Nor Flash 芯片驱动  

  [   ]   NOR   Device   Support         支持 Nor Flash 设备  

 [ ] Detect flash chips by Common Flash Interface (CFI) //probe 检测 CF 接口  

  [  ] Flash chip   driver   advanced   configuration   options   (NEW)    

//高级的闪存设置选项  

  (   ) Flash cmd/query data swapping //设置查看FLASH上的数据的字节序  

  (   )   NO  

  (   )   BIG_ENDIAN_BYTE  

  (   )   LITTLE_   ENDIAN_BYTE  

  [   ] Specific CFI Flash geometry  selection  (NEW)   //特殊的CF选择 

  [   ] Support   8-bit   buswidth   (NEW)    //支持8位总线宽度  

  [   ] Support   16-bit   buswidth   (NEW) //支持16线宽度  

  [   ] Support   32-bit   buswidth   (NEW) //支持32线宽度  

  [   ] Support   64-bit   buswidth   (NEW) //支持64线宽度  

  [   ] Support   1-chip   flash   interleave   (NEW) //支持1片闪存  

  [   ] Support   2-chip   flash   interleave   (NEW) //支持2片闪存  

  [   ] Support   4-chip   flash   interleave   (NEW) //支持4片闪存  

  [   ] Support   8-chip   flash   interleave   (NEW) //支持8片闪存  

  [   ] Support   for   Intel/Sharp   flash   chips //支持Intelharp   的闪存  

  [   ] Older   (theoretically   obsoleted   now)   deivers   for   non-CFI   chips  //不支持CFI芯片的旧设备。  

  [   ] AMD   compatible   flash   chip   support   (non-CFI) //支持AMD兼容闪存(无cfi  

  Mapping   drivers   for   chip   access  

  [   ]   Flash   device   mapped   on   S3C2410   //S3C2410上的   

NAND   Flash   Device   Drivers NAND闪存设备驱动  

  [   ]   Enable   ECC   correction   algorithm      //ECC修正算法  

  [   ]   Verify   NAND   page   writes                 //NAND页写入校验  

  [   ]   SMC   Device   Support                          //支持SMC设备  

  [   ]   bonfs   support                                     //支持bonfs

   

Add   Built     in   Command     //内部命令  

  [   ]   men   command                    //存储器指令  

  [   ] mem   test   command            //存储器测试指令  

  [   ]   param   command                 //参数指令  

  [   ]   part   command                    //退出指令  

  [   ]   bon   command                    //分区指令  

  [   ]   sleep   command                   //停顿指令  

  [   ]   prompt   command               //提示指令  

  [   ]   built-in   command                //内部指令  

  [   ]   amd   command                    //初期指令  

   

System   hacking             //不确定系统  

  [   ]Support   test   mode              //支持测试模式  

  [*]Debugging                                  //调试  

  (0)Debugging   verbosity     (   0   =   quiet   ,   3   =   noisy   )   (NEW)                    // 调试信息的级别,0应该是不输出调试信息,3输出的最多.   

Debugging   messages      //调试信息  

 

[   ]   VIVI   low-level   debugging   functions           //vivi底层调试功能。  

 Load an Alternate Configuration  File     //载入预配置  

 

  Save  Configuration  to  Alternate  File     //保存配置  

      

 

 

 

 

 

 

      今天主要学习了vivi,当然,这是个入门级别的bootloader,但通过分析vivi来学习uboot是一个非常好的选择,vivi的配置仿照kernel的配置,所以也可以作为配置kernel的入门材料,至于vivi的一些启动过程这里就不做详细的解释了,这里只对vivi的配置中的一些选项做一下解析。
make menuconfig
出现的菜单主要有以下一些选项:
System Type --->  【系统配置:主要设置芯片、平台类型 底层启动选项等】                 
General setup---> 【通用设置:vivi基地址、系统缓存、电源管理等 】                    
Private Data --->  【私有数据设置:vivi的私有数据 启动的一些用户私有数据】            
Serial Port  --->   【串口:是否支持串口(vivi只支持串口,怎么敢不选),串口传输协议】  
Memory Technology Devices(MTD)-->  【存储设备相关选项】                           
Add Built-in Commands  ---->        【vivi支持命令】                             
System hacking  ---->        【系统调试相关选项】                                 
Debugging messages   --->    【调试信息相关】                                    
----                                                                           
Load and Alternate Configuration File  【载入配置文件,vivi自带一个sdmk的配置文件】  
Save Configuration to an Alternate File  【保存自己的配置信息】

下边一一详解。
system type:
这里有连个选项,非常的简单,就是选择我们的arm芯片的类型,我这里使用的是s3c2410,
所以在arm system type 中选择 s3c2410-based.
这里还有一个implementation选项,这个选项主要选择一些平台的其他信息,这里需要知道一个简单smdk
Symbol Mobility Developer Kit (SMDK) ,通用移动设备开发套件,现在很多的s3c2410的板子都属于这个,所以要选择这个,如果不是的话,可能vivi就不能满足你的bootloader的要求了,可以选择uboot,这里有一些关于启动的选项,我这里是只有一块nand flash,所以选择nand boot.
(S3C2440-based)   ARM System  type  
  (   )   SA1100   –   based   
  (   )   PXA250/210   –   based          //英特尔Xscale arm芯片
  (   )   S3C2400   –   based            //三星公司arm芯片
  (  )   S3C2410   –   based             //三星公司arm芯片
  ( )   S3C2440   –   based              //三星公司arm芯片
  Implementations       //启动位置   
  (SMDK)    Platform   
  (x)SMDK   
  (   )MPORT3   
  (   )MPORT1   
  [ ]Support   NAND              //Boot 支持NAND启动   
  [   ]Support   AMD              //Boot 支持AMD启动   
  –   Low   Level   Hardware Debugging         //底层调试(硬件级)   
  [   ]Enable   simple   memory  test             //简单的存储器测试   

关于通用配置,不知道是什么问题,在我的机器上如果加入support reset handler,会编译出错,只能取消这个选项了,关于缓存,这里不太明白,需要请下昊昱,

General   Setup //通用设置   
  [   ]   Define   TEXT   Address        //定义text段地址   
  (0)   vivi   base   address            //vivi基地址   
[   ]   support   reset   handler    //支持复位处理,可以不选,一般平台都有硬件复位。  
  –   CACHE   Enable          //缓存   
  [   ]   I   –   Cache   on      //指令缓存   
  [   ]   D   –   Cach   on      //数据缓存  
  –   Power   Management //电源管理   
  [   ]   Support   power   management    //支持电源管理   
–          Others   
–            [   ]   Display   progress   bar            //显示进度   
–            [   ]   Support   MD5                    //支持MD5   
私有数据选项中,具体的现象含义还不知道,等研究完vivi的源码在补充吧,但这里需要支持的是,这里的选项是和用户有关的,那么这些数据是非必须的,推荐全选。
Private   Data         //专用数据   
  [   ]   Support   VIVI   private   data          //支持vivi专用数据   
  [   ]   Parse vivi private data from  MTD //从MTD上解析vivi专用数据   
  [   ]   Use user–define  parameter block      //使用用户设定参数块   
  [   ]   Enable   debugging   messages         //打开调试信息   

现在到了vivi最为中要的地方了,串口相关的设计,我们知道原版的vivi只能通过串口进行数据的传输,当然不包括现在网上流传的一些改进版的vivi了,由于vivi只支持串口进行数据的传输,所以速度非常的慢,你可以想象下,如果你的跟文件系统有10M,而串口的速度一般不会超过10K/s,算算要多长时间才能传完你的根文件系统,但让,vivi也自动了一个很方便的工具那就是imagewrite,但前提是你有一个已经可以运作的linux才能使用imagewrite,至少你第一次少文件系统的时候需要半个多小时的等待吧。
Serial   Port    //串口   
  [   ]   Serial   Port   (UART)            //support 串口支持   
  [   ]   Support   serial   terminal      //支持串口终端   
  (   EXTENDED)User   interface         //用户界面   
  (   )STANDARD        //标准   
  (   )EXTENDED         //扩展   
  Default   prompt   “vivi”   //默认的提示信息:"vivi",
–          Ports             //端口   
–            [   ]   Support   UART   0       //支持UART0   
–            [   ]   Support   UART   1       //支持UART1   
–            [   ]   Support   UART   2       //支持UART2   
–            [   ]   Support   UART   3       //支持UART3   
–            –   Transfer   Protocol             //传输协议   
–            [   ]   Support   X   –   Modem //支持   X   Modem   传输   
–            [   ]   Support   Y   –   Modem //支持   Y   Modem   传输   
–            [   ]   Support   Z   –   Modem //支持   Z   Modem   传输  
下边,我们开始存储器管理部分,这部分是比较麻烦一些的。
Memory   Technology   Devices   (MTD) //存储器设备种类   
  [   ]   Memory   Technology   Devices   (MTD)  // support 支持存储器   
  [   ]   Debugging           //调试  
  NOR   Flash   chip   drivers             //Nor Flash 芯片驱动   
  [   ]   NOR   Device   Support         支持 Nor Flash 设备   
[ ] Detect flash chips by Common Flash Interface (CFI) //probe 检测 CF 接口   
  [  ] Flash chip   driver   advanced   configuration   options   (NEW)     
//高级的闪存设置选项   
  (   ) Flash cmd/query data swapping //设置查看FLASH上的数据的字节序   
  (   )   NO   
  (   )   BIG_ENDIAN_BYTE   
  (   )   LITTLE_   ENDIAN_BYTE   
  [   ] Specific CFI Flash geometry  selection  (NEW)   //特殊的CF选择  
  [   ] Support   8-bit   buswidth   (NEW)    //支持8位总线宽度   
  [   ] Support   16-bit   buswidth   (NEW) //支持16线宽度   
  [   ] Support   32-bit   buswidth   (NEW) //支持32线宽度   
  [   ] Support   64-bit   buswidth   (NEW) //支持64线宽度   
  [   ] Support   1-chip   flash   interleave   (NEW) //支持1片闪存   
  [   ] Support   2-chip   flash   interleave   (NEW) //支持2片闪存   
  [   ] Support   4-chip   flash   interleave   (NEW) //支持4片闪存   
  [   ] Support   8-chip   flash   interleave   (NEW) //支持8片闪存   
  [   ] Support   for   Intel/Sharp   flash   chips //支持Intel或harp   的闪存   
  [   ] Older   (theoretically   obsoleted   now)   deivers   for   non-CFI   chips  //不支持CFI芯片的旧设备。   
  [   ] AMD   compatible   flash   chip   support   (non-CFI) //支持AMD兼容闪存(无cfi)   
  Mapping   drivers   for   chip   access   
  [   ]   Flash   device   mapped   on   S3C2410   //S3C2410上的   
NAND   Flash   Device   Drivers NAND闪存设备驱动   
  [   ]   Enable   ECC   correction   algorithm      //ECC修正算法   
  [   ]   Verify   NAND   page   writes                 //NAND页写入校验   
  [   ]   SMC   Device   Support                          //支持SMC设备   
  [   ]   bonfs   support                            //支持bonfs
这里是选择vivi支持的命令,part是flash分区相关的命令,可以show save del 等
param 是设置一些启动参数。amd这条命令在我的实验板上编译不通过,只能取消它。

Add   Built   –   in   Command     //内部命令   
  [   ]   men   command                    //存储器指令   
  [   ] mem   test   command            //存储器测试指令   
  [   ]   param   command                 //参数指令   
  [   ]   part   command                    //退出指令   
  [   ]   bon   command                    //分区指令   
  [   ]   sleep   command                   //停顿指令   
  [   ]   prompt   command               //提示指令   
  [   ]   built-in   command                //内部指令   
  [   ]   amd   command                    //初期指令   
基本的配置就这些,这里参考了:
http://sns.linuxpk.com/space-1717-do-blog-id-15328.html
在配置完vivi后,生成Makefile后,还不能正常的编译,这里需要做一些修改。下边是一个Makefile文件需要修改的地方:

LINUX_INCLUDE_DIR    = /usr/local/arm/2.95.3/include/
CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-
ARM_GCC_LIBS    = /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3

需要注意的是,vivi-20030629.tar.bz2这般的vivi只支持编译器为2.95.3,这是在嵌入式开发当中经常遇到的问题,如果Makefile没有问题,而编译又不能正常进行,首先需要想到的就是编译器的版本问题,这个版本的vivi使用3.4.1的编译器是不能正常编译的,应为我们要把vivi放到arm平台上运行,所以需要把arm相关的库文件,这就需要在Makefile中制定这些库文件存储的地方。做完这些,基本上就可以了。
   我们在看看vivi中关于flash的分区,在vivi中受用part show,可以看到有一下几个分区: vivi  param kernel  root  usr ,这些分区信息定义在下边的结构体当中:
  vivi/arch/s3c2410/smdk.c
#ifdef CONFIG_S3C2410_NAND_BOOT
mtd_partition_t default_mtd_partitions[] = {
    {
        name:        "vivi",
        offset:        0,
        size:        0x00020000,
        flag:        0
    }, {
        name:        "param",
        offset:        0x00020000,
        size:        0x00010000,
        flag:        0
    }, {
        name:        "kernel",
        offset:        0x00030000,
        size:        0x000C0000,
        flag:        0
    }, {
        name:        "root",
        offset:        0x00100000,
        size:        0x00140000,
        flag:        MF_BONFS
    }
};
#endif
#ifdef CONFIG_S3C2410_AMD_BOOT
mtd_partition_t default_mtd_partitions[] = {
    {
        name:        "vivi",
        offset:        0,
        size:        0x00020000,
        flag:        0
    }, {
        name:        "param",
        offset:        0x00020000,
        size:        0x00010000,
        flag:        0
    }, {
        name:        "kernel",
        offset:        0x00030000,
        size:        0x000C0000,
        flag:        0
    }, {
        name:        "root",
        offset:        0x00100000,
        size:        0x00140000,
        flag:        MF_BONFS
    }
};
在上边的分区表可以看出,这些分区在flash中成线性排列的。这样,这里的这些数据是mizi公司推荐使用smdk开发板的用户的数据,当然可以根据自己的需要来修改各个分区的大小了。这里的offset是相对于flash起始地址0而言,自己的相对地址,其实就是实际地址,而size就是这个分区实际占据的大小了。
vivi的使用在这里就告一段落了,更多的细节就需要看vivi的源码了。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/100516/showart_1990464.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值