天祥ARM视频TXA全部课件第三部分共四个部分.ppt_第1页
天祥ARM视频TXA全部课件第三部分共四个部分.ppt_第2页
天祥ARM视频TXA全部课件第三部分共四个部分.ppt_第3页
天祥ARM视频TXA全部课件第三部分共四个部分.ppt_第4页
天祥ARM视频TXA全部课件第三部分共四个部分.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五部分 嵌入式系统移植 -Bootloader,TX-2440A 嵌入式视频教程,出品:天祥电子 网址:,第十三讲 bootloader原理和vivi的移植,第十三讲 bootloader原理和vivi的移植,1. Bootloader概述 2. vivi的启动过程分析 3. vivi的配置移植 4. vivi命令详解,Bootloader 概述,一个嵌入式Linux系统从软件的角度看通常分为4个层次: Bootloader Linux内核 文件系统 用户应用程序,Bootloader 概述,简单地说,Bootloader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立系统的内存空间映射图,从而将系统的软件硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境。 最终,Bootloader把操作系统内核映像加载到RAM中,并将系统控制权交给它,Bootloader 概述,Bootloader的操作模式 大多数Bootloader都包含两种不同的操作模式,即启动加载模式和下载模式,二者的区别仅对开发人员才有意义,从最终用户的角度看,Bootloader的作用就是加载操作系统。,常用的bootloader,U-Boot U-Boot(Universal Boot Loader)是德国DENX小组开发的用于多种嵌入式CPU的BootLoader程序,它可以运行于PowerPC、ARM、MIPS等多种嵌入式开发板上。 vivi vivi是由韩国MIZI公司开发的专门用于SAMSUNG ARM架构的一种Bootloader,常用的bootloader,RedBoot RedHat公司开发的,针对eCos操作系统 BLOB 基于LART硬件平台,目前它主要支持INTEL的StrongARM体系结构和XScale结构的ARM芯片。 LILO Linux磁盘引导程序 GRUB GNU的LILO替代程序,vivi的启动过程分析,Bootloader的启动过程大多是分两个阶段,即stage1和stage2。 依赖CPU体系结构的代码通常放在stage1中,而且通常用汇编语言实现。 stage2中的代码通常用C语言实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。,vivi的启动过程分析,Bootloader的stage1通常包括以下步骤: 1、硬件设备初始化 2、为加载stage2准备RAM空间 3、复制stage2到RAM空间 4、设置好堆栈 5、跳转到stage2的C入口点,vivi的启动过程分析,Bootloader的stage2通常包括以下步骤: 1、初始化本阶段要用到的硬件设备 2、检测系统内存映射 3、将kernel映像和根文件系统映像从 Flash上读到RAM空间 4、为内核设置启动参数 5、调用内核,第五部分 嵌入式系统移植 -Bootloader,TX-2440A 嵌入式视频教程,出品:天祥电子 网址:,第十四讲 U-Boot原理分析和移植,1. U-Boot简介 2. U-Boot源码目录结构 3. U-Boot运行代码分析 4. U-Boot在TX2440A开发板上移植 5. U-Boot常用命令讲解,第十四讲 U-Boot原理分析和移植,U-Boot 简介,UBoot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。 UBoot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。 uboot下载地址: ftp:/ftp.denx.de/pub/u-boot/,U-Boot源码目录结构,1. board:开发板相关目录 2. common:通用的命令函数 3. cpu:特定CPU架构相关目录,如arm920t 4. doc:uboot的开发、使用文档 5. drivers:uboot支持的设备驱动程序,比如串口,nandflash,网卡 6. fs: 支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。,U-Boot源码目录结构,7. include:头文件和开发板配置文件,configs目录下是开发板的配置文件 8. lib_xxxx: 与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。 9. lib_generic:通用的库函数 10. net:各种网络协议,TFTP协议、NFS协议等。 11. tools:uboot自带的工具,U-Boot第一阶段启动过程,cpu/arm920t/start.s 完成硬件初始化 设置CPU工作模式 关看门狗 设置系统时钟 关MMU,CACHE 为第二阶段准备RAM空间 (调用board/smdk2410/lowlevel_init.s) 设置堆栈 跳转到第二阶段代码的C入口点 (lib_arm/board.c start_armboot( ) ),U-Boot第二阶段启动过程,第二阶段代码:lib_arm/board.c中的start_armboot函数 init_sequence: 初始化CPU,设置系统时钟,初始化定时器,初始化环境参数,初始化串口控制台,检测内存映射 flash_init: 初始化NORFLASH env_relocate: 初始化环境变量 初始化系统外围设备 最后调用main_loop (command/main.c),第六部分 嵌入式系统移植 -Linux内核,TX-2440A 嵌入式视频教程,出品:天祥电子 网址:,第十五讲 Linux内核分析和配置,1. 内核源码目录结构分析 2. Makefile,Kconfig文件分析 3. Linux启动过程分析 4. 配置、编译内核,第十五讲 Linux内核分析和配置,Linux内核的发展,Linux内核的最初版本由Linus Torvalds在1991年发布 Linux1.0 1994年3月 仅支持386 Linux1.2 1995年3月 多平台支持 Linux2.0 1996年6月 支持SMP Linux2.2 1999年1月 支持更多的硬件 Linux2.4 2001年1月 支持桌面系统和USB Linux2.6 2003年12月 支持更多平台,使用新的调度器,内核可被抢占,模块子系统和文件系统做了大量改进,支持更多的硬件驱动。,Linux内核的版本,内核源码的官方网址: 但这里可用的内核版本并不总是适用于所有的Linux支持 的体系结构。实际上,这个站点的内核首先确保的是在Intel x86体系结构上可以正常运行 要取得目标板可用的内核,必须找到专门负责开发相应处理器架构的团队所提供的内核版本。 ARM体系结构的源码网址: .uk/developer,Linux内核的版本,目前TX2440A开发板上使用的内核版本:2.6.31 在内核源码顶层目录下Makefile中查看版本号: VERSION = 2 主版本号 PATCHLEVEL = 6 主版本号 SUBLEVEL = 31 次版本号 EXTRAVERSION = 扩展版本号,内核源码目录结构分析,arch 与体系结构相关的代码。对应于每个支持的体系结构,有一个相应的子目录如x86、arm等,每个体系结构子目录下包含几个主要子目录: .boot 启动内核所需的平台特有代码 .kernel 体系结构特有特征(如SMP)的实现 .mm 与体系结构相关的内存管理代码 .lib 与体系结构相关的通用函数的实现,内核源码目录结构分析,drivers 所有设备驱动程序代码,它占整个内核代码量一半以上,每一个子目录对应一类驱动程序。 fs 文件系统代码,每个支持的文件系统有相应的子目录,如cramfs,yaffs,jffs2等 include 包括编译内核所需的大部分头文件,与平台无关的头文件放在include/linux子目录下,平台相关的头文件如include/asm-arm,内核源码目录结构分析,init 内核初始化代码 kernel 内核管理核心代码 lib 库函数代码 Mm 内存管理代码 net 网络支持代码 sound 音频设备驱动代码 scripts 用于配置内核的脚本文件 documentation 内核相关文档,内核配置系统的基本结构,Makefile:分布在Linux内核源码中的Makefile定义了Linux内核编译的规则; 配置工具: make config 字符界面 make menuconfig Ncurses图形界面 make xconfig Xwindows图形界面 配置文件: .config:在配置内核时生成,根据.config来决定使用哪些Makefile,Makefile 文件分析,Makefile的作用: 决定编译哪些文件 怎样编译这些文件 按什么顺序连接这些文件,Kconfig文件分析,变量: bool 两种取值:y、n tristate 三种取值:y、n、m string 字符串 hex 十六进制数据 int 十进制数据,Kconfig文件分析,menuconfig: 用于生成菜单 config: 生成配置选项 depend on 依赖关系 default 默认值 select 自动选择 source 读入另一个Kconfig文件 help 帮助信息,Linux的启动过程,第一阶段: arch/arm/kernel/head.S arch/arm/kernel/head-common.S arch/arm/mm/proc-arm920.S 检查内核是否支持当前处理器架构和开发板,禁止Cache,使能MMU,设置栈指针,调用 start_kernel,Linux的启动过程,第二阶段: init/main.c start_kernel 完成内核初始化全部工作,最后调用rest_init函数启动init进程,Linux的启动过程,内核文件: vmlinux 编译出来的最原始的内核文件,未压缩 zImage 是vmlinux经过gzip压缩后的文件 uImage U-boot专用的映像文件,由bootm命令启动,准备移植,修改Makefile: ARCH ?= arm CROSS_COMPILE ?=arm-linux- 修改时钟 arch/arm/mach-s3c2440/mach-smdk2440.c 修改机器码 内核中:arch/arm/tools/mach-types uboot中:include/asm-arm/mach-types.h 载入配置文件 arch/arm/configs/s3c2410_defconfig 选择CPU类型 SMDK2440 编译内核镜像 make zImage,第六部分 嵌入式系统移植 -Linux内核,TX-2440A 嵌入式视频教程,出品:天祥电子 网址:,第十六讲 向内核中加入驱动,1. 支持NAND和yaffs2,挂载文件系统 2. 基本外围设备的配置 (LCD、触摸屏、网卡、声卡,SD卡、 USB设备、摄像头) 3. 向内核中加入驱动模块 (LED、按键、蜂鸣器、AD、DS18B20),第十六讲 向内核中加入驱动,第七部分 嵌入式系统移植 -构建根文件系统,TX-2440A 嵌入式视频教程,出品:天祥电子 网址:,第十七讲 用busybox制作根文件系统,嵌入式文件系统介绍 Linux目录结构详解 配置,编译busybox 完善根文件系统 制作yaffs2镜像,第十七讲 用busybox制作根文件系统,嵌入式文件系统介绍,文件系统是操作系统的重要组成部分,所谓文件系统是指操作系统中负责管理和存储文件信息的软件机构。 Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。,嵌入式文件系统介绍,Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。 不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。,Cramfs 文件系统,CRAMFS文件系统是由Linux Torvalds编写的专门针对闪存设计的只读压缩文件系统。 与RAM disk方式不同,CRAMFS文件系统不需要一次性地将文件系统中的所有内容都解压到内存中,而只是在系统需要访问某个数据时,马上计算出该数据在CRAMFS中的位置,将其实时的解压到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。,Jffs/Jffs2 文件系统,jffs文件系统是瑞典的Axis通信公司为嵌入式开发的日志文件系统。 jffs是针对以闪存为存储介质的嵌入式系统,充分的考虑了闪存的物理局限性,使用了尽可能高效的日志系统 所谓日志文件系统,其工作原理是跟踪记录文件系统的变化,并将变化内容记录入日志,并保存在磁盘分区。写操作中断,系统重启时,会根据日志记录来恢复中断前的写操作 jffs2是RedHat公司基于jffs开发的闪存文件系统,主要针对ECos,也可以用于LINUX。提高了对闪存的利用率,降低了内存的损耗,Yaffs/Yaffs2 文件系统,YAFFS文件系统是一种和JFFS2类似的Flash文件系统,和JFFS2相比,它减少了一些功能,因此速度更快,占用内存更少。此外YAFFS自带NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。 在嵌入式系统设计中,NAND Flash大多使用YAFFS文件系统,而NOR Flash多使用JFFS2文件系统。 YAFFS1只支持小页(512b)NAND, YAFFS2兼容YAFFS1,并支持大页(2K或更高)NAND,Linux 文件系统目录结构,/bin 所有用户都可以使用的基本命令 /sbin 只有管理员能够使用的命令(系统命令) /dev 设备文件(对应具体硬件设备) /etc 配置文件 /lib 共享库和驱动模块 /home 用户目录 /root 根用户(root)目录 /var log文件,临时文件 /proc 作为proc文件系统的挂载点 /mnt 临时挂载

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论