vivi讲义

  • 格式:pdf
  • 大小:176.32 KB
  • 文档页数:16

1.1 vivi简介 vivi 是韩国Mizi 公司开发的BootLoader,适用于ARM9 处理器。vivi 有两种工作模式,启动加载模式可以在一段时间后(这个时间可更改)自行启动Linux 内核,这是vivi的默认模式。在下载模式下,vivi 为用户提供一个命令行接口,通过该接口可以使用vivi提供的一些命令。启动vivi时,在超级终端界面中键入任意键(除enter外)进入vivi命令界面,字符提示为“vivi>”,在启动vivi前按住空格不放,因为有些vivi启动比较快。 ---------------------------------------------------------------------- reset 命令 复位Arm9系统 ---------------------------------------------------------------------- help 命令 • help 显示开发板上vivi支持的所有命令 • param help 显示param命令的用法 ---------------------------------------------------------------------- part 命令 part 命令用于对分区进行操作。通过part help 可以显示系统对part 系列命令的帮助提示。 • part show 显示分区信息 • part add partname part_start_addr part_leng flag 添加分区,参数flag为分区类型 • part del partname 删除分区 • part save 保存part 分区信息 • part reset 恢复为系统默认part分区 ---------------------------------------------------------------------- load 命令 load 命令下载程序到存储器中(Flash 或者RAM 中)。通过load help可以显示系统对load 系列命令的帮助提示。 • load flash partname x 使用xmodom 协议通过串口下载文件并且烧写带partname 分区 例: -load flash vivi x //注意,这里的vivi是分区名 -load flash kernel x -load flash root x • load ram partname or addr x 使用xmodom 协议通过串口下载文件到内存中 ---------------------------------------------------------------------- param命令 param 命令用于对bootloader 的参数进行操作。通过param help 可以 显示系统对param 系列命令的帮助提示。 • param show 命令用于显示bootloader 的当前参数值。 • param reset 将bootloader 参数值复位成系统默认值。 • param set paramname value 设置参数值 • param set linux_cmd_line ”linux bootparam” 设置linux 启动参数,参数linux bootparam 表示要设置的linux kernel 命令行参数。 • param save 保存参数设置 ---------------------------------------------------------------------- boot命令 boot 命令用于引导linux kernel 启动。通过boot help 可以显示系统对boot命令的帮助提示。 • boot 默认方式启动 • boot ram ramaddr lenth 启动sdram 中ramaddr处长度为lenth的linux 内核。 ---------------------------------------------------------------------- bon 命令 bon 命令用于对bon分区进行操作。通过bon help 可以显示系统对bon 系列命令的帮助提示。bon分区是nand flash 设备的一种简单的分区管理方式。 • bon part info 命令用于显示系统中bon分区的信息。 • bon part 命令用于建立系统的bon分区表。bon分区表被保存到nand flash 的最后0x4000 个字节中,即在nand flash的0x03FFC000 ~0x33FFFFFF 范围内,分区表起始于0x03FFC000。 例如分为3个区:0~192k,192k~1M,1M~ vivi> bon part 0 192k 1M doing partition size = 0 size = 196608 size = 1048576 check bad block part = 0 end = 196608 ---------------------------------------------------------------------- go 命令 go 命令用于跳转到指定地址处执行该地址处的代码。 • go addr 跳转到指定地址运行该处程序。

以上是整理的一些常用的vivi命令,具体语法可通过相应的help命令查看。

1.2 vivi的配置与编译 1.2.1 建立交叉开发环境 1、在宿主机上安装标准Linux 操作系统:Redhat 9.0 。 2、宿主机上安装交叉编译器。 使用交叉编译器为arm-linux-gcc-2.95.3(源码为cross-2.95.3.tar.bz2)。 先以root 用户的身份登陆到linux 下。 进入/usr/local 目录,创建名为arm的目录: cd /usr/local mkdir arm 将光盘提供的cross-2.95.3.tar.bz2解压到/usr/local/arm目录: tar jxvf cross-2.95.3.tar.bz2 –C /usr/local/arm

然后修改修改PATH 变量:为了可以方便使用arm-linux-gcc编译器系统, 把arm-linux工具链目录加入到环境变量PATH中。 设置环境变量后,最好是重启或注销一下,这样设置的环境变量才能生效。

1.2.2 配置和编译vivi 如果vivi的源代码已根据开发板作了相应改动,则需要对源代码进行配置和编译,以生成烧入flash的vivi 二进制映象文件。 由于vivi要用到kernel的一些头文件,所以需要kernel的源代码,所以先要把linux的kernel准备好。将vivi和kernel都解到相应目录下 然后需修改/vivi/Makefile里的一些变量设置: ¾ LINUX_INCLUDE_DIR = /kernel/include/ (LINUX_INCLUDE_DIR 为kernel/include的对应目录/) ¾ CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux- (CROSS_COMPILE 为arm-linux安装的相应目录) ARM_GCC_LIBS = /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3 (需根据你arm-linux的安装目录修改)

进入/vivi目录执行make distclean。(目的是确保编译的有效性,在编译之前将vivi里所有的“*.o”和“*.o.flag”文件删掉) 进入/vivi目录里,输入“make menuconfig”,开始选择配置。可以Load一个写好的配置文件也可以自己修改试试。注意Exit时一定要选“Yes”保存配置。 再输入“make”正式开始编译,一会儿就完了。如果不报错,在/vivi里面就有你自己的“vivi”了。这个就是后面要烧写到flash中的bootloader。 1.3 vivi代码结构分析 vivi的代码包括arch,init,lib,drivers和include等几个目录,共200多条文件。 Vivi主要包括下面几个目录: arch:此目录包括了所有vivi支持的目标板的子目录,例如s3c2410目录。 drivers:其中包括了引导内核需要的设备的驱动程序(MTD和串口)。MTD目录下分map、nand和nor三个目录。 init:这个目录只有main.c和version.c两个文件。和普通的C程序一样,vivi将从main函数开始执行。 lib:一些平台公共的接口代码,比如time.c里的udelay()和mdelay()。 include:头文件的公共目录,其中的s3c2410.h定义了这块处理器的一些寄存器。Platform/smdk2410.h定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。

1.4 vivi的运行 vivi的运行也可以分为两个阶段: 1.4.1 vivi的第一阶段 完成含依赖于CPU的体系结构硬件初始化的代码,包括禁止中断、初始化串口、复制自身到RAM等。相关代码集中在head.S(\vivi\arch\s3c2410目录下): Head.S:

#include "config.h" #include "linkage.h"