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

相关文章

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b