




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五部分嵌入式系统移植----BootloaderTX-2440A
嵌入式视频教程更多资料请登录
出品:天祥电子网址:第十三讲bootloader原理和vivi的移植第十三讲bootloader原理和vivi的移植1.Bootloader概述2.vivi的启动过程分析3.vivi的配置移植4.vivi命令详解Bootloader
概述简单地说,Bootloader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立系统的内存空间映射图,从而将系统的软件硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境。最终,Bootloader把操作系统内核映像加载到RAM中,并将系统控制权交给它Bootloader
概述Bootloader的操作模式
大多数Bootloader都包含两种不同的操作模式,即启动加载模式和下载模式,二者的区别仅对开发人员才有意义,从最终用户的角度看,Bootloader的作用就是加载操作系统。常用的bootloaderU-BootU-Boot(UniversalBootLoader)是德国DENX小组开发的用于多种嵌入式CPU的BootLoader程序,它可以运行于PowerPC、ARM、MIPS等多种嵌入式开发板上。vivivivi是由韩国MIZI公司开发的专门用于SAMSUNGARM架构的一种Bootloadervivi的启动过程分析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、调用内核
出品:天祥电子网址:第十四讲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下载地址:
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.cstart_armboot())U-Boot第二阶段启动过程第二阶段代码:lib_arm/board.c中的start_armboot函数init_sequence:初始化CPU,设置系统时钟,初始化定时器,初始化环境参数,初始化串口控制台,检测内存映射flash_init:初始化NORFLASHenv_relocate:初始化环境变量初始化系统外围设备最后调用main_loop(command/main.c)
出品:天祥电子网址:第十五讲Linux内核分析和配置1.内核源码目录结构分析2.Makefile,Kconfig文件分析3.Linux启动过程分析4.配置、编译内核第十五讲Linux内核分析和配置Linux内核的发展Linux内核的最初版本由LinusTorvalds在1991年发布Linux1.01994年3月仅支持386Linux1.21995年3月多平台支持Linux2.01996年6月支持SMPLinux2.21999年1月支持更多的硬件Linux2.42001年1月支持桌面系统和USBLinux2.62003年12月支持更多平台,使用新的调度器,内核可被抢占,模块子系统和文件系统做了大量改进,支持更多的硬件驱动。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内核配置系统的基本结构Makefile:分布在Linux内核源码中的Makefile定义了Linux内核编译的规则;配置工具:makeconfig字符界面makemenuconfigNcurses图形界面makexconfigXwindows图形界面配置文件:
.config:在配置内核时生成,根据.config来决定使用哪些MakefileMakefile文件分析Makefile的作用:决定编译哪些文件
怎样编译这些文件按什么顺序连接这些文件Kconfig文件分析变量:
bool两种取值:y、ntristate三种取值:y、n、mstring字符串hex十六进制数据int十进制数据Kconfig文件分析menuconfig:用于生成菜单config:
生成配置选项dependon依赖关系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_kernelLinux的启动过程第二阶段:
init/main.cstart_kernel
完成内核初始化全部工作,最后调用rest_init函数启动init进程Linux的启动过程内核文件:
vmlinux
编译出来的最原始的内核文件,未压缩zImage是vmlinux经过gzip压缩后的文件
uImageU-boot专用的映像文件,由bootm命令启动
准备移植修改Makefile:ARCH?=armCROSS_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编译内核镜像
makezImage第六部分嵌入式系统移植----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),为各类文件系统提供一个统一的操作界面和应用编程接口。嵌入式文件系统介绍Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。Cramfs文件系统CRAMFS文件系统是由LinuxTorvalds编写的专门针对闪存设计的只读压缩文件系统。与RAMdisk方式不同,CRAMFS文件系统不需要一次性地将文件系统中的所有内容都解压到内存中,而只是在系统需要访问某个数据时,马上计算出该数据在CRAMFS中的位置,将其实时的解压到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。Jffs/Jffs2文件系统
jffs文件系统是瑞典的Axis通信公司为嵌入式开发的日志文件系统。
jffs是针对以闪存为存储介质的嵌入式系统,充分的考虑了闪存的物理局限性,使用了尽可能高效的日志系统
所谓日志文件系统,其工作原理是跟踪记录文件系统的变化,并将变化内容记录入日志,并保存在磁盘分区。写操作中断,系统重启时,会根据日志记录来恢复中断前的写操作jffs2是RedHat公司基于jffs开发的闪存文件系统,主要针对ECos,也可以用于LINUX。提高了对闪存的利用率,降低了内存的损耗Yaffs/Yaffs2文件系统YAFFS文件系统是一种和JFFS2类似的Flash文件系统,和JFFS2相比,它减少了一些功能,因此速度更快,占用内存更少。此外YAFFS自带NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。在嵌入式系统设计中,NANDFlash大多使用YAFFS文件系统,而NORFlash多使用JFFS2文件系统。
YAFFS1只支持小页(512b)NAND,YAFFS2兼容YAFFS1,并支持大页(2K或更高)NANDLinux文件系统目录结构/bin
所有用户都可以使用的基本命令/sbin
只有管理员能够使用的命令(系统命令)/dev
设备文件(对应具体硬件设备)/etc
配置文件/lib
共享库和驱动模块/home
用户目录/root
根用户(root)目录/varlog文件,临时文件/proc
作为proc文件系统的挂载点/mnt
临时挂载某个文件系统的挂载点/tmp
临时文件Linux文件系统目录结构/usr
系统中所有的应用程序和文件/usr/bin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度建筑业职工劳动合同履行监督与检查
- 二零二五年度个人司机雇佣与车辆智能化改造合作协议
- 2025年中国电脑鼠标手托盘市场调查研究报告
- 二零二五年度风险投资对赌协议条款
- 二零二五年度车辆抵押担保与车辆保险服务合同
- 二零二五年度打架赔偿私了协议执行监督及争议解决机制
- 2025年中国演播室设备市场调查研究报告
- 二零二五年度施工合同延期及安全管理补充协议
- 福建省劳动合同2025年度:企业员工健康体检与权益保障协议
- 2025年度绿色建筑项目入股协议
- 大学生安全知识班会
- 《电力变压器》课件
- 初级铁路线路工技能鉴定考试题库
- 河南省信阳市固始县2023-2024学年四年级下学期期末数学试题
- Q∕GDW 10799.7-2020 国家电网有限公司电力安全工作规程 第7部分:调相机部分
- 热工学后题答案
- 不吸烟不喝酒课件
- 奥数知识点 间隔问题
- 简易旋转倒立摆及控制装置
- 深圳大学《数字信号处理》2009年期末考试试卷A卷
- BMC缺陷以及原因
评论
0/150
提交评论