当前位置:论文写作 > 毕业论文范文 > 文章内容

基于S3C2440的VIVIh()()tl()a(lcr扩展命令基本方法

主题:mysql初始化命令 下载地址:论文doc下载 原创作者:原创作者未知 评分:9.0分 更新时间: 2024-01-27

简介:关于本文可作为命令初始化方面的大学硕士与本科毕业论文命令初始化论文开题报告范文和职称论文论文写作参考文献下载。

命令初始化论文范文

mysql初始化命令论文

目录

  1. 1.)bootloader 作用简介
  2. 2.)几种常见的bootloader
  3. 1.)关闭看门狗,关闭所有中断;
  4. 2.)初始化系统时钟,配置内存控制器;
  5. 3.)点亮LED灯;可以根据板级硬件配置设定,不是必须的;
  6. 6.)设置堆栈并跳转到RAM,开始执行main.
  7. 2.)板级的初始化,主要完成两个功能,时钟初始化和I/O的设置.
  8. 4.)初始化heap,heap_init()函数在SDRAM中指定了一块1MB大小的内存作为heap.
  9. 2.2 用户论文范文命令添加
  10. 1.)使用user_command_t 结构体来定义一个命令
  11. 3. 结束语
  12. mysql初始化命令:第02话 蜜柑初始化了

陈景郁1 朱洪雷2

(1.广东 广州 510663;2.广州番禺职业技术学院 广东 广州 511483)

【摘 要】VIVI是一款轻量级的bootloader程序,性能稳定,扩展方便.对S3C24X0系列的ARM9处理器作了优化,一直S3C2440上得到广泛的应用.本文介绍了VIVI的启动流程和基本功能配置,以及如何在VIVI的中扩展命令.使用VIVI提供的命令注册函数和注册流程,论文范文用户的命令,增强VIVI bootloader的功能.

【关键词】VIVI;Bootloader;S3C2440;命令扩展

【Abstract】VIVI is a light bootloader which is performance sable and expansion easily. It makes some special optimize for S3C24X0, ARM9 processor, and widely use in S3C2440 bootloader. This paper introduces that VIVI boot up process and basic function provided in prompt mode. And VIVI also provide basic register function for customer to add external command. It can make some customized for more powerful bootloader.

【Key words】VIVI;Bootloader;S3C2440;Command Extend

0 引言

VIVI 是由韩国MIZI公司开发的一款开源bootloader程序.虽然MIZI公司已经停止了VIVI版本的更新,但目前很多S3C2410、S3C2440等处理器一直使用VIVI作为bootloader程序(或基于VIVI的衍生).对于S3C2410、S3C2440等系列的处理器,VIVI有较好的稳定性和扩展性.这里我们基于S3C2440处理器平台,介绍一下VIVI的使用和命令扩展方法.

1.)bootloader 作用简介

bootloader 是嵌入式系统在引导操作系统内核或用户应用程序之前运行的一段程序.主要完成芯片上电到系统引导前的一系列初始化功能,和提供一些辅助功能.

由于嵌入式操作系统越来越复杂,操作系统和处理器也呈现多样化的发展趋势.嵌入式操作系统很难实现对所有处理器的上电初始化的适用,而且随着处理器的集成度越来越高,系统引导的工作差异也越来越大.

bootloader的主要功能可以归纳为以下几点[1]:

(1)初始化存储器,包括操作系统启动是使用到的ROM和RAM;

(2)处理器芯片类型的检测,并最终将此参数交给操作系统;操作系统内核会识别处理器架构等,并作特殊化处理;

(3)初始化必要的外设,不同系统有不同需求,但最好至少留一个通信串口作调试;

(4)加载操作系统内核.

2.)几种常见的bootloader

比较常见的几种开源bootloader有:U-Boot、RedBoot和VIVI.

U-Boot(Universal Bootloader)是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序.U-Boot也是在GPL下资源代码最完整的一个通用Boot Loader,平均3个月会更新一个版本.

RedBoot是Redhat公司随eCos发布的一个bootloader方案,是一个开源项目.它是在eCos的基础上剥离出来的,继承了eCos的简洁、轻巧、可灵活配置和稳定可靠等品质优点.支持多种架构处理器,是一个完善的嵌入式系统Boot Loader.

VIVI是韩国MIZI公司开发的一款bootloader.它是一款轻量级bootloader,代码量小,功能强大,运行效率高.VIVI专门针对三星S3C2410、S3C2440等ARM9系列处理器进行优化处理,至今仍然广泛应用在S3C24X0系统中,用以引导嵌入式Linux的启动.

2 VIVI介绍

下面以0.1.4版本的代码为例介绍VIVI的启动流程.

2.1 VIVI启动流程

VIVI在启动过程中分为2种模式,分别是autoboot mode和prompt mode.

autoboot mode:该模式是VIVI的默认模式;VIVI初始化之后,经过一段延时,没有任何动作情况下,将自动引导Linux kernel完成启动任务.延时是可以设置的,通过boot_delay属性可以设置.

prompt mode:这是VIVI提供的命令行模式;VIVI初始化之后,在延时之内,检测到有输入,VIVI将进入此模式.命令行模式等待客户输入命令,可以对系统进行下载、设置和查看等基本操作.后面再详细介绍如何订制客户自己的功能命令.

2.2 初始化及Linux的跳转

mysql初始化命令:第02话 蜜柑初始化了

VIVI的初始化主要集中在2个文件head.s和main.c,也就是通常说的bootloader的两个阶段.第一阶段,主要是CPU体系结构相关的初始化;第二阶段,一般是对硬件板级的初始化但这个分类并不绝对.

以S3C2440为例,head.s中的初始化顺序分为了几个步骤[2]:

1.)关闭看门狗,关闭所有中断;

