北航国家课程嵌入式系统--实验3 linux内核在arm平台上的移植.ppt
《北航国家课程嵌入式系统--实验3 linux内核在arm平台上的移植.ppt》由会员分享,可在线阅读,更多相关《北航国家课程嵌入式系统--实验3 linux内核在arm平台上的移植.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2006 EmbeddedLINUXLINUX内核在内核在armarm平台上的移植平台上的移植牛建伟邹 琪嵌入式系统课程嵌入式系统课程实验三实验三 2006 Embedded实验目的实验内容BootloaderLinux内核实验步骤 2006 Embedded实验目的实验目的了解bootloader及其作用,了解Linux内核结构。掌握配置和编译Linux系统内核的方法以及移植嵌入式Linux的基本步骤。2006 Embedded实验内容实验内容在Linux系统的宿主PC下,修改裁减内核源码,编译生成bootloader、内核映像和根文件系统。在Windows系统的宿主PC下,烧写bootl
2、oader、内核映像和根文件系统。(带U盘)2006 Embedded嵌入式嵌入式Linux系统构成系统构成引导加载程序(armboot,blob,redboot,vivi,U-Boot)启动加载模式(正常工作模式),下载模式内核文件系统用户应用程序(有时还包括嵌入式图形用户界面)内核 根文件系统Bootloader启动参数 2006 EmbeddedBootloader介绍介绍引导加载程序bootloader是系统加电后运行的第一段代码,它完成整个系统的加载启动任务。在基于ARM的嵌入式系统中,系统在上电或复位时通常都从地址0 x00000000处开始执行,而在这个地址处放的通常就是系统的b
3、ootloader。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。2006 EmbeddedBootloader的启动流程的启动流程第一个阶段主要包括依赖于CPU的体系结构硬件初始化的代码,通常用汇编语言实现。这个阶段的任务有:基本的硬件设备初始化(屏蔽所有中断、关闭处理器内部指令/数据cache等)为第二阶段准备RAM空间如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM设置堆栈跳转到第二阶段的C程序入口点第二个阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好
4、的可读性和移植性。这个阶段的任务有:初始化本阶段要使用到的硬件设备检测系统内存映射将内核映像和根文件系统映像从flash读到RAM为内核设置启动参数启动内核(将控制交给内核)2006 EmbeddedLinux内核介绍内核介绍目前专门针对嵌入式设备的Linux改版有针对无MMU的uClinux和针对有MMU的标准Linux在各硬件体系结构上的移植版本。uClinux是通过对标准Linux内核裁减,去除虚拟内存管理部分的代码,并对内存分配进行优化,从而达到提高系统运行效率的目的。因此uClinux的应用程序开发要求用户自己正确的处理内存管理,一旦错误地修改了其他进程的内存,将可能造成系统死机。基
5、于像ARM2410这样的ARM9内核的ARM-Linux使用了MMU的内存管理,对进程有保护,提高了嵌入式系统中多进程的保护能力。使用户应用程序的可靠性得以提高,降低了用户的开发难度。2006 EmbeddedLinux内核结构内核结构/arch目录,包含了体系结构相关部分的内核代码,如i386 arm等平台,而每个平台又包括以下几个目录:boot:包括启动内核所用的部分或全部代码kernel:存放支持体系结构特有的特征的实现 lib:存放高速的体现结构特有的通用函数的实现mm:存放体系结构特有的内存管理程序的实现/drivers目录,保存了内核中所有设备驱动程序。/fs目录,列出了Linux
6、支持的所有文件系统的代码,如ntfs ext3和yaffs等/include目录,包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。不同的平台需要的头文件会有所不同,因此该目录和arch目录一样,按平台划分多个子目录,如asm-arm是arm平台的。2006 EmbeddedLinux内核结构(续)内核结构(续)/init目录,包含了内核的初始化代码,有 两个文件。/ipc目录,包含了核心进程间的通信代码。/kernel目录,内核管理的核心代码在此,与处理器结构相关的代码都在arch/*/kernel目录下。/lib目录,包括与平台无关的通用函数。/
7、mm目录,包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/kernel目录下。/net目录,里面是核心的网络部分代码,其每个子目录对应于网络的一个方面。其他目录,Documentation目录存放了许多文档。scripts目录存放配置内核的一些脚本文件。2006 EmbeddedLinux内核移植内核移植 1Linux内核的移植主要包含启动代码的修改,内核的链接及装入,参数传递,内核引导几个部分。我们在移植工作中要改动的代码主要集中在与体系结构相关部分。在/arch/arm/boot/bootp目录中,有个的ARM汇编文件,它就是引导Linux内核在arm平台上
8、启动的初始化代码。它里面定义了一个全局符号_start,它定义了默认的起始地址,同时它也是整体内核二进制镜像的起始标志。主要完成以下功能:定义数据、代码段、bbs(未初始化数据段)起始地址变量并对bbs段初始化设置寄存器以初始化系统硬件关闭中断初始化LCD显示将数据段复制到内存跳转到内核起始函数start_kernel继续执行对主寄存器的修改 2006 Embedded/*Copyright(C)2000 Russell King*This program is free software;you can redistribute it and/or modify*it under the t
9、erms of the GNU General Public License version 2 as*published by the Free Software Foundation.*Header file for splitting kernel+initrd.Note that we pass*r0 through to r3 straight through.*/.section.start,#alloc,#execinstr.type_entry,#function_entry:adrr10,initdataldrr11,initdatasubr11,r10,r11 work o
10、ut exec offsetbsplitify.size_entry,.-_entry.typeinitdata,#objectinitdata:.wordinitdata compiled address of this.sizeinitdata,.-initdata.textsplitify:adrr13,dataldmiar13!,r4-r6 move the initrdaddr4,r4,r11 correctionblmoveldmiar13!,r4-r6 then the kernelmovr12,r5addr4,r4,r11 correctionblmove 2006 Embed
11、ded/*Setup the initrd parameters to pass to the kernel.This can either be*passed in via a param_struct or a tag list.We spot the param_struct*method by looking at the first word;this should either indicate a page*size of 4K,16K or 32K.*/ldmiar13,r4-r8 get size and addr of initrd r5=ATAG_INITRD r6=in
12、itrd start r7=initrd end r8=param_struct addressldrr9,r8,#0 no param struct?teqr9,#0 x1000 4K?teqner9,#0 x4000 16K?teqner9,#0 x8000 32K?beqparam_structldrr9,r8,#4 get first tagteqr9,r4bnetaglist ok,we have a tag list/*We didnt find a valid tag list-create one.*/strr4,r8,#4movr4,#8strr4,r8,#0movr4,#0
13、strr4,r8,#8/*find the end of the tag list,and then add an INITRD tag on the end.*If there is already an INITRD tag,then we ignore it;the last INITRD*tag takes precidence.*/2006 Embeddedtaglist:ldrr9,r8,#0 tag lengthteqr9,#0 last tag?addner8,r8,r9bnetaglistmovr4,#16 length of initrd tagmovr9,#0 end o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北航国家课程嵌入式系统-实验3 linux内核在arm平台上的移植 北航 国家 课程 嵌入式 系统 实验 linux 内核 arm 平台 移植
限制150内