OK6410A 开发板 (三) 8 u-boot-2021.01 boot 解析 SPL镜像运行部分

2024-05-27 15:58

本文主要是介绍OK6410A 开发板 (三) 8 u-boot-2021.01 boot 解析 SPL镜像运行部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

url 		: git@github.com:lisider/u-boot.git
branch 		: ok6410a
commit id 	: e63a4077ad3aea53107495b0b68b95e720fe6033
config 		: ok6410a_mini_defconfig
// 涉及的 .S .s .c 文件 有 67个
  • 从入口出口来看
// 运行在 0x0c00 0000
reset 												arch/arm/cpu/arm1176/start.S 39	lowlevel_init(108) 								board/samsung/ok6410a/lowlevel_init.S 72_main(110)										arch/arm/lib/crt0.S 91board_init_f(117)							board/samsung/ok6410a/ok6410a.c 266debug_uart_init(271) 					include/debug_uart.h 193_debug_uart_init(196) 				drivers/serial/s3c64xx_serial.c 315	board_init_r(177) 							common/spl/spl.c 589spl_board_init(641) 					board/samsung/ok6410a/ok6410a.c 255spl_boot_mmc(258) 					board/samsung/ok6410a/bl2_mmc_copy.c 18mmc_bl2_copy(23) 				board/samsung/ok6410a/bl2_mmc_copy.c 7CopyMovitoMem(HSMMC_CHANNEL, MOVI_BL2_POS, MOVI_BL2_BLKCNT, bl2_base, MOVI_INIT_REQUIRED)(13) arch/arm/mach-s3c64xx/include/mach/movi.h 25bl2base(24) // 跳转到 u-boot 的u-boot镜像
spl标准流程
reset 												arch/arm/cpu/arm1176/start.S 39	lowlevel_init(108) 								board/samsung/ok6410a/lowlevel_init.S 72_main(110)										arch/arm/lib/crt0.S 91board_init_f(117)							board/samsung/ok6410a/ok6410a.c 266debug_uart_init(271) 					include/debug_uart.h 193_debug_uart_init(196) 				drivers/serial/s3c64xx_serial.c 315	board_init_r(177) 							common/spl/spl.c 589spl_board_init(641) 					board/samsung/ok6410a/ok6410a.c 255memset(&spl_image, '\0', sizeof(spl_image)); // u-boot.imgspl_image.boot_device = 0xdeadbeef;// 得到 u-boot.img在的 device类型board_boot_order(spl_boot_list);spl_boot_list[0] = spl_boot_device();ok6410a_get_boot_device// 通过device类型得到 loader函数// 用 loader 函数加载 u-boot.img 到 ddrboot_from_devices(&spl_image, spl_boot_list, (sizeof(spl_boot_list) / sizeof((spl_boot_list)[0])));loader = spl_ll_find_loader(spl_boot_list[i]);spl_load_image(spl_image, loader);loader->load_image/spl_mmc_load_imagespl_mmc_load...spl_parse_image_headerspl_parse_legacy_headerspl_image->load_addr = image_get_load(header);spl_image->entry_point = image_get_ep(header);spl_image->size = image_get_data_size(header);// 需要 打补丁的赶紧打补丁 // 比如说 你的 u-boot.img 有问题,解析出来的 entry_point  不对// 就需要重新为 entry_point  赋值// 一般为nullspl_perform_fixups(&spl_image);switch (spl_image.os) {case IH_OS_U_BOOT:break;}// 一般为nullspl_board_prepare_for_bootjump_to_image_no_args(&spl_image);image_entry_noargs_t image_entry = (image_entry_noargs_t)spl_image->entry_point;image_entry

这篇关于OK6410A 开发板 (三) 8 u-boot-2021.01 boot 解析 SPL镜像运行部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007928

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1