欢迎来到天天文库
浏览记录
ID:45062071
大小:3.09 MB
页数:42页
时间:2019-11-08
《Linux06Uboot裁减移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Uboot裁减移植课程安排引导加载程序BootLoaderUboot源码移植与使用Uboot启动过程源码分析BootLoader概念PC机系统的引导Bootloader定义Bootloader定义6410启动顺序嵌入式Linux软件层次嵌入式Linux软件层次BootLoader移植BootLoader移植BootLoader工作流程BootLoader工作流程BootLoader工作流程常用开源bootloader课程安排引导加载程序BootLoaderUboot源码编译与使用Uboot启动过程源码分析Uboot简介Uboot源码层次Uboot创建步骤Uboot配置过程1
2、、选择要使用的board配置:makemini6410_nand_config-ram2562、相当于执行:mkconfigmini6410arms3c64xxmini6410samsungs3c6410NANDram2563、执行mkconfig(1)在include目录下建立开发板相关平台链接文件:asm、asm-arm/arch等(2)在include目录下生成config.mk定义ARCH(arm)、CPU(s3c64xx)、BOARD(mini6410)、VENDOR(samsung)、SOC(s3c6410)(3)在include目录下生成config.h,引用
3、BOARD(mini6410)特定头文件(configs/mini6410.h)Uboot配置过程4、Uboot依靠开发板的配置文件configs/board_name.h(如mini6410.h)进行平台相关裁减、配置5、Uboot还没有类似Linux一样的图形配置界面,如果需要更改平台配置,需要手动更改该文件,配置文件中有两类宏(1)、选项,前缀为CONFIG_,用于选择CPU、开发板类型,设置系统时钟、选择设备驱动等(2)、参数,前缀为CFG_,用于设置malloc缓冲池大小、提示符、下载文件默认加载地址、Flash起始地址等Uboot编译过程2、执行编译:make(
4、1)引用include/config.mk,根据其体系结构ARCH执行编译include$(OBJTREE)/include/config.mkexportARCHCPUBOARDVENDORSOCifeq($(ARCH),arm)CROSS_COMPILE=arm-linux-(2)引用顶层目录的config.mk,根据配置确定编译器、编译选项引用开发板相关配置include$(TOPDIR)/board/$(BOARDDIR)/config.mk引用开发板相关链接脚本LDFLAGS+=-Bstatic-T$(LDSCRIPT)-Ttext$(TEXT_BASE)$(PL
5、ATFORM_LDFLAGS)LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds演示:创建并烧写Uboot配置编译开发板使用的uboot.bin烧写uboot.bin到NandFlashBootLoader工作模式启动模式下载模式Uboot主要功能1、引导功能(1)、硬件相关初始化:关看门狗、关中断、设置CPU时钟、RAM初始化、设置好栈指针等(2)、从固体设备(Flash)读出内核,启动内核2、开发功能(1)例如:烧写FLASH,网络通信功能,串口通信功能,USB通信功能能(2)这些方便开发调试的功能通过控制台命令实现Uboo
6、t常用命令开发板信息命令环境变量相关命令环境变量相关命令文件下载命令在host主机配置NFS服务器将host主机IP地址设置为serverip(192.168.1.88)执行程序命令执行程序命令课程安排引导加载程序BootLoaderUboot源码编译与使用Uboot启动过程源码分析Uboot的两个阶段第一阶段主要功能:(1)、硬件设备初始化(2)、为加载第二阶段代码准备RAM空间(3)、复制第二阶段代码到RAM空间中(4)、设置好栈(5)、跳转到第二阶段代码的C入口点第一阶段主要源码(1)、由Uboot编译命令可知,Uboot入口代码为cpu/$(CPU)/start.S
7、,对于S3C6410则为cpu/s3c64xx/start.S(2)、start.S入口为异常中断向量表,reset内执行完硬件相关初始化,并设置好栈后,跳转到C函数start_armbootUboot的两个阶段第二阶段主要功能:(1)、初始化本阶段要使用的硬件设备(2)、检测系统内存(3)、将内核映像和根文件系统从FLASH读到RAM空间(4)、为内核设置启动参数(5)、调用内核第二阶段主要源码(1)、执行lib_arm/board.c的init_sequence数组中预先定义的初始化函数完成硬件相关初始化(cp
此文档下载收益归作者所有