嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植

上传人:E**** 文档编号:89557094 上传时间:2019-05-27 格式:PPT 页数:35 大小:860KB
返回 下载 相关 举报
嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植_第1页
第1页 / 共35页
嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植_第2页
第2页 / 共35页
嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植_第3页
第3页 / 共35页
嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植_第4页
第4页 / 共35页
嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植》由会员分享,可在线阅读,更多相关《嵌入式系统原理及应用开发 教学课件 ppt 作者 陈渝 第9章 嵌入式Linux系统移植(35页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

5、r的stage2,trampoline程序示例(来自blob bootloader软件): .text .globl _trampoline _trampoline: bl main /* 如果main返回,对其进行再次调用 */ b _trampoline,这里的main标号 为C语言的入口,BootLoader的stage2,1、初始化本阶段要使用到的硬件设备 初始化至少一个串口,以便和终端用户进行I/O输出信息; 初始化定时器等。,在C语言程序中,可以通过读写处理器的特殊功能寄存器,实现设置硬件的工作。,BootLoader的stage2,2、检测系统的内存映射(memory map)

6、内存映射就是指在整个4GB的物理地址空间中。 BootLoader的stage2必须先检测整个系统的内存映射情况。检测完系统的内存映射情况后,BootLoader也可以将内存映射的详细信息打印到串口。,BootLoader的stage2,3、加载内核映像和根文件系统映像 规划内存占用的布局 从Flash上拷贝,while(count) *dest+ = *src+; count -= 4; ;,BootLoader的stage2,4、设置内核的启动参数 从Flash上拷贝调用内核之前,应该作一步准备工作,即:设置Linux内核的启动参数。 console=ttyS0,115200n8 串口采用

7、如下设置:“115200bps、无奇偶校验、8位数据位”。,Linux控制台参数,BootLoader的stage2,5、调用内核 CPU寄存器的设置 CPU模式 Cache和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移植,L

8、inux内核概述 Linux源文件结构 ARM-Linux移植 ARM-Linux的初始化流程 基于PXA 2xx的ARM linux移植,Linux内核概述,Linux内核组成: 进程调度 (Process Schedule) 进程间通信 (IPC,Intre-Process Communication) 内存管理 (MM,Memory Management) 虚拟文件系统 (VFS,Virtual Flie System) 网络(Net),Linux内核概述,Linux源文件结构,移植改动的主要工作。,ARM-Linux移植,Linux核心部分的C语言源文件,Linux驱动程序的C语言源文

9、件,ARM体系的C语言和汇编文件,具体处理器的C语言和汇编文件,生成的目标包含内核映像和各个独立的模块。,ARM-Linux移植,在archarm包含的目录如下表所示: init:启动汇编入口,文件夹compressed包含了压缩程序 configs:配置脚本 mm:与体系结构相关的内存管理代码 tools:包含各种体系结构的定义 mach-XXX:各种体系相关的代码,Linux内核概述,Linux的C语言入口是linux 2.x/init/目录中的main.c的start_kernel()函数。 Linux程序进入C语言入口后,将完成系统的各种初始化工作,并建立第一个进程,整个系统进入调度状

10、态。,Linux内核概述,压缩和非压缩启动同时进入内核入口。,基于PXA 2xx的ARM linux移植,对于增加Linux对一款新的处理器的支持,需要从以下几个方面出发: 中断系统 定时器 DMA系统 编译选项,中断和定时器是为操作系统提供运行节拍的必要硬件,从编译的角度,增加对新处理器的支持,基于PXA 2xx的ARM linux移植,核心部分:定时器和中断系统。,基于ARM-noMMU的CLinux移植,CLinux的特点 CLinux源文件结构和移植 ARM-CLinux系统的初始化过程 S3C44B0X系统的CLinux的移植,CLinux的特点,CLinux是针对工业控制领域的嵌入

11、式linux操作系统,它从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性,适合不具备MMU的微处理器/微控制器。支持没有MMU的CPU是CLinux与主流Linux的基本差异。,针对没有内存管理单元的处理器。,CLinux的特点,CLinux和标准Linux主要的差别: 虚拟内存 Flat(扁平)格式 位置无关的代码PIC 多进程管理,CLinux的特点,CLinux源文件结构和移植,主要的区别在于内存管理(mm),公用代码和体系结构相关的代码与标准Linux具有差别。,ARM-CLinux系统的初始化过程,ARM-CLinux系统的初始化过程和ARM-Linux类

12、似,都是要从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目录。 arch/arm/tools/mach-types: 机器类型 include/asm-armnommu/arch-XXX: 头文件 arch/armnommu/mach-XXX: 处理器移植文件 arch/armnommu/共同代码部分: ARM的公共代码 Makefile和config文件: 编译脚本,核心部分:定时器和中断系统。,课程结束,

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号