嵌入式linux系统的构建.docx

上传人:b****6 文档编号:3974206 上传时间:2022-11-26 格式:DOCX 页数:10 大小:218.50KB
下载 相关 举报
嵌入式linux系统的构建.docx_第1页
第1页 / 共10页
嵌入式linux系统的构建.docx_第2页
第2页 / 共10页
嵌入式linux系统的构建.docx_第3页
第3页 / 共10页
嵌入式linux系统的构建.docx_第4页
第4页 / 共10页
嵌入式linux系统的构建.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

嵌入式linux系统的构建.docx

《嵌入式linux系统的构建.docx》由会员分享,可在线阅读,更多相关《嵌入式linux系统的构建.docx(10页珍藏版)》请在冰豆网上搜索。

嵌入式linux系统的构建.docx

嵌入式linux系统的构建

Linux

 

姓名:

郝春玲

学号:

541013090210

专业:

嵌入式

班级:

10级-02班

院系:

计算机与通信工程学院

嵌入式Linux系统构建

嵌入式Linux系统的构建可分为:

Bootloader、内核、文件系统等内容。

其中我们可以有下图(a)嵌入式Linux系统中的典型分区结构做一更清楚的认识:

BootloaderRootfilesystem

Kernel

Bootparameters

图(a)

下面对嵌入式Linux系统的几个主要部分做一下详细的介绍:

1:

Bootloader

U-Boot,全称为UniversaiBootLoader,即通用Bootloader,是遵循GPL条款的开发源代码项目。

简单的说,BootLoader就是在操作系统运行之前的运行的一段小程序。

通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。

BootLoader的实现非常依赖于具体硬件,在嵌入式系统中硬件配置千差万别,即使是相同的CPU,它的外设也可能不同,所以不可能有一个BootLoader支持所有的CPU、所有的电路板。

即使是支持CPU架构比较多的U-Boot,也不是一拿来就可以使用的,需要进行一些移植。

在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务完全由BootLoader来完成。

(1)Bootloader可以分为两种操作模式:

启动加载模式和下载模式。

1>启动加载模式:

启动模式上电后,BootLoader从板上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。

2>下载模式:

在下载模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机下载文件,将它们直接放在内存运行或是烧入Flash类固态存储设备中。

(2)Bootloader的启动过程可以分为单阶段,多阶段两种。

这两阶段完成的功能如下所示:

Bootloader第一阶段的功能:

1>硬件设备初始化;

2>为加载Bootloader的第二阶段代码准备RAM空间;

3>复制Bootloader的第二阶段代码到RAM空间中;

4>设置好栈;

5>跳转到第二阶段代码的C入口点;

Bootloader第二阶段的功能:

1>初始化本阶段要使用到的硬件设备;

2>检测系统内存映射;(检测内存映射,就是确定板上使用了多少内容、它们的地址空间是什么。

3>将内核映像和根文件系统映像上读到RAM空间中;

4>为内核设置启动参数;

5>调用内核;(不过在调用内核之前,需要满足下列条件:

CPU寄存器的设置;CPU工作模式;Cache和MMU的设置)

注:

通常多阶段的Bootloader能提供更为复杂的功能以及更好的可移植性,从固态存储设备上启动的Bootloader大多都是两阶段的启动过程。

(3)Bootloader与内核的交互

Bootloader与内核的交互是单向的,Bootloader将各类参数传给内核。

由于它们不能同时运行,传递办法只有一个:

Bootloader将参数放在某个约定的地方之后,再启动内核,内核启动后从这个地方获取参数。

(4)U-Boot的配置、编译、连接过程

根据顶层Readme文件的说明,可以知道如果要使用开发板board/,就先执行“make_config”命令进行配置,然后执行“makeall”,就可以生成如下3个文件:

1>U-Boot.bin:

二进制可执行文件,它就是可以直接烧入ROM、NORFlash的文件。

2>U-Boot:

ELF格式的可执行文件。

3>U-Boot.srec:

MotorolaS-Record格式的可执行文件。

(5)U-Boot的启动过程源码分析

1)U-Boot第一阶段代码分析

1>硬件设备初始化。

2>为加载Bootloader的第二阶段代码准备RAM空间。

3>复制Bbootloader的第二阶段代码到RAM空间中。

4>设置好栈。

5>跳转到第二阶段代码的C入口点。

2)U-Boot第二阶段代码分析

1>初始化本阶段要使用到的硬件设备。

2>检测系统内存映射。

3>U-Boot命令的格式

4>为内核设置启动参数。

注:

移植U-Boot的主要工作在于对硬件的初始化、驱动,所以重点应放在硬件的操作上。

(6)U-Boot的移植

1>BANK0外接容量为1MB,位宽为8的NORFlash芯片AM29LV800.

2>BANK3外接10M网卡芯片CS8900,位宽为16.

3>BANK6外接两片容量为32MB、位宽为16的SDRAM芯片K4S561632,组成容量为64MB、位宽位32的内存。

4>通过NANDFlash控制器外接容量为64MB,位宽位8的NANDFlash芯片K9S1208.(7)使用U-Boot来执行程序

但如果使用U-Boot来烧写NANDFlash,效率会高很多。

烧写二进制文件到NANDFlash中所使用的命令与烧写内核映像文件ulmagede过程类似,只是不需要将二进制文件制作成U-Boot格式。

2:

内核

Linux内核的版本号可以从源代码的顶层目录下的Makefile中查到,在此主要了解内核的结构,LinuxMakefile分析和根文件系统的一些基础概念:

(1)内核的结构:

Linux内核文件数目将近2万,除去其他构架CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件有1万多个。

