Linux06Uboot裁减移植.ppt

上传人:max****ui 文档编号:8308745 上传时间:2020-03-28 格式:PPT 页数:42 大小:3.09MB
返回 下载 相关 举报
Linux06Uboot裁减移植.ppt_第1页
第1页 / 共42页
Linux06Uboot裁减移植.ppt_第2页
第2页 / 共42页
Linux06Uboot裁减移植.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
Uboot裁减移植 课程安排 引导加载程序BootLoaderUboot源码移植与使用Uboot启动过程源码分析 BootLoader概念 PC机系统的引导 Bootloader定义 Bootloader定义 6410启动顺序 嵌入式Linux软件层次 嵌入式Linux软件层次 BootLoader移植 BootLoader移植 BootLoader工作流程 BootLoader工作流程 BootLoader工作流程 常用开源bootloader 课程安排 引导加载程序BootLoaderUboot源码编译与使用Uboot启动过程源码分析 Uboot简介 Uboot源码层次 Uboot创建步骤 Uboot配置过程 1 选择要使用的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 引用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 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 PLATFORM LDFLAGS LDSCRIPT TOPDIR board BOARDDIR u boot lds 演示 创建并烧写Uboot 配置编译开发板使用的uboot bin烧写uboot bin到NandFlash BootLoader工作模式 启动模式 下载模式 Uboot主要功能 1 引导功能 1 硬件相关初始化 关看门狗 关中断 设置CPU时钟 RAM初始化 设置好栈指针等 2 从固体设备 Flash 读出内核 启动内核2 开发功能 1 例如 烧写FLASH 网络通信功能 串口通信功能 USB通信功能能 2 这些方便开发调试的功能通过控制台命令实现 Uboot常用命令 开发板信息命令 环境变量相关命令 环境变量相关命令 文件下载命令 在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 对于S3C6410则为cpu s3c64xx start S 2 start S入口为异常中断向量表 reset内执行完硬件相关初始化 并设置好栈后 跳转到C函数start armboot Uboot的两个阶段 第二阶段主要功能 1 初始化本阶段要使用的硬件设备 2 检测系统内存 3 将内核映像和根文件系统从FLASH读到RAM空间 4 为内核设置启动参数 5 调用内核第二阶段主要源码 1 执行lib arm board c的init sequence数组中预先定义的初始化函数完成硬件相关初始化 cpu init board init interrupt init等 检测系统内存 dram init 2 lib arm board c的start armboart函数后续调用的初始化函数执行FLASH 网络等初始化 nand init env relocate eth set mac Uboot的两个阶段 3 进入控制台命令循环main loop 4 如果设置了环境参数bootdelay和bootcmd 并且在bootdelay秒内有串口输入 则执行bootcmd命令 5 否则 循环读入串口数据并执行相应命令bootcmd命令 1 nandread ic0008000400000500000 bootmc0008000 2 调用nandread命令从nand的0 x400000地址读出5M内容 内核 根文件系统 到内存0 xc0008000地址 虚拟地址 实际地址为0 x50008000 3 调用bootm命令先设置内核启动参数 再到0 xc0008000地址启动内核 Uboot命令格式 1 UBOOT中每个命令都通过U BOOT CMD宏来定义 U BOOT CMD name maxargs rep cmd usage help include command h2 参数意义 1 name 命令名 不要用双引号括起来 2 maxargs 最大参数个数 3 rep 命令是否可重复 下次敲回车即可再次运行 4 cmd 对应的命令函数 5 usage 简短帮助 6 详细帮助3 对于每一个U BOOT CMD命令 其实都是在 u boot cmd段中定义一个cmd tbl t结构 见链接脚本u boot lds u boot cmd start u boot cmd u boot cmd u boot cmd end 演示 Uboot命令实现 在Uboot中增加一个hello测试命令 1 在common目录增加cmd hello c2 实现do hello函数3 为hello命令添加U BOOT CMD宏4 在common目录的Makefile添加cmd hello c文件编译5 编译新uboot bin 验证hello命令 内核启动 1 Uboot通过标记列表 taggedlist 向内核传递参数 见lib arm armlinux csetup start tagsetup memory tagssetup commandline tagsetup end tag2 do bootm linux函数设置标记列表 在内存启始地址 0 x100处 最后通过theKernel 0 bd bi arch number bd bi boot params 启动内核3 theKernel指向存放内核的启始内存地址 0 x50008000 bi arch number为board init函数设置的机器类型ID 2520 而bi boot params存放标记列表的开始地址 0 x50000100 演示 Uboot内核 1 printenv显示uboot环境变量2 拷贝bootcmd变量内容3 在uboot控制台执行bootcmd变量内容4 观察uboot启动内核过程
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!