Vivi(Bootloader)源代码分析与移植 - 图文

2019-06-17 17:48

Bootloader(Vivi)源代码分析 ----基于S3C2410处理器

1

目 录

第一章 绪论 ........................................................................................................................................................ 3

1.1 Vivi简介 ................................................................................................................................................ 3 1.2 Vivi 源码树 ........................................................................................................................................... 4 1.3 Vivi 支持的主要功能 ........................................................................................................................... 5 第二章 Vivi源代码详细分析 ............................................................................................................................ 6

2.1 Vivi的启动流程 .................................................................................................................................... 6

2.1.1 第一阶段(Stage 1) ................................................................................................................ 6 2.1.2 第二阶段(Stage 2) ...............................................................................................................11 2.2 Vivi 的初始化 .................................................................................................................................. 14

2.2.1 设置异常向量 .......................................................................................................................... 14 2.2.2 初始化 ...................................................................................................................................... 15 2.2.3中断向量表 ............................................................................................................................... 24 2.2.4 关于vivi magic number ........................................................................................................... 27 2.2.5 实际完成的主要任务: ........................................................................................................ 28 2.3 stage 2:【init/main.c】................................................................................................................... 29

2.3.1 step1打印版本信息 ............................................................................................................... 29 2.3.2 step2初始化GPIO ................................................................................................................ 31 2.3.3 step3MMU初始化 ................................................................................................................. 32 2.3.4 step4 堆初始化...................................................................................................................... 32 2.3.5 step5 MTD设备初始化 ...................................................................................................... 35 2.3.6 step 6私有参数都放在预先规划的内存区域 ...................................................................... 43 2.3.7 step7调用add_command()函数,增加vivi作为终端时命令的相应处理函数 ................ 48 2.3.8 step8要么进入vivi的命令行交互界面,要么直接启动内核 ........................................... 50

第三章 U-boot 在S3C2410 上的移植分析 ................................................................................................... 52

3. 1 对ARM-920T内核的支持 ........................................................................................................... 52 3. 2 配置自己的开发板 ........................................................................................................................ 52 3. 3 实现网卡的驱动程序 .................................................................................................................... 54 3.4 从NAND Flash启动 .......................................................................................................................... 55

3.4.1 修改cpu/arm920t/start.s 添加NAND Flash启动跳转代码 ................................................. 55 3.4.2 添加从NAND Flash启动代码 ............................................................................................... 57 3.4.3 添加上述代码中引用的宏定义 .............................................................................................. 59 3. 5 修改Makefile 文件....................................................................................................................... 59 3.6 搭建编译环境 ..................................................................................................................................... 60 3. 7 生成目标文件并进行测试 ............................................................................................................ 61 3. 8 测试 ................................................................................................................................................ 63

2

第一章 绪论

1.1 Vivi简介

Vivi 来自韩国是由mizi 公司开发的bootloader, 适用于ARM9处理器,它是三星官方板SMDK2410采用的Bootloader,通过修改后可以支持S3C2440等处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这时vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用vivi提供的一些命令,见下表:

命令 功能 Load 把二进制文件载入Flash或RAM Part 操作MTD分区信息。显示、增加、删除、复位、保存MTD分区 Param 设置参数 Boot 启动系统 Flash 管理Flash,如删除Flash的数据 Vivi的主要特点就是代码小巧 ,有利于移植新的处理器。同时vivi的软件结构和配置方法类似linux

风格,对于有编译过linux内核经验的读者,vivi更容易上手

Vivi支持网卡,USB接口,LCD驱动,MTD,支持yaffs文件系统固化等功能。

3

1.2 Vivi 源码树

包括arch/drivers/include/init/lib/scripts/util等几个目录

|-arch ------------------- 此目录主要包含所有vivi支持的目标板的子目录 | |- s3c2410 ------------- s3c2410的支持代码 | |- def-configs --------- 硬件平台配置文件

|-drivers ----------------- 包括了引导内核需要的设备的驱动程序(MTD和串口) | |- mtd ----------------- MTD设备驱动程序 | |- serial -------------- 串口设备驱动程序

|-init -------------------- main.c文件和version.c文件 |-include ----------------- 头文件目录 |-lib --------------------- 公共接口代码 |-util -------------------- 工具的代码 |-scripts ----------------- 脚本文件

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定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。

4

1.3 Vivi 支持的主要功能

Vivi目前只支持使用串口和主机通信,所以必须使用一条串口电缆来连接目标板和主机。 他有如下作用:

? ? ? ?

把内核(kemel)从flash复制到RAM,然后启动它 初始化硬件

下载程序并写入flash(一般通过串口或者网口先把内核下载到RAM中,然后写入到Flash) 检测目标板(bootloader会有一些简单的代码用以测试目标板硬件的好坏)

5


Vivi(Bootloader)源代码分析与移植 - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:【恒心】【好卷速递】甘肃省张掖市2012届高三4月高考诊断试卷 文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: