嵌入式实习报告_第1页
嵌入式实习报告_第2页
嵌入式实习报告_第3页
嵌入式实习报告_第4页
嵌入式实习报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统实习汇报学院:计算机与信息学院专业:电子信息工程班级:1111学号:111123姓名:王金民指导老师:严朝军彭文标嵌入式系统开发与应用概述在今日,嵌入式ARM技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM的影子。假如你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业详细应用等突出特性,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。嵌入式的广泛应用可以说是无所不在。linux系统linux系统重要是由顾客空间和内核空间再加上外部的硬件平台构成,顾客空间就是顾客应用程序的运行空间,重要包括两方面的内容:顾客应用程序和GNU

C

Library(glibc)。而内核空间有三方面的内容,一是系统调用接口,它作为顾客空间和内核空间互相转移的一种方式,二是内核空间,三是体系有关内核代码,在linux内核代码中,可以看到arch目录下有许多子目录,其中每一种子目录代表一种硬件平台。

而为何要把linux系统划分为顾客空间和内核空间呢?重要是一旦顾客空间和内核空间没有分开,那顾客将拥有很大的权限去操控内核或顾客应用程序的瓦解将会导致系统的瓦解,而linux系统是运用cpu的模式分级来分别运行顾客空间和内核空间,这样就可以使操作系统得到充足的保护。而现代的cpu一般实现了不一样的工作模式,以ARM处理器为例实现了7种运行模式,分别为:1)顾客模式(usr):ARM微处理器正常程序执行模式2)系统模式(sys):运行具有特权的操作系统任务3)中断模式(irq):用于通用的中断处理4)外部中断模式(fiq):用于高速数据传播或通道处理5)数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护6)管理模式(svc):操作系统使用的保护模式7)未定义指令中断模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真ARM微处理器的运行模式可以通过软件变化,也可以通过外部中断或异常处理变化,除顾客模式外,其他模式都是非顾客模式或特权模式,除顾客模式和系统模式外,其他模式都是异常模式,常用于处理异常或中断,以及需要访问受保护的系统资源等状况。同步顾客空间和内核空间是程序执行的两种不一样状态,通过系统调用和硬件中断去实现顾客空间到内核空间的转移,系统调用是积极的,硬件中断是被动的,例如键盘按下或者串口中断。接下来说说linux的内核架构,它重要是包括7大构成部分1.内存管理

内存管理的重要作用是使多种进程能安全高效的共享内存区域,一般使用如下两个手段:①内存映射:将物理内存映射到虚拟内存中,变有限为无限②有效管理:使用多种内存管理算法(如伙伴算法),减少内存挥霍2.虚拟文献系统

vfs隐藏了多种文献系统的详细细节,为文献操作提供统一的接口3.网络协议栈

它为linux提供了完善丰富的网络协议实现4.进程管理

进程管理的重点是创立进程、停止进程,并控制它们之间的通信。进程管理还包括控制活动进程怎样共享cpu,即进程调度。5.设备驱动

设备驱动也是内核的一部分,它不一样于内核的其他部件,并且独立于内核的其他部件,同步它是与设备交互的唯一模块,一般由第三方厂商开发,一种驱动程序不与其他驱动程序交互;内核与驱动程序之间也仅通过一种严格定义的接口交互。6.系统调用接口

SCI层为顾客空间提供了一套原则的系统调用函数来访问Linux内核,搭起了顾客空间到内核空间的桥梁。7.体系有关部分

Linux内核源代码采用树形构造进行组织,非常合理地把功能有关的文献都放在同一种子目录下,使得程序更具可读性。下面简介下这些目录的构成arch目录arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下均有对应的子目录。每个CPU的子目录,又深入分解为boot,mm,kernel等子目录,分别包括控制系统引导,内存管理,系统调用等。其下子目录有|

--x86

/*英特尔cpu及与之相兼容体系构造的子目录*/|

|--boot

/*引导程序*/|

|

|--compressed

/*内核解压缩*/|

|--tools

/*生成压缩内核映像的程序*/|

|--kernel

/*有关内核特性实现方式,如信号处理、时钟处理*/|

|--lib

/*硬件有关工具函数*/block目录

部分块设备驱动程序crypto目录加密、压缩、CRC校验算法documentation内核的文档drivers目录(重点)设备驱动程序fs目录寄存多种文献系统的实现代码。每个子目录对应一种文献系统的实现,公用的源程序用于实现虚拟文献系统vfs。|

