1 / 42

嵌入式 Linux 移植

嵌入式 Linux 移植. 乔义川 07 检测技术与自动化. 大纲. 嵌入式 OS 的分类及各自特点 嵌入式 Linux 的特点 嵌入式 Linux 的移植 讨论. 嵌入式系统的分类. 嵌入式 Linux Linux 本身的种种特性使其成为嵌入式开发的首选。嵌入式协会( ELC )发布了 ELC 产品规范版本 1.0, 更为嵌入式 Linux 的开发提供了提供了方便。 RT-Linux uCLinux(Micro-Control-Linux) mizi-linux : 由韩国 mizi 公司根据 Linux 2.4 内核移植而来,支持 S3C2410A 处理器.

viola
Télécharger la présentation

嵌入式 Linux 移植

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式Linux移植 乔义川 07检测技术与自动化

  2. 大纲 • 嵌入式OS的分类及各自特点 • 嵌入式Linux的特点 • 嵌入式Linux的移植 • 讨论

  3. 嵌入式系统的分类 • 嵌入式Linux Linux本身的种种特性使其成为嵌入式开发的首选。嵌入式协会(ELC)发布了ELC产品规范版本1.0,更为嵌入式Linux的开发提供了提供了方便。 • RT-Linux • uCLinux(Micro-Control-Linux) • mizi-linux :由韩国mizi公司根据Linux 2.4内核移植而来,支持S3C2410A处理器

  4. 嵌入式系统的分类 • uClinux uClinux是很常用的一种嵌入式Linux,它去掉了Linux中的内存管理单元(MMU),主要用于没有内存管理单元的处理器(比如三星公司的S3C44B0X)。它是继承了标准Linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准Linux先验知识等优势。其编译后目标文件可控制在几百KB量级。

  5. 嵌入式系统的分类 • Windows CEMicrosoft Windows CE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200K的ROM。

  6. 嵌入式系统的分类 • VxWorksVxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC等等。大多数的VxWorks API是专有的。采用GNU的编译和调试器。

  7. 嵌入式系统的分类 • uC/OS uC/OS是一个典型的RTOS,该系统从1992年开始发展,目前流行的是第二个版本,即uC/OS II。它的特点可以概括为一下几个方面: • 公开源代码 • 良好的可移植性(Portable) • 可裁剪(Scalable) • 可固化(ROMable) • 占先式(Preemptive) • 多任务 • ……

  8. 嵌入式系统的分类 • LynxOSLynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的RTOS,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。LynxOS支持线程概念,提供256个全局用户线程优先级;提供一些传统的、非实时系统的服务特征;包括基于调用需求的虚拟内存,一个基于Motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具。 • Portable Operating System Interface

  9. 嵌入式系统的分类 • Palm OS Palm OS是一种32位的嵌入式OS,用于掌上电脑。此系统是3Com公司的Palm Computing部(以独立成一家公司)开发的。它运行在一个抢占式的多任务内核之上,同一时刻用户界面仅仅允许一个应用程序被打开,与同步软件HotSync结合可以使掌上电脑与PC上的信息实现同步,把PC的功能扩展到了手掌上。它具有强大的灵活性和良好的可移植性,是一款非常流行的掌上电脑操作系统。

  10. 嵌入式系统的分类 • QNX • OS-9 • pSOS • ……

  11. 嵌入式Linux的特点 • 一、广泛的硬件支持 Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC等多种体系结构,目前已经成功移植到数十种硬件平台,几乎能够运行在所有流行的CPU上。Linux有着异常丰富的驱动程序资源,支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。

  12. 嵌入式Linux的特点 • 二、内核高效稳定 Linux内核的高效和稳定已经在各个领域内得到了大量事实的验证,Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分,其独特的模块机制可以根据用户的需要,实时地将某些模块插入到内核或从内核中移走。这些特性使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。

  13. 嵌入式Linux的特点 • 三、开放源码,软件丰富 Linux是开放源代码的自由操作系统,它为用户提供了最大限度的自由度,由于嵌入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就变得至关重要了。Linux的软件资源十分丰富,每一种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。在Linux上开发嵌入式应用软件一般不用从头做起,而是可以选择一个类似的自由软件做为原型,在其上进行二次开发。

  14. 嵌入式Linux的特点 • 四、优秀的开发工具 传统的嵌入式开发调试工具是在线仿真器(In-Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能够非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。价格非常昂贵,只适合做非常底层的调试。 嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。

  15. 嵌入式Linux的特点 • 五、完善的网络通信和文件管理机制 Linux至诞生之日起就与Internet密不可分,支持所有标准的Internet网络协议,并且很容易移植到嵌入式系统当中。此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,这些都为开发嵌入式系统应用打下了很好的基础。

  16. 嵌入式Linux系统的组成部分 • 一、引导程序 能实现系统的快速引导,提供瞬间开机功能。负责将Linux内核加载到内存,并将控制权交给内核初始化程序。具体工作包括:寻找或将指定的内核映像解压,解压文件系统。

  17. 嵌入式Linux系统的组成部分 • 二、Linux内核 Linux是一个单一内核操作系统,但可以动态装入和卸载内核中的部分源代码,这与传统的单一内核操作系统全部静态编译内核代码是不同的。Linux内核由内存管理、进程管理、定时器中断管理、模块管理、虚拟文件系统、接口文件系统、设备驱动程序、进程间通信、网络管理、系统启动等构成。

  18. 嵌入式Linux系统的组成部分 • 三、初始化进程 系统在刚刚启动时,运行于内核方式,这时候只有一个初始化进程在运行,他首先做系统的初始化,然后执行初始化程序(一般是/sbin/init)。初始化进程是系统的第一个进程,以后所有的进程都是初始化进程的子进程。

  19. 嵌入式Linux系统的组成部分 • 四、硬件驱动程序 设备驱动程序是内核的一部分,它像内核中其它代码一样运行在内核模式。驱动程序如果出错将会使操作系统受到严重破坏,甚至能使系统崩溃并导致文件系统的破坏和数据丢失。Linux设备驱动程序的主要功能有:对设备进行初始化;使设备投入运行和退出服务;从设备接收数据并将它们送回内核;将数据从内核送到设备;检测和处理设备出现的错误。

  20. 嵌入式Linux系统的组成部分 • 五、应用程序 提供所需功能的一个或更多应用程序。

  21. 移植的概念 • 移植步骤 a.Bootloader的移植; b.嵌入式Linux操作系统内核的移植;c.嵌入式Linux操作系统根文件系统的创建;d.电路板上外设Linux驱动程序的编写。

  22. 移植的准备工作 • PC平台 装有Linux操作系统或在Windows操作系统下安装Cygwin • 目标平台 CPU: S3C2410 SDRAM: HY57V561620 Nand flash: K9F1208U0B(64MB) 以太网芯片:CS8900A (10M/100MB)

  23. 源码包 • linux kernel linux-2.6.14.1.tar.gz • Skyeye skyeye-1.2-RC8-3.tar.bz2 • toolchain cross-2.95.3.tar.bz2,也可以使用gcc,gdb,glibc,binutils等工具自己编译产生。

  24. 源码包 • binuils binutils-2.16.tar.gz • gcc gcc-3.4.4.tar.bz2 • glibc glibc-2.3.5.tar.gz glibc-linuxthreads-2.3.5.tar.gz • gdb gdb-5.2.tar.bz2 • u-boot u-boot1.1.4.tar.bz2

  25. 源码包 • Batch(补丁) ioperm.c.diff 作用:打修正ioperm()函数 flow.c.diff 作用:该补丁用于产生crti.o和crtn.o文件 t-linux.diff 作用:修改gcc一处bug • 其他工具 busybox-1.1.3.tar.gz mkcramfs

  26. 交叉编译工具

  27. bootloader与u-boot • BootLoader是系统加电启运行的第一段软件代码,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的RAM中,然后将控制权交给引导程序。引导程序的主要运行任务就是将内核映象从硬盘上读到RAM中 然后跳转到内核的入口点去运行,也即开始启动操作系统。

  28. bootloader与u-boot • BootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如 S3C44B0),从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。

  29. bootloader与u-boot • 每种不同的CPU体系结构都有不同的BootLoader。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置,因此为嵌入式系统建立一个通用的BootLoader是很困难的 • U-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。

  30. Boot Loader 的操作模式 (Operation Mode) • 启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。

  31. Boot Loader 的操作模式 (Operation Mode) • 下载(Downloading)模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。Boot Loader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。

  32. u-boot功能 • 系统引导 • 支持NFS挂载、从FLASH中引导压缩或非压缩系统内核 • 基本辅助功能 • 强大的操作系统接口功能; • 可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲; • 支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM; • CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好 ; • 设备驱动;上电自检功能;SDRAM故障检测;CPU型号;特殊功能,XIP内核引导……

  33. u-boot移植 • 为了使U-Boot支持新的开发板,一种简便的做法是在U-Boot已经支持的开发板中选择一种和目标板接近的,并在其基础上进行修改。 • 移植前的准备 • 阅读相关文档 • config.mk,flash.c的修改 • 修改flash和SDRAM的参数设置(以Byte为单位) • 其他事项,比如准备源码,建立交叉开发环境等

  34. u-boot移植 • 在建立的开发环境下进行移植工作。绝大多数的开发环境是交叉开发环境。在这方面,DENX 和MontaVista均提供了完整的开发工具集 • 在目标板与开发主机间接入硬件调试器,一般使用BDI2000。一方面,其价格不如ICE调试器昂贵,同时其可靠性高,功能强大,完全能胜任移植和调试u-Boot。另外,网上也有不少关于BDI2000调试方面的参考文档。 • 如果在参考开发板上移植U-Boot,可能需要移除目标板上已有的boot loader。

  35. u-boot移植 • 修改文件 • <目标板>.c文件 • <目标板>.h头文件 • FLASH的驱动程序 • 串口驱动 • 配置,编译 • 把boot.bin和u-boot.gz烧到flash里面去,或RAM中的指定位置

  36. u-boot移植 • 对于U-Boot的移植方法,大致分为两种 • 一,先用BDI2000创建目标板初始运行环境,将U-Boot镜像文件u-boot.bin下载到目标板RAM中的指定位置,然后,用BDI2000进行跟踪调试。 • 其好处是不用将U-Boot镜像文件烧写到FLASH中去。 • 但弊端在于对移植开发人员的移植调试技能要求较高,BDI2000的配置文件较为复杂。

  37. u-boot移植 • 另外一种方法是用BDI2000先将U-Boot镜像文件烧写到FLASH中去,然后利用GDB和BDI2000进行调试。这种方法所用BDI2000的配置文件较为简单,调试过程与U-Boot移植后运行过程相吻合,即U-Boot先从FLASH中运行,再重载至RAM中相应位置,并从那里正式投入运行。麻烦的就是需要不断烧写FLASH。

  38. Linux-2.6内核的移植 • 修改Makefile • 找到ARCH和CROSS_COMPILE,修改ARCH  ?= arm • CROSS_COMPILE   ?= armlinux • 设置PATH环境变量,使其可以找到交叉编译工具链 • 设置flash分区

  39. Linux-2.6内核的移植 • 配置内核 • 支持启动时挂载devfs 为了内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,修改fs/Kconfig文件[arm@localhost linux2.6.14]$ vi fs/Kconfig • 配置内核产生.config文件 make menuconfig make zImage • 编译内核,生成zImage • 下载zImage到开发板

  40. 构造目标板的根目录及文件系统 • 建立一个目标板的空根目录 • 在my_rootfs中建立Linux目录树 • 创建linuxrc文件 • 挂载/etc为ramfs, 并从/mnt/etc下拷贝文件到/etc目录当中 • 挂载/proc为proc文件系统 • 挂载/sys为sysfs文件系统 • 挂载其他文件系统 • 相关配置文件的创建 • 创建帐号及密码文件 • 创建profile文件 • 创建fstab文件

  41. 移植Busybox • busybox是linux的命令工具集,包含例如login,insmod等许多linux命令的源代码,编译这个源码包,就会生成若干linux命令工具的可执行程序。 这里需要注意一点的是,只要install busybox,我们根文件系统下先前建好的linuxrc就会被覆盖为一同名二进制文件。所以要事先备份我们自己的linuxrc,在安装完busybox后,将linuxrc复制回去就好。

  42. 谢谢大家!

More Related