(很好的嵌入式linux启动过程分析参考.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
嵌入式Linux启动过程分析 嵌入式Linux系统的启动过程可以分为两个部分:系统引导和Linux启动。系统引导主要由BootLoader实现,将Linux内核调入内存,并完成硬件的初始化工作。在BootLoader将Linux内核调入内存之后,将权力交给LinuxKernel,进入Linux的启动部分。 一、系统引导与BootLoader 在嵌入式系统中,BootLoader扮演着非常重要的角色。它负责将Linux内核调入内存,并完成硬件的初始化工作。在Hyper250(Inter Xscale GDPXA250)系统中,BootLoader的实现主要通过以下几个文件: * start_xscale.S:该文件包含两个库文件:config.h和xscale.h。config.h文件主要完成系统各硬件的宏定义与设定,xscale.h文件主要完成对系统芯片的及系统操作的设定。 * config.h:该文件主要完成以下几项工作: + 存储总线设备的宏定义:定义Flash的大小、字长等信息,定义SRAM的基址、大小和块大小。 + 动态内存设定:定义DRAM的大小、基址。 + 软件包信息:包名称、版本号。 + 设定BOOT LOADER的位置:在DRAM和SRAM的最大值、DRAM装入位置、栈的基址。 + 设定kernel的位置:在DRAM和SRAM的基址、KERNEL的最大值、KERNEL中块的数量。 + 设定文件系统的位置:根目录在DRAM和SRAM的基址、文件系统的最大值、文件系统中块的数量。 + 设定LOADER程序:LOADER程序的静态内存基址、LOADER程序的最大值、块的数量。 * xscale.h:该文件主要完成以下几项工作: + 定义内存基址(A0000000)。 + 定义中断基址(40D00000)和中断保护栈的偏移量。 + 定义时钟管理基址(41300000)和寄存器偏移及其初始值。 + 定义GPIO接口寄存器基址(40E00000)及各寄存器的偏移。 + 定义GPIO接口各寄存器的初始值。 + 定义内存控制寄存器基址(48000000)和各寄存器的偏移。 + 定义内存控制寄存器的初始值。 + 定义电源管理寄存器的参数。 + 定义FFUART寄存器的基址(40100000)和各寄存器的偏移。 + 定义FFUART各寄存器的初始值。 * start_xscale.S:该文件主要完成以下几项工作: + 设定中断基址(40D00000),完成中断保护栈的初始化。 + 初始化GPIO接口。 + 初始化内存SDRAM。 + 将BootLoader从Flash拷贝到SDRAM中。 + 装入Linux内核镜像,将内核从Flash(000C0000)装入SDRAM(A0008000)中。 + 设定保护栈。 + 调用main.c的主函数c_main()。 二、Linux启动过程分析 在BootLoader将Linux内核调入内存之后,将权力交给LinuxKernel,进入Linux的启动部分。 1. Makefile分析: 在分析arch/arm/boot/c目录下的Makefile文件,可以看到该文件主要完成以下几项工作: * 定义编译选项:定义编译器的选项,例如-g、-O2等。 * 定义目标文件:定义目标文件的名称和所在目录。 * 定义源文件:定义源文件的名称和所在目录。 * 定义编译命令:定义编译命令,例如cc、as等。 2. Linux内核的启动过程: 在Linux内核的启动过程中,主要完成以下几项工作: * 初始化内存管理:初始化内存管理单元,分配内存空间。 * 初始化进程管理:初始化进程管理单元,创建初始进程。 * 初始化文件系统:初始化文件系统,挂载根文件系统。 * 初始化设备驱动:初始化设备驱动,例如串口、网络接口等。 * 启动系统服务:启动系统服务,例如系统日志、系统监控等。 嵌入式Linux系统的启动过程是一个非常复杂的过程,涉及到系统引导、BootLoader、Linux内核等多个方面。在实际应用中,我们需要根据具体的硬件平台和软件需求,选择合适的BootLoader和Linux内核版本,并进行相应的配置和优化。
剩余7页未读,继续阅读
- 粉丝: 0
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (179941432)基于MATLAB车牌识别系统【GUI含界面】.zip
- (179941434)基于MATLAB车牌识别系统【含界面GUI】.zip
- (178021462)基于Javaweb+ssm的医院在线挂号系统的设计与实现.zip
- (178047214)基于springboot图书管理系统.zip
- 张郅奇 的Python学习过程
- (23775420)欧姆龙PLC CP1H-E CP1L-E CJ2M CP1E 以太网通讯.zip
- (174590622)计算机课程设计-IP数据包解析
- (175550824)泛海三江全系调试软件PCSet-All2.0.3 1
- (172742832)实验1 - LC并联谐振回路仿真实验报告1
- 网络搭建练习题.pkt
评论0