2.)初始化系统时钟,配置内存控制器;

3.)点亮LED灯;可以根据板级硬件配置设定,不是必须的;

4)初始化UART,也是根据板级硬件而配置,VIVI的prompt mode 和linux kernel启动都需要使用UART;

5)如果板级上是Nand flash,则将VIVI代码复制到RAM中,之后VIVI将在SDRAM中运行;如果是Nor flash,则直接跳转到main,VIVI的复制将在main初始化中完成;

6.)设置堆栈并跳转到RAM,开始执行main.

进入main之后,将执行板级硬件初始化,VIVI将这个过程分为8个步骤[3]:

1)打印版本信息,检查重启的原因,是软件重启还是硬件重启.软件重启处理只是一个空函数,VIVI留给客户自行添加调试代码;若硬件重启则会将对内存进行初始化.

2.)板级的初始化,主要完成两个功能,时钟初始化和I/O的设置.

3)建立页表和启动 MMU.区分memory是Nand flash还是NOR flash;若Nor flash则先复制VIVI到RAM,再进行映射.然后还要对最前面1M地址进行重映射;最后通过一段C内嵌汇编代码完成MMU的启动.

4.)初始化heap,heap_init()函数在SDRAM中指定了一块1MB大小的内存作为heap.

5)MTD 初始化(MTD,Memory Technology Device).VIVI的MTD模块剪裁了Linux下的MTD框架,支持Nor flash 和Nand flash 等存储设备.源代码中已集成了基本的Nor flash和Nand flash的MTD初始化代码.这里以Nand flash为例,使用论文范文c_init()进行初始化.

6)读取bootloader中的默认设置参数,包括后面运行所需的VIVI基本设置、Linux启动命令和MTD的分区信息.

7)到这一步VIVI基本初始化完毕,接下来是一些VIVI内置命令的注册和初始化;用户也可以在此处增加个性化订制,例如扩展VIVI的命令.

8)选择启动模式,autoboot mode或者prompt mode,完成bootloader的启动.

2 VIVI命令扩展

在prompt mode下,VIVI已提供多个常用命令,在系统没有运行起来的情况下,也能在板上进行一些简单的操作,例如:下载、分区和系统基本信息的获取等.

2.1 VIVI内置支持的命令

在prompt模式下,VIVI为用户提供一些基本的命令,见表1.

2.2 用户论文范文命令添加

用户可以根据需求,扩展prompt mode下的命令,使bootloader有更强大的功能.只要按照VIVI内置命令的注册过程,就可以添加论文范文自己的命令了[4].

1.)使用user_command_t 结构体来定义一个命令

typedef struct user_command {

const char *name, //命令匹配字

void (*cmdfunc)(int argc, const char **), //命令入口以参数

struct user_command *next_cmd, //命令链表指针

const char *helpstr, //命令帮助信息

} user_command_t,

实现一个命令入口函数command_mycmd(),并如下定义一条命令mycmd结构体:

user_command_t my_cmd 等于 {

"mycmd",

command_mycmd,

NULL,

"mycmd help \t\t\t --just for test"

},

2)使用add_command(&,my_cmd)在VIVI初始化的时候注册mycmd.my_cmd会添加到head_cmd链表中.next_cmd就是这个单向链表的next指针,会指向下一个注册的命令.

3)execcmd()函数是在prompt mode模式下运行命令时首先会执行的函数.execcmd()从head_cmd链表中,通过匹配name成员,找到对应的命令,执行命令入口command_mycmd,参数也随之传入到command_mycmd()中.

2.3 命令参数解释及子命令

cmdfunc(argc, ar论文范文)中,argc表示的是参数个数,ar论文范文是命令行参数.command_mycmd(int argc, const char **ar论文范文)可以根据不同的需求自行解释参数;

VIVI也是支持复杂命令的解释的,除了主命令外,可以添加子命令的处理.主命令的第一个参数作为子命令,子命令的结构体定义如下:

typedef struct user_subcommand {

const char *name,

void (*cmdfunc)(int argc, const char **),

const char *helpstr,

} user_subcommand_t,

和主命令相比,少了链表指针成员next_cmd.子命令通过execsubcmd()函数运行.

void execsubcmd(user_subcommand_t *cmds, int argc, const char **ar论文范文);

子命令仅匹配主命令下cmds的关键字,所以不需要链表指针,也不会发生与其它命令冲突的现象.当然子命令cmdfunc中的参数个数会减1,参数也会从子命令后开始计算.

3. 结束语

VIVI是一个比较轻量级别的Bootloader,是为S3C24X0系列的Linux启动而设计的.它具有良好的扩展性,和稳定性.在S3C24X0平台上仍然被继续使用,用户可以根据需求,扩展其功能,不断增强其性能.

【参考文献】

[1]ARM Linux Kernel Boot Requirements http://www.arm.linux.org.uk/developer/booting.php

[2]郑利华,穆振海.VIVI的汇编代码解读[J].桂林航天工业高等专科学校学报,2009(3).

[3]朴海光.基于S3C2410系统的VIVI引导程序分析[J].信息技术.

[4]王天军,林夕伟.VIVI命令机制及其扩展[J].浙江教育学院学报,2007(5).

[责任编辑:王静]

总结:本论文可用于命令初始化论文范文参考下载,命令初始化相关论文写作参考研究。

mysql初始化命令引用文献:

[1] 初中小班化教学论文题目集 初中小班化教学毕业论文题目如何定
[2] 优秀电算会计化论文选题 电算会计化论文题目选什么比较好
[3] 会计点算化方面论文选题 会计点算化论文题目哪个好
《基于S3C2440的VIVIh()()tl()a(lcr扩展命令基本方法》word下载【免费】
mysql初始化命令相关论文范文资料