|--devpts

/*

/dev/pts虚拟文献系统*/|

|--ext2

/*第二扩展文献系统*/|

|--fat

/*MS的fat32文献系统*/|

|--isofs

/*ISO9660光盘cd-rom上的文献系统*/include目录

内核所需要的头文献。与平台无关的头文献在include/linux

子目录下,与平台有关的头文献则放在对应的子目录中。

init目录内核初始化代码ipc目录进程间通信的实现代码kernel目录Linux大多数关键的关键功能都是在这个目录实现。(调度程序,进程控制,模块化)lib目录库文献代码mm目录mm目录中的文献用于实现内存管理中与体系构造无关的部分(与体系构造有关的部分在哪里实现?arch)net目录网络协议的实现代码|

|--802

/*802无线通讯协议关键支持代码*/|

|--appletalk

/*与苹果系统连网的协议*/|

|--ax25

/*AX25无线INTERNET协议*/|

|--bridge

/*桥接设备*/|

|--ipv4

/*IP协议族V4版32位寻址模式*/|

|--ipv6

/*IP协议族V6版*/samples某些内核编程的范例scripts配置内核的脚本securitySElinux的模块sound音频设备的驱动程序usrcpio命令实现virt内核虚拟机Linux内核的配置与编译Linux内核具有可定制的长处,配置内核的目的是裁剪掉不必要的文献和目录,获得一种最简朴的又能满足顾客开发的操作系统,以解除嵌入式开发过程中所碰到的存储空间有限的困扰。内核配置与编译的详细环节如下:1.清除临时文献、中间文献和配置文献1)make

clean

Remove

most

generated

files

but

keep

the

config即清除大部分生成的文献但保留配置文献2)make

mrproper

Remove

all

generated

files

+

config

files即清除所有生成的文献尚有配置文献3)make

distclean

Mrproper

+

remove

editor

backup

and

patch

files即实现make

mrproper命令的同步删除编辑器备份文献和补丁文献2.确定目的系统的软硬件配置状况,例如cpu类型,网卡型号,所需支持的网络协议等。3.使用如下命令之一配置内核:1)

make

config:基于文本模式的交互式配置2)make

menuconfig:基于文本模式的菜单型配置3)make

oldconfig:使用已经有的配置文献(.config),不过会问询新增的配置选项4)make

xconfig:图形化的配置(需安装图形化系统)Make

menuconfig是最为常用的内核配置方式

假如一种.config文献已经存在,它将使用该文献设置那些默认的值4.编译内核

编译内核一般也需要几种环节,一是清除此前编译通过的残留文献;二是编译内核image文献和可加载模块;三是安装模块。下面是编译内核的详细环节。①make

dep

命令用在内核2.4或之前,用于建立源文献之间的依赖关系,在执行内核配置命令之后使用,不过在2.6内核中已经取消该命令,该功能由内核配置命令实现。②make

clean

命令用于删除前面留下来的中间文献,该命令不会删除.config等配置文献。这个环节是可选的,它的目的是清除原先编译过而残留的.com和.o(obj文献)。假如是刚下载的源代码,那么这一步就可以省略了,不过假如已经编译多次内核,这一步是必要的,否则背面也许会出现诸多莫名其妙的小问题。③make

zImage命令用于编译生成压缩形式的内核镜像,当编译成功后,就会在arch\arm\boot\目录下生成zImage文献,大小一般为几百KB。对于嵌入式Linux内核而言,直接将生成的zImage下载到嵌入式目的板的flash中即可。对于较大的内核,假如用make

zImage编译,系统会提醒使用make

bzImage命令来编译,bzImage是big

zImage的缩写,可用于生成较大的压缩内核,例如桌面Linux系统内核。④在配置菜单的过程中,有些选项被选择为模块的,即选项前为[M],并且在回答Enable

loadable

module

support(CONFIG_MODULES)时选了Yes的,则接下来就还要用命令make

modules

来编译这些可加载模块,并用make

modules_install将make

modules生成的模块文献复制到对应目录,桌面Linux内核一般是在/lib/modules目录下。⑤制作init

ramdiskmkinitrd

initrd-$version

$version例:mkinitrd

initrd-2.6.29

2.6.29$version