这些文件组织结构并不复杂,他们分别位于顶层目录下的17个子目录,各个目录功能独立;

(2)LinuxMakefile分析:

makefilede可以决定编译那些文件、怎样编译文件、怎样连接文件;

(3)根文件系统:

嵌入式Linux中都需要构建根文件系统,构建根文件系统的规则在FHS(FilesystemHierarchyStandard)文档中。

Linux的根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序,一般说来根目录"/"下的顶层目录都有一些比较固定命名和用途。

  下表出了一个Linux根文件系统中的比较常见的目录结构:

3:

根文件系统的制作

(1)进入到/opt/studyarm目录,新建建立根文件系统目录的脚本文create_rootfs_bash,使用命令chmod+xcreate_rootfs_bash改变文件的可执行限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。

create_rootfs_bash的内容如下:

#!

/bin/sh

echo"------Createrootfsdirectonsstart...--------"

mkdirrootfs

cdrootfs

echo"--------Createroot,dev....----------"

mkdirrootdevetcboottmpvarsysproclibmnthome

mkdiretc/init.detc/rc.detc/sysconfig

mkdirusr/sbinusr/binusr/libusr/modules

echo"makenodeindev/consoledev/null"

mknod-m600dev/consolec51

mknod-m600dev/nullc13

mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/temp

mkdirvar/libvar/lockvar/runvar/tmp

chmod1777tmp

chmod1777var/tmp

echo"-------makedirectiondone---------"

(2)建立动态链接库:

动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。

(3)修改busybox目录下的Makefile文件

CROSS_COMPILE?

=arm-linux-//第164行

ARCH?

=arm//第189

输入makemenuconfig行编译界面如下:

关于它的busybox的配置我们可以使用如下的配置

(1)、BusyboxSettings--->

GeneralConfiguration--->

[*]Showverboseappletusagemessages

[*]Storeappletusagemessagesincompressedform

[*]Support–install[-s]toinstallappletlinksatruntime

[*]Enablelocalesupport(systemneedslocaleforthistowork)

[*]Supportfor–long-options

[*]Usethedevptsfilesystemforunix98PTYs

[*]Supportwritingpidfiles

[*]RuntimeSUID/SGIDconfigurationvia/etc/busybox.config

[*]Suppresswarningmessageif/etc/busybox.confisnotreadable

BuildOptions--->

[*]BuildBusyBoxasastaticbinary(nosharedlibs)

[*]BuildwithLargeFileSupport(foraccessingfiles>2GB)

InstallationOptions->

[]Don’tuse/usr

Appletslinks(assoft-links)--->

(./_install)BusyBoxinstallationprefix

BusyboxLibraryTuning--->

(6)Minimumpasswordlegth

(2)MD5:

TradeBytesforSpeed

[*]Fsater/procscanningcode(+100bytes)

[*]Commandlineediting

(1024)Maximumlengthofinput

[*]vi-stylelineeditingcommands

(15)Historysize

[*]Historysaving

[*]Tabcompletion

[*]Fancyshellprompts

(4)Copybuffersize,inkilobytes

[*]Useioctlnamesratherthanhexvaluesinerrormessages

[*]SupportinfinibandHW

(2)、LinuxModuleUtilities--->

(/lib/modules)Defaultdirectorycontainingmodules

(modules.dep)Defaultnameofmodules.dep

[*]insmod

[*]rmmod

[*]lsmod

[*]modprobe

-----optionscommontomultiplemodutils

[]supportversion2.2/2.4Linuxkernels

[*]Supporttaintedmodulecheckingwithnewkernels

[*]Supportformodule.aliasesfile

[*]supportformodules.symbolsfile

(4)建立etc目录下的配置文件

a、etc/mdev.conf文件,内容为空。

b、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。

c、etc/sysconfig目录下新建文件HOSTNAME,内容为”H3-Studio”。

d、etc/inittab文件:

#etc/inittab

:

:

sysinit:

/etc/init.d/rcS

s3c2410_serial0:

:

askfirst:

-/bin/sh

:

:

ctrlaltdel:

/sbin/reboot

:

:

shutdown:

/bin/umount-a–r

e、etc/init.d/rcS文件:

#!

/bin/sh

PATH=/sbin:

/bin:

/usr/sbin:

/usr/bin

runlevel=S

prevlevel=N

umask022

exportPATHrunlevelprevlevel

echo"----------muntall----------------"

mount-a

echo/sbin/mdev>/proc/sys/kernel/hotplug

mdev-s

echo"***********************************************"

echo"****************StudyingARM*********************"

echo"Kernelversion:

linux-2.6.29.1"

echo"Student:

Huanghuahai"

echo"Date:

2009.10.1"

echo"***********************************************"

/bin/hostname-F/etc/sysconfig/HOSTNAME

Chmod+xrcS

f、etc/fstab文件:

#devicemount-pointtypeoptiondumpfsckorder

proc/procprocdefaults00

none/tmpramfsdefaults00

sysfs/syssysfsdefaults00

mdev/devramfsdefaults00

g、etc/profile文件:

#Ashprofile

#vim:

syntax=sh

#Nocorefilebydefaults

#ulimit-S-c0>/dev/null2>&1

USER="id-un"

LOGNAME=$USER

PS1='[\u@\h=W]#'

PATH=$PATH

HOSTNAME='/bin/hostname'

exportUSERLOGNAMEPS1PATH

(5)使用以下命令安装好yaffs文件系统制作工具:

tar–zxvfmkyaffs2image.tgz–C/

在/opt/studyarm目录下,使用命令mkyaffs2imagerootfsrootfs.img生成根文件系统映像文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1