嵌入式Linux系统移植.ppt
文本预览下载声明
* 操作系统实验 * 主要特性 看门狗定时器。 有LCD控制器,支持4K色的STN和256K色的TFT,配置有DMA通道。 具有PLL功能的时钟发生器,时钟频率高达203MHz。 双电源系统:1.8/2.0V内核供电,3.3V存储器和I/O供电。 没有内置的网络控制器,如果需要网络功能,一般使用CS8900和DM9000 * 操作系统实验 * * 操作系统实验 * Bootloader Bootloader的概念 Bootloader的结构和启动过程 * 操作系统实验 * Bootloader Bootloader的概念 系统上电后,需要一段程序来进行初始化:关闭WATCHDOG、改变系统时钟、初始化存储控制器、将更多的代码复制到内存中等。如果它能够将操作系统内核复制到内存中运行,无论从本地(比如Flash)还是从远端(比如通过网络),就成这段程序为Bootloader. 简单的说,Boot咯啊der就是这么一小段程序,它在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。 在开发时,通畅需要使用各种命令操作Bootloader,一般通过串口来连接PC和开发板,可以再串口上输入各种命令、观察运行结果等。 * 操作系统实验 * Bootloader Bootloader的结构 嵌入式Linux系统从软件的角度通常可以分为以下四个层次: 引导加载程序 包括固化在固件的Boot代码(BIOS)和Bootloader Linux内核 文件系统 包括根文件系统。里面包含了Linux系统能够运行所必需的应用程序、库等,比如可以给用户提供操作Linux的控制界面的shell程序、动态链接的程序运行时需要的glibc库等 用户应用程序 特定于用户的应用程序也存储在文件系统中。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:Qtopia和MiniGUI等 * 操作系统实验 * Bootloader Bootloader的两个阶段 从固态存储设备上启动的Bootloader大多都是两阶段的启动过程。第一阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始化,并调用第二阶段的代码;第二阶段则通常使用C语言来实现。 Bootloader第一阶段的功能 硬件设备初始化(关闭WATCHDOG,关中断,设置CPU的速度和时钟频率等) 为加载Bootloader的第二阶段代码准备RAM空间 复制Bootloader的第二阶段代码到RAM空间中 设置好栈 跳转到第二阶段的C入口点 Bootloader第二阶段的功能 初始化本阶段要使用到的硬件设备 检测系统内存映射 将内核映像和根文件系统应用从Flash上读到RAM空间中 为内核设置启动参数 调用内核 * 操作系统实验 * 配置和编译内核 1、解压内核 tar xvfj linux-.tar.bz2 –C /opt/kernel * 操作系统实验 * Makefile与Kconfig Linux的Makefile分析 Linux内核源码中含有很多个Makefile文件,这些Makefile文件又要包含其他一些文件(比如配置信息、通用规则等。)这些文件构成了Linux的Makefile体系,可以分为如下五类: 名称 描述 顶层Makefile 它是所有makefile文件的核心,从总体上控制着内核的编译、连接 .config 配置文件,在配置内核时生成。根据.config可以确定在编译内核时需要使用哪些文件 arch/$(ARCH)/Makefile 对应体系结构的Makefile,它用来决定哪些体系结构相关的文件参与内核的生成,并提供一些规则来生成特定格式的内核映像 Scripts/Makefile.* Makefile共用的通用规则、脚本等 Kbuild Makefiles 各级子目录下的makefile,他们相对简单,被上一层makefile调用来编译当前目录下的文件 * 操作系统实验 * Makefile与Kconfig 我们主要来关注Makefile是如何决定编译哪些文件的 Linux内核的编译过程从顶层Makefile文件开始,然后递归地进入各级子目录调用他们的makefile,分为三个步骤: 顶层Makefile决定内核根目录下哪些子目录将被编进内核 Arch/$(ARCH)/Makefile决定arch/$(ARCH)目录下哪些文件、哪些目录将被编译进内核 各级子目录下的Makefile决定所在目录下哪些文件将被编译进内核,哪些文件将被编译成模块(即驱动程序),进入哪些子目录继续调用他们的Makefil
显示全部