LINUX内核在arm平台上的移植.ppt

LINUX内核在arm平台上的移植.ppt

ID:48049310

大小:1.10 MB

页数:31页

时间:2020-01-13

LINUX内核在arm平台上的移植.ppt_第1页
LINUX内核在arm平台上的移植.ppt_第2页
LINUX内核在arm平台上的移植.ppt_第3页
LINUX内核在arm平台上的移植.ppt_第4页
LINUX内核在arm平台上的移植.ppt_第5页
资源描述:

《LINUX内核在arm平台上的移植.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、LINUX内核在arm平台上的移植牛建伟邹琪嵌入式系统课程——实验三实验目的实验内容BootloaderLinux内核实验步骤实验目的了解bootloader及其作用,了解Linux内核结构。掌握配置和编译Linux系统内核的方法以及移植嵌入式Linux的基本步骤。实验内容在Linux系统的宿主PC下,修改裁减内核源码,编译生成bootloader、内核映像和根文件系统。在Windows系统的宿主PC下,烧写bootloader、内核映像和根文件系统。(带U盘)嵌入式Linux系统构成引导加载程序(armboot,blob,redboot,vivi,U-Boot)启动加载

2、模式(正常工作模式),下载模式内核文件系统用户应用程序(有时还包括嵌入式图形用户界面)内核根文件系统Bootloader启动参数Bootloader介绍引导加载程序bootloader是系统加电后运行的第一段代码,它完成整个系统的加载启动任务。在基于ARM的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处放的通常就是系统的bootloader。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Bootloader的启动流程第一个阶段主要包

3、括依赖于CPU的体系结构硬件初始化的代码,通常用汇编语言实现。这个阶段的任务有:◆基本的硬件设备初始化(屏蔽所有中断、关闭处理器内部指令/数据cache等)◆为第二阶段准备RAM空间◆如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM◆设置堆栈◆跳转到第二阶段的C程序入口点第二个阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和移植性。这个阶段的任务有:◆初始化本阶段要使用到的硬件设备◆检测系统内存映射◆将内核映像和根文件系统映像从flash读到RAM◆为内核设置启动参数◆启动内核(将控制交给内核)Linux内核介绍目前专门针对

4、嵌入式设备的Linux改版有针对无MMU的uClinux和针对有MMU的标准Linux在各硬件体系结构上的移植版本。uClinux是通过对标准Linux内核裁减,去除虚拟内存管理部分的代码,并对内存分配进行优化,从而达到提高系统运行效率的目的。因此uClinux的应用程序开发要求用户自己正确的处理内存管理,一旦错误地修改了其他进程的内存,将可能造成系统死机。基于像ARM2410这样的ARM9内核的ARM-Linux使用了MMU的内存管理,对进程有保护,提高了嵌入式系统中多进程的保护能力。使用户应用程序的可靠性得以提高,降低了用户的开发难度。Linux内核结构/arch目录

5、,包含了体系结构相关部分的内核代码,如i386arm等平台,而每个平台又包括以下几个目录:boot:包括启动内核所用的部分或全部代码kernel:存放支持体系结构特有的特征的实现lib:存放高速的体现结构特有的通用函数的实现mm:存放体系结构特有的内存管理程序的实现/drivers目录,保存了内核中所有设备驱动程序。/fs目录,列出了Linux支持的所有文件系统的代码,如ntfsext3和yaffs等/include目录,包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。不同的平台需要的头文件会有所不同,因此该目录和arch目录

6、一样,按平台划分多个子目录,如asm-arm是arm平台的。Linux内核结构(续)/init目录,包含了内核的初始化代码,有main.cversion.c两个文件。/ipc目录,包含了核心进程间的通信代码。/kernel目录,内核管理的核心代码在此,与处理器结构相关的代码都在arch/*/kernel目录下。/lib目录,包括与平台无关的通用函数。/mm目录,包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/kernel目录下。/net目录,里面是核心的网络部分代码,其每个子目录对应于网络的一个方面。其他目录,Documentation目录

7、存放了许多文档。scripts目录存放配置内核的一些脚本文件。Linux内核移植1Linux内核的移植主要包含启动代码的修改,内核的链接及装入,参数传递,内核引导几个部分。我们在移植工作中要改动的代码主要集中在与体系结构相关部分。在/arch/arm/boot/bootp目录中,有个init.S的ARM汇编文件,它就是引导Linux内核在arm平台上启动的初始化代码。它里面定义了一个全局符号_start,它定义了默认的起始地址,同时它也是整体内核二进制镜像的起始标志。Init.S主要完成以下功能:◆定义数据、代码段、bbs(未

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。