第9章 嵌入式Linux系统移植.ppt

上传人:qwe****56 文档编号:70278208 上传时间:2023-01-18 格式:PPT 页数:35 大小:860KB
返回 下载 相关 举报
第9章 嵌入式Linux系统移植.ppt_第1页
第1页 / 共35页
第9章 嵌入式Linux系统移植.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《第9章 嵌入式Linux系统移植.ppt》由会员分享,可在线阅读,更多相关《第9章 嵌入式Linux系统移植.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第9章 嵌入式Linux系统移植第9章 嵌入式Linux系统移植9.1 Bootloader(引导加载器)9.2 基于ARM-with MMU的Linux移植9.3 基于ARM-noMMU的CLinux移植9.1 Bootloader的开发pLinux Bootloader的概述pBootLoader的stage1pBootLoader的stage2Linux Bootloader的概述 BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,例如设备初始化代码等,通常都放在stage1中,而且通常都

2、用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。与体系结构相关便于适应不同平台Linux Bootloader的概述BootLoader的stage1通常包括以下步骤(以执行的先后为顺序):p硬件设备初始化p为加载BootLoader的stage2准备RAM空间p拷贝BootLoader的stage2到RAM空间中p设置好堆栈p跳转到stage2的C入口点进入BootLoader的C语言入口准备的C语言的运行环境。Linux Bootloader的概述BootLoader的stage2通常包括以下步骤(

3、以执行的先后为顺序):p初始化本阶段要使用到的硬件设备p检测系统内存映射(memory map)p将kernel映像和根文件系统映像从flash上读到RAM空间中p为内核设置启动参数p调用内核硬件初始化阶段。为操作系统准备环境调用操作系统BootLoader的stage11、基本的硬件初始化:屏蔽所有的中断设置CPU的速度和时钟频率RAM初始化初始化LED关闭CPU内部指令数据cache对于具有MMU的处理器BootLoader的stage12、为加载stage2准备RAM空间 为了获得更快的执行速度,通常把stage2加载到RAM空间中来执行,因此必须为加载BootLoader的stage2

4、准备好一段可用的RAM空间范围。BootLoader的stage13.复制stage2到RAM中stage2的可执行映像在固态存储设备的存放起始地址和终止地址;为stage2所安排的RAM空间的起始地址。BootLoader的stage14、设置堆栈指针spBootLoader映像区域第二阶段加载区域BootLoader的stage15、跳转到stage2的C入口点 在上述一切都就绪后,可以跳转到BootLoader的stage2去执行了。ARM处理器跳转通过PC(R15)的改变来实现BootLoader的stage2 trampoline程序示例程序示例(来自来自blob bootloade

5、r软件软件):.text.globl _trampoline_trampoline:blmain/*如果main返回,对其进行再次调用*/b_trampoline这里的main标号为C语言的入口BootLoader的stage21、初始化本阶段要使用到的硬件设备p初始化至少一个串口,以便和终端用户进行I/O输出信息;p初始化定时器等。在C语言程序中,可以通过读写处理器的特殊功能寄存器,实现设置硬件的工作。BootLoader的stage22、检测系统的内存映射(memory map)内存映射就是指在整个4GB的物理地址空间中。BootLoader的stage2必须先检测整个系统的内存映射情况。

6、检测完系统的内存映射情况后,BootLoader也可以将内存映射的详细信息打印到串口。BootLoader的stage23、加载内核映像和根文件系统映像p规划内存占用的布局p从Flash上拷贝while(count)*dest+=*src+;count-=4;BootLoader的stage24、设置内核的启动参数 从Flash上拷贝调用内核之前,应该作一步准备工作,即:设置Linux内核的启动参数。console=ttyS0,115200n8 串口采用如下设置:“115200bps、无奇偶校验、8位数据位”。Linux控制台参数BootLoader的stage25、调用内核pCPU寄存器的设

