vivi起步

这一篇也是n年前的文章了。也列在此吧。

对于刚接触vivi的人或许有点用处吧。这篇中谈到的是标准版本vivi的功能,但其实我们平常使用的vivi都已经根据我们的需要进行了增删。这也是嵌入式的一个特点。呵呵

vivi起步(Getting started with vivi)

Janghoon Lyu    温陵布衣 译

       nandy@mizi.com      sikinzen@126.com

这是一篇关于viiv的入门短篇,也是vivi的帮助文档。

版本历史

版本 v0.1

2002-10-21

作者:Janghoon Lyu

第一个发布版本,做为一个简单的描述,错漏之处,请见谅

目录

1     介绍... 1

1.1     定义... 1

2     编译vivi 2

2.1     准备工作... 2

2.2     直接编译... 2

2.3     具有NOR flashSA1110开发板上的移植... 3

2.4     具有NAND flashS3C2410开发板上的移植... 3

3     使用vivi 4

3.1     用户与vivi间的接口... 4

3.2     内嵌的用户命令... 4

3.2.1     load命令... 4

3.2.2     part命令... 5

3.2.3     param命令... 6

3.2.4     boot命令... 7

3.2.5     flash命令... 7

 

1          

    这篇文档跟您讲述了以下内容:

1.    编译vivi

2.    用户与vivi的接口

3.    可用的命令

1.1          定义

vivi

viviarm处理器的引导装载程序之一。

 

自启动模式

vivi具有两种启动模式。默认模式便是自启动模式(译者注:也称启动装载模式)。在这种模式下,经一段延时后vivi自动启动Linux内核。

 

提示行模式

    vivi另一个模式便是提示行模式(译者注:也称下载模式)。在这种模式下,用户能通过命令行“命令”vivi做一些事情。

 

宿主机平台

一般地,工程师在一台功能强大的桌面电脑上开发软件,而不是直接在嵌入式主机上开发。这台桌面电脑就叫做宿主机平台。

 

目标板平台

目标板即是开发平台或者嵌入式机器。

 

2           编译vivi

本部分讲述怎样编译vivi

2.1          准备工作

以下是编译vivi所需的最少的软件需求。

l  GNU C2.95.3

l  GNU make3.79.1

l  Binutils2.11.2

 

您的宿主机上必须安装以下工具:

l  交叉编译器以及工具链

l  Baurne-Again shell. (/bin/bash)

l  ncurses

 

2.2          直接编译

vivi的编译(配置)环境与linux内核的配置环境类似。也就是说,您可以执行以下命令:make distcleanmake cleanmake oldconfigmake menuconfig,以及make config。一般的编译顺序如下:

1.    make distclean

2.    make menuconfig

3.    make

若您改动了配置,请一定要依次再运行make cleanmake。下两步讲述两个例子的编译。

 

2.3          具有NOR flashSA1110开发板上的移植

下面我们讲述vivi编译的一个例子。假定开发板内核模块组成如下:

l  CPUSA110处理器

l  ROM32MB Intel Flash32位)

l  RAM32M DRAM

这些特性对你很有意义。我见过的很多平台正是类似以上的设计好的内核模块。比如说,KINGSGILL 以及ENDA 的内核模块正是这样设计的。因此,你可以参考vivi/arch/def-configs/kings , vivi/arch/def-configs/gill, vivi/arch/def-configs/enda来编译你具体处理器对应的vivi

如果你想做基于KINGS上的vivi编译(假如在vivi/arch/def-configs已经有对应目标板的配置),只要像下面这样子就可以了:

 

# make kings

其他机器也是照这种方式编译。

 

2.4          具有NAND flashS3C2410开发板上的移植

这里,我们以基于S3C2410的机器为例讲述vivi的编译,比如SMDKSMDKSAMSUNG的一块基于S3C2410的开发板。其内核模块组成如下:

l  CPUS3C2410

l  ROM64MB SMCNAND FLASH

l  RAM64MB DRAM

 

SMDK的配置文件在vivi/arch/def-configs/smdk2410中,执行以下命令编译SMDK-2410

 

# make smdk2410

 

3           使用vivi

3.1          用户与vivi间的接口

vivi使用串口通讯做为与用户的接口。因此,位了连接vivi,您必须:

1)        使用串口线连接宿主机与目标板

2)        拥有某种串口通讯程序,如果minicom

