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

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解