bate2000的个人空间 https://blog.eetop.cn/bate [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

VOD视频点播系统(二)

已有 4284 次阅读| 2008-3-25 21:57 |个人分类:VOD

2.2 开发板端软件构成

2.2.1 bootloader

   采用u-boot作为系统的bootloader,

layout-grid-align: none" align=left>u-boot是德国DENX小组的开发用于多种嵌入式cpubootloader程序, u-boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。u-boot除了支持PowerPC系列的处理器外,还能支持mipsx86armNIOSXScale等诸多常用系列的处理器。

     

u-boot的启动过程

1 启动流程

我们一般把bootloader都分为阶段1(stage1)和阶段2(stage2)两大部分,依赖于CPU体系结构的代码(如CPU初始化代码等)通常都放在阶段1中且通常用汇编语言实现,而阶段2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。

 

1 阶段1,汇编代码,对于s3c2410cpu/arm920t/start.s文件

主要流程如下:

设置CPU的模式为SVC模式

关闭看门狗

禁掉所有中断

设置以CPU的频率

把自己拷贝到RAM

配置内存区控制寄存器

配置的栈空间

进入C代码部分

 

2 阶段2C语言代码,在lib_arm/board.c中的start_armbootC语言开始的函数,也是整个启动代码中C语言的主函数。这个函数调用一系列的初始化函数,然后进入主UBOOT命令行,进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

当用户输入启动linux的命令的时候,u-boot会将 kernel 映像(zImage)和从 nand flash 上读到 RAM 空间中,为内核设置启动参数,调用内核,从而启动linux

 

U-BOOT常用命令介绍

printenv   打印环境变量

 

setenv     设置环境变量

  如:setenv ipaddr 172.22.60.44

      Setenv serverip 172.22.60.88

 

saveenv        保存设定的环境变量

我们经常要设置的环境变量有ipaddr,serveripbootcmdbootargs

tftp       即将内核镜像文件从PC中下载到SDRAM的指定地址,然后通过bootm来引导内核,前提是所用PC要安装设置tftp服务。

  : tftp 30008000 zImage

 

nand erase 擦除nand flash中数据块

如:nand erase 0x40000 0x1c0000

               起始地址  大小

nand write RAM中的数据写到Nand Flash

如:nand write 0x30008000 0x40000 0x1c0000

 

nand read   nand flash中读取数据到RAM

如:nand read 0x30008000 0x40000 0x1c0000

 

go          直接跳转到可执行文件的入口地址,执行可执行文件。

 

 

 

下载并烧写内核如下

1 用网线连接开发板和PC

 

2 启动U-BOOT并设置环境变量

setenv ipaddr 172.22.60.32  //设置开发板的IP

setenv serverip 172.22.60.99  //设置PC机的IP

setenv ethaddr 11.22.33.44.55.66 //设置开发板的物理地址

saveenv  //保存

 

3 PC机端打开TFTP服务器,并且把要下载的文件拷贝到tftp服务器程序所在的目录下

 

4 下载和烧写

u-boot下用以下命令

    tftp 30008000 zImage

nand erase 40000 1c0000

nand write 30008000 40000 1c0000

 

2.2.2 linux内核

   

linux 2.6内核的移植实验
概述
对于嵌入式linux系统来说,有各种体系结构的处理器和硬件平台,用户根据自己的需要定制的硬件平台,只要是硬件平台有一点点变化,就需要做一些移植工作,linux内核移植是嵌入式linux系统中最常见的一项工作。
由于linux内核具备可移植性的特点,并且已经支持了很多种目标板,这样,用户很容易从中找到跟自己硬件平台类似的目标板,参考内核已经支持的目标板来进行移植工作。
linux-2.6内核已经支持S3C2410处理器的多种硬件板,我们可以参考SMDK2410参考板来移植开发板的内核。
 
实验步骤:
1)准备工作
2)修改顶层Makefile
3)添加分区
4)添加devfs
5)配置编译内核
 
一、准备工作
建立工作目录,下载源码,安装交叉工具链,步骤如下。
mkdir /root/build_kernel
cd /root/build_kernel
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux2.6.14.1.tar.bz2
tar jxvf linux2.6.14.1.tar.bz2
export PATH=/usr/local/arm/3.3.2/bin:$PATH
 
二、修改顶层Makefile
修改内核目录树根下的的Makefile,指明体系结构是arm,交叉编译工具是arm-linux-
vi Makefile
找到ARCHCROSS_COMPILE,修改
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
保存退出。
 
三、设置flash分区
此处一共要修改3个文件,分别是:
arch/arm/mach-s3c2410/devs.c       ;指明分区信息
arch/arm/mach-s3c2410/mach-smdk2410.c  ;指定启动时初始化
drivers/mtd/nand/s3c2410.c  ;禁止Flash ECC校验
 
3.1指明分区信息
arch/arm/mach-s3c2410/devs.c文件中:
vi arch/arm/mach-s3c2410/devs.c
arch/arm/mach-s3c2410/devs.c文件添加的内容包括:
1)添加包含头文件。
2)建立nand flash分区表。
3)假如分区信息
4)建立Nand Flash芯片支持
5)加入Nand Flash芯片支持到Nand Flash驱动
 
1)添加包含头文件。
#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>
...
VOD视频点播系统(三)

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 104

    访问数
关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 08:24 , Processed in 0.015417 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部