7、置pCPU模式pCache和MMU的设置C语言调用内核:void(*callKernel)(int zero,int arch,u32 params_addr)=(void(*)(int,int,u32)KERNEL_RAM_BASE;callKernel(0,ARCH_NUMBER,(u32)kernel_params_start);函数指针,赋值为绝对地址。9.2 基于ARM-with MMU的Linux移植pLinux内核概述pLinux源文件结构pARM-Linux移植pARM-Linux的初始化流程p基于PXA 2xx的ARM linux移植Linux内核概述Linux内核组成:p

8、进程调度(Process Schedule)p 进程间通信(IPC,Intre-Process Communication)p 内存管理(MM,Memory Management)p 虚拟文件系统(VFS,Virtual Flie System)p 网络(Net)Linux内核概述Linux源文件结构代代码码部分部分程序程序语语言言描述描述linux 2.x/initC初始化代码,包括C语言入口函数main.clinux 2.x/kernelC内核的核心代码,包括进程调度等linux 2.x/ipcC进程通讯代码linux 2.x/mmC内存管理代码linux 2.x/fsC文件系统代码lin

9、ux 2.x/netC网络代码linux 2.x/driversC驱动程序代码包含char、block、net等子目录linux 2.x/includeC头文件各部分代码头文件linux 2.x/archC+汇编与体系结构相关的C和汇编代码移植改动的主要工作。ARM-Linux移植Linux核心部分的C语言源文件Linux驱动程序的C语言源文件ARM体系的C语言和汇编文件具体处理器的C语言和汇编文件生成的目标包含内核映像和各个独立的模块。ARM-Linux移植在archarm包含的目录如下表所示:p init:启动汇编入口,文件夹compressed包含了压缩程序p configs:配置脚本p

10、 mm:与体系结构相关的内存管理代码p tools:包含各种体系结构的定义p mach-XXX:各种体系相关的代码Linux内核概述 Linux的C语言入口是linux 2.x/init/目录中的main.c的start_kernel()函数。Linux程序进入C语言入口后,将完成系统的各种初始化工作,并建立第一个进程,整个系统进入调度状态。Linux内核概述压缩和非压缩启动同时进入内核入口。基于PXA 2xx的ARM linux移植 对于增加Linux对一款新的处理器的支持,需要从以下几个方面出发:p中断系统p定时器pDMA系统p编译选项中断和定时器是为操作系统提供运行节拍的必要硬件从编译的

11、角度,增加对新处理器的支持基于PXA 2xx的ARM linux移植目录和文件类型描述arch/arm/tools/mach-types机器类型 这是包含机器类型(处理器类型)的文件,需要在此处增加新的处理器类型include/asm-arm/arch-XXX头文件 这些是需要在内核和内核模块中使用的头文件。在include/arm目录中的每一个arch-XXX表示了一种Linux支持ARM处理器,对于新增的处理器需要增加一个arch-XXX目录。arch/arm/mach-XXX处理器移植文件 这是移植主要需要的文件,既包括C语言文件,也包括汇编文件。针对每种处理器需要增加各种实现。arch

12、/arm/共同代码部分ARM的公共代码 对于某些处理器,需要更改针对ARM处理器的共同代码部分,一般使用条件编译的方式Makefile和config文件编译脚本 Linux内核编译过程中,需要配置的脚本决定编译的文件,选择移植的体系结构。核心部分:定时器和中断系统。基于ARM-noMMU的CLinux移植 pCLinux的特点pCLinux源文件结构和移植pARM-CLinux系统的初始化过程pS3C44B0X系统的CLinux的移植CLinux的特点 CLinux是针对工业控制领域的嵌入式linux操作系统,它从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性,适合

13、不具备MMU的微处理器/微控制器。支持没有MMU的CPU是CLinux与主流Linux的基本差异。针对没有内存管理单元的处理器。CLinux的特点CLinux和标准Linux主要的差别:虚拟内存Flat(扁平)格式位置无关的代码PIC多进程管理CLinux的特点内容类型描述Linux-2.6.xlinux-2.4.xlinux-2.0.xOS源代码CLinux的内核,与Linux-2.6.x/Linux-2.4.x/Linux-2.0.x内核兼容。freeswan软件源代码来自www.freeswan.org的软件lib软件源代码用户层应用程序所用到的一些库,包括libc,libm等等uCli

14、bc源代码是一个libc库,比通常使用的glic更小,更精简。user源代码包含了CLinux自带的大量用户层的应用程序,。config配置脚本一个基本的linux配置脚本用来进行默认的配置vendors编译信息包含平台特定的一些编译信息和一些支持文件。这里还存放了对每一个CLinux支持的平台的默认文件。romfs编译结果ROM文件系统的目录结构images编译结果包含编译好的二进制内核文件,文件系统的镜像文件和一个包含文件系统和内核的镜像。CLinux源文件结构和移植主要的区别在于内存管理(mm),公用代码和体系结构相关的代码与标准Linux具有差别。ARM-CLinux系统的初始化过程

15、ARM-CLinux系统的初始化过程和ARM-Linux类似,都是要从Bootloader引导,运行内核。加载内核映像的方式分为压缩和非压缩两种,压缩内核的启动经过arch/arm/boot/compressed目录中head.S文件,非压缩内核启动直接进入arch/armnommu/kernel目录中的head-armv.S,然后调用start_kernel进入C语言环境。S3C44B0X系统的CLinux的移植 CLinux的移植需要增加和改动的文件和Linux基本一致,只是Linux基于arch/arm目录,而CLinux基于arch/armnommu目录。parch/arm/tools/mach-types:机器类型pinclude/asm-armnommu/arch-XXX:头文件parch/armnommu/mach-XXX:处理器移植文件parch/armnommu/共同代码部分:ARM的公共代码pMakefile和config文件:编译脚本核心部分:定时器和中断系统。课程结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