欢迎来到天天文库
浏览记录
ID:45566875
大小:234.47 KB
页数:21页
时间:2019-11-14
《uClinux启动顺序研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、9「zoo29oiw遂为000192蛊e送云毎^2、edtotheexplanatorynotestofacilitatelearnersunderstandingeasieruClinuxstartupprocessandtomasterthemethodofrewriting.[keyword]:uClinux;Bootsequence;kernel;start_kernel引言:32位ARM嵌入式处理器具有高性能、低功耗、高性价比的特性,已被广泛应用于消费电子产砧、无线通信、控制和网络通信等领域。uClinux是专门为无MMU处理器设计的嵌入式操作3、系统,已支持ARM、Motorola等微处理器°忖前采用ARM+uClinux作为嵌入式系统的一种开发模式非常普遍。一个基于uClinux的完整的嵌入式系统山三个部分组成,即系统引导程序Bootloader、uClinux操作系统内核和文件系统。嵌入式系统的启动引导技术是嵌入式系统开发的一个难点,系统启动引导的成功与否决定了应用程序的运行环境是否能正确建立,系统启动成功是应用正确运行的前提。而uClinux内核的启动过程也是其中重要一环,在不同的嵌入式系统中,即使处理器相同,uClinux的启动控制部分4、都会完全不同,所以分析uClinux的启动过程,对以加快系统启动速度、止确建立应用环境。正文:uClinux启动Z前的程序称作引导程序,它在整个系统小代码量较小,但是作用较大。该引导程序包括两个方而;弓I导内核的Bootloader和内核自身的引导程序部分。Bootloader是CPU开机后执行的第一个程序,它的任务就是将内核(压缩或是非压缩)装载到内核要求的地址。内核引导程序部分有狭义和广义之分,狭义指内核运行前的一段代码,一般在压缩的内核映像前有一段解压缩程序,负责将内核解压缩到某个地址,从开始解压5、缩到将控制权交给解压缩好的内核,这一段代码称为内核的引导部分。广义定义还要包括内核初始化部分,即直到有进程产牛才算引导程序结束。可将uClinux系统内核启动过程总结为一下儿个阶段:(1)指向复位地址入口处的Bootloader代码。Bootloader完成一些基本的初始化,将系统的软硕件环境带到一个合适的状态(2)Bootloader^控制权交给操作系统内核的引导程序后,开始uClinux内核的加载;(3)uClinux内核加载引导完成,启动init进程,完成系统的引导过程。下图为一个简单的内核出动过6、程图,主耍分为bootloader^内核两部分。bootloaderkernel内核启动过程图•uClinux启动过程嵌入式设备上电启动丿讦,Flash屮的程序获得控制权,Flash中的程序包括bootloader和一个压缩过的内核(另外还含有一个romfs的文件系统)。Flash中的程序首先配置内存地址,将本身市原来系统默认的地址配置为0x0到0x200000(2MByte),SDRAM配置为0x1000000(16MByte)到0x2000000(32MByte),然后把Flash的内容整体拷贝SD7、RAM中。拷贝完后,将SDRAM地址重新配置为0x0到0x1000000,F!ash的地址改为0x1000000到0x1200000。注意,这甲Flash和RAM地址是同时修改的,修改地址后,接下来的指令就将从SDRAM中获得,由于SDRAM中的程序和原来Flash•!'的程序一样,并且地址也一样,所以不会影响指令的执行。这里要说明一点的是,很多NOMMU的处理器上电后都是从地址0X0读程序并开始执行的,这是Flash地址,但处理器的中断向量地址表一般也都会放在0x0地址开始的RAM屮,所以NOMMU的8、处理器一般都要经过上述的初始化过程,才可以使用自己编写的屮断程序。而MMU的处理器可以通过MMU将物理地址中的0X0地址换成逻辑的非0X0地址。完成上面的工作后,SDRAM中的程序就解压缩内核到0x8000地址,最后跳到该地址执行。当Bootloader将控制权交给内核的引导程序时,第一个执行的程序就是head.S,它完成了加载内核的大部分工作,初始完硕件相关的系统配置后,就把内核解压缩到一具体地址,完成在head-armv.S中设置好系统
2、edtotheexplanatorynotestofacilitatelearnersunderstandingeasieruClinuxstartupprocessandtomasterthemethodofrewriting.[keyword]:uClinux;Bootsequence;kernel;start_kernel引言:32位ARM嵌入式处理器具有高性能、低功耗、高性价比的特性,已被广泛应用于消费电子产砧、无线通信、控制和网络通信等领域。uClinux是专门为无MMU处理器设计的嵌入式操作
3、系统,已支持ARM、Motorola等微处理器°忖前采用ARM+uClinux作为嵌入式系统的一种开发模式非常普遍。一个基于uClinux的完整的嵌入式系统山三个部分组成,即系统引导程序Bootloader、uClinux操作系统内核和文件系统。嵌入式系统的启动引导技术是嵌入式系统开发的一个难点,系统启动引导的成功与否决定了应用程序的运行环境是否能正确建立,系统启动成功是应用正确运行的前提。而uClinux内核的启动过程也是其中重要一环,在不同的嵌入式系统中,即使处理器相同,uClinux的启动控制部分
4、都会完全不同,所以分析uClinux的启动过程,对以加快系统启动速度、止确建立应用环境。正文:uClinux启动Z前的程序称作引导程序,它在整个系统小代码量较小,但是作用较大。该引导程序包括两个方而;弓I导内核的Bootloader和内核自身的引导程序部分。Bootloader是CPU开机后执行的第一个程序,它的任务就是将内核(压缩或是非压缩)装载到内核要求的地址。内核引导程序部分有狭义和广义之分,狭义指内核运行前的一段代码,一般在压缩的内核映像前有一段解压缩程序,负责将内核解压缩到某个地址,从开始解压
5、缩到将控制权交给解压缩好的内核,这一段代码称为内核的引导部分。广义定义还要包括内核初始化部分,即直到有进程产牛才算引导程序结束。可将uClinux系统内核启动过程总结为一下儿个阶段:(1)指向复位地址入口处的Bootloader代码。Bootloader完成一些基本的初始化,将系统的软硕件环境带到一个合适的状态(2)Bootloader^控制权交给操作系统内核的引导程序后,开始uClinux内核的加载;(3)uClinux内核加载引导完成,启动init进程,完成系统的引导过程。下图为一个简单的内核出动过
6、程图,主耍分为bootloader^内核两部分。bootloaderkernel内核启动过程图•uClinux启动过程嵌入式设备上电启动丿讦,Flash屮的程序获得控制权,Flash中的程序包括bootloader和一个压缩过的内核(另外还含有一个romfs的文件系统)。Flash中的程序首先配置内存地址,将本身市原来系统默认的地址配置为0x0到0x200000(2MByte),SDRAM配置为0x1000000(16MByte)到0x2000000(32MByte),然后把Flash的内容整体拷贝SD
7、RAM中。拷贝完后,将SDRAM地址重新配置为0x0到0x1000000,F!ash的地址改为0x1000000到0x1200000。注意,这甲Flash和RAM地址是同时修改的,修改地址后,接下来的指令就将从SDRAM中获得,由于SDRAM中的程序和原来Flash•!'的程序一样,并且地址也一样,所以不会影响指令的执行。这里要说明一点的是,很多NOMMU的处理器上电后都是从地址0X0读程序并开始执行的,这是Flash地址,但处理器的中断向量地址表一般也都会放在0x0地址开始的RAM屮,所以NOMMU的
8、处理器一般都要经过上述的初始化过程,才可以使用自己编写的屮断程序。而MMU的处理器可以通过MMU将物理地址中的0X0地址换成逻辑的非0X0地址。完成上面的工作后,SDRAM中的程序就解压缩内核到0x8000地址,最后跳到该地址执行。当Bootloader将控制权交给内核的引导程序时,第一个执行的程序就是head.S,它完成了加载内核的大部分工作,初始完硕件相关的系统配置后,就把内核解压缩到一具体地址,完成在head-armv.S中设置好系统
此文档下载收益归作者所有