可以通过查询/lib/modules下的目录得到Ramdisk是将一部分固定大小的内存当做分区来使用。它并非一种实际的文献系统,二是一种将实际的文献系统装入内存的机制,并且可以作为根文献系统。将某些常常被访问而又不会更改的文献(如只读的根文献系统)通过ramdisk放在内存中,可以明显的提高系统的性能。在linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文献系统一起载入内存。⑥cp

arch/x86/boot/bzImage/boot/vmlinuz-$version$version

为所编译的内核版本号(拷贝initrd-2.6.29到/boot下,将arch/x86/boot/bzImage更名为vmlinuz-2.6.29移动到/boot下)⑦修改/etc/grub.conf

或者/etc/lilo.conf(GNU

GRUB(简称

GRUB

)是一种来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它容许顾客可以在计算机内同步拥有多种操作系统,并在计算机启动时选择但愿运行的操作系统。GRUB可用于选择操作系统分区上的不一样内核,也可用于向这些内核传递启动参数。)这时重启Linux操作系统,在进入内核时按下回车键进入内核选择界面,选择自己编译的内核,即可进入自己编译的内核的操作系统,用uname

-r

可以查看目前内核版本。嵌入式linux文献系统的制作与移植

文献系统包括两个层次的含义:1.按照固定格式组织的目录与文献2.在特定的存储介质上管理这些目录和文献需要的数据当我们在linux下输入ls

/

的时候,见到的目录构造以及这些目录下的内容都大同小异,这是由于所有的linux发行版在对根文献系统的布局上都遵照FHS(Filesystem

Hierarchy

Standard)原则的提议规定。各个目录名称及其寄存的内容:/bin

必备的顾客命令,例如ls、cp等/sbin

必备的系统管理员命令,例如ifconfig、reboot等/dev

设备文献,例如mtdblock0、tty1等/etc

系统配置文献,包括启动文献,例如inittab等/lib

必要的链接库,例如C链接库、内核模块/home

一般顾客主目录/root

root顾客主目录/usr/bin

非必备的顾客程序,例如find、du等/usr/sbin

非必备的管理员程序,例如chroot、inetd等/usr/lib

库文献/var

守护程序和工具程序所寄存的可变,例如日志文献/proc

用来提供内核与进程信息的虚拟文献系统,由内核自动生成目录下的内容/sys

用来提供内核与设备信息的虚拟文献系统,由内核自动生成目录下的内容/mnt

文献系统挂接点,用于临时安装文献系统

/tmp

临时性的文献,重启后将自动清除根文献系统是Linux启动时使用的第一种文献系统。没有根文献系统,Linux将无法正常启动。根文献系统由一系列目录构成,目录中包括了应用程序、C库、以及有关的配置文献。

那怎样制作一种根文献系统呢?重要包括如下环节:1、创立根文献系统的目录如:mkdir

bin

sbin

lib

etc

dev

proc

sys

usr

mnt

tmp

var2、创立设备文献cd

devmknod

-m

666

console

c

5

1mknod

-m

666

null

c

1

3cd

..3、安装/etctar

-xzvf

etc.tar.gz

/xxx/rootfs/etc4、配置busybox进入busybox目录执行make

menuconfig进入

Busybox

Settingsbuild

Options->选中

“Build

busybox

as

a

static

binary”,

静态链接Cross

Compiler

prefix

(arm-linux-)Installation

Options->选中

“Don‘t

use

/usr”,

选中该项可以防止busybox被安装到宿主系统的/usr目录下,破坏宿主系统Busybox

Installation

Prefix

(/nfsroot/rootfs)该选项表明编译后的busybox的安装位置7、编译、安装busyboxmake

ARCH=arm

CROSS_COMPILE=arm-linux-

make

install前提是系统中安装好了交叉编译工具arm-linux-gcc至此一种粗略的根文献系统制作完毕,下面就需要移植到开发板中。我们懂得ARM嵌入式系统的构成为:1)bootloader

引导加载器2)kernel

操作系统内核3)rootfs

根文献系统

(带GUI,QTopia)

在系统加载完内核后就会去启动根文献系统,而启动根文献系统这个过程被bootargs这个参数控制,因此我们需要修改这个参数以使系统运行我们的根文献系统,但这之前我们需要在宿主机上将根文献系统共享出来。我们先在linux系统中配置好nfs服务器,并且在设置配置文献exports将根文献系统所在途径共享出来,接下来在ARM开发板启动时控制超级终端进入shell界面,在这里输入命令p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论