3)        配置vivi时,使之支持异步串行通讯(UART

 

如果以上所有条件均满足,您就可以在屏幕上看到vivi的打印信息。以下信息正是从SMDK-2410的启动信息抓过来的。

 

VIVI version 0.1.4 (nandy@nandy.mizi.com) (gcc version 2.95.2 20000516 (release)

[Rebel.com]) #0.1.4 10 16 16:19:11 KST 2002

MMU table base address = 0x33DFC000

Succeed memory mapping.

NAND device: Manufacture ID: 0xec, Chip ID: 0x75 (Samsung KM29U256T)

Found saved vivi parameters.

Press Return to start the LINUX now, any other key for vivi

 

请看屏幕显示的信息的最后一行(正如我在1.1中提到的),vivi有两种模式:自启动模式以及提示行模式。vivi正等待用户键入。如果用户想进入提示行模式,则按其它键(除了 回车键 ),接着就可以看到以下提示行“vivi>”。否则,vivi在等待几秒钟或几分钟后尝试启动linux内核。

 

3.2          内嵌的用户命令

以下并非vivi的所有内嵌用户命令,但就我所知,这对于使用vivi已经足够了。

3.2.1     load命令

load命令烧写二进制文件到flash或者ram

用法:

 

load <存储介质> [<分区名> | <地址> <大小> ] <x|y|z>

<存储介质>

烧写二进制文件到什么存储介质。可选的有 flash 以及 ram

<分区名> 或者 <地址> <大小>

烧写二进制文件到什么地方。如果你想使用vivi预先定义的分区信息,只要使用分区名,否则必须指定地址及大小。

<x|y|z>

传输协议。非常抱歉,vivi目前仅支持xmodem传输协议。所以,仅支持x 值。

例如,你想烧写zImagelinux内核)到flash存储器。

vivi >load flash kernel x

或者你指定一个地址及其大小。

vivi >load flash 0x80000 0xc0000 x

 

3.2.2     part命令

vivi具有mtd分区信息表。这个分区表与mtd设备的实际mtd分区信息无关(译者注:此分区表是在/arch/S3C2410/smdk.c中由用户定义的,用来让vivi知道硬件的实际分区情况)。当烧写一个二进制文件,启动linux内核,擦写flash存储器等等时,vivi使用此分区信息表。

可用的命令有:

 

显示mtd分区信息:

vivi > part show

 

新建一个mtd分区:

vivi > part add <name> <offset> <size> <flag>

<name>

新建分区的名字

<offset>

新建的mtd分区的地址偏移量

<size>

新建的mtd分区的大小

<flag>

mtd分区的标志,目前支持的有: JFFS2, LOCKED, and BONFS

 

删除mtd分区

vivi > part del <partname>

 

复位mtd分区表到默认值

vivi > part reset

 

永久地保存参数或者mtd分区表到flash

vivi > part save

(译者注:若为执行此命令,则重启开发板后本次对vivi所作的更改将丢失,恢复到默认值。)

 

3.2.3     param命令

vivi具有一些参量值,比如:“boot_delay”参量决定了自启动模式下vivi等待键盘输入的时间。我感到很抱歉,因为这个特性仍在进行中。因此列出的参量可能都是vivi目前尚不支持的。当然,这里我可以给您“支”几招。

如果您想改变“linux 命令行”

vivi> param set linux_cmd_line "you wish.."

 

如果您想查看所有的参量

vivi> param show

 

如果你想在通过xmodem接收文件时多等会

vivi> param set xmodem_initial_timeout 3000000

 

如果您想一进行硬件复位就自动启动

vivi> param set boot_delay 100000

 

3.2.4     boot命令

此命令启动存储在flash或者ram存储器中的linux内核

用法:

boot <media_type> [ <partname> | <addr> <size> ]

<media_type>

存储linux内核镜像的存储介质。目前支持ramnor以及smc

[ <partname> ] 或者 [ <addr> <size> ]

存储linux内核镜像的地址。如果你想使用vivi预先定义的分区信息,只要使用分区名,否则必须指定地址及大小。

请注意,所有这些参数都是可选的,如果您直接执行boot,所有参数将从预先定义的“kernelmtd分区表信息中获取。例如:

vivi从“kernelmtd分区表中读取linux内核的二进制文件

vivi> boot

vivinor flash存储器读取linux内核二进制文件,偏移量是0x80000,大小是默认值(0xc0000)

vivi> boot nor 0x80000

偶尔地,您想在ram上测试内核(即是说,未把内核存储在flash中)。您可以在vivi上通过如下方式尝试:

在基于 SA-1110 的机器上:

vivi> load ram 0xc0008000 x

vivi> boot ram

在基于S3C2410的机器上:

vivi> load ram 0x30008000 x

vivi> boot ram

在基于PXA-240的机器上:

vivi> load ram 0xA0008000 x

vivi> boot ram

viviram启动linux内核。

 

3.2.5     flash命令

flash命令用来管理flash存储器。

如果您想擦除flash存储器

vivi> flash erase [ <partname> | <offset> <size> ]

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值