【uboot移植】基于samsung移植过的uboot(一)

2023-11-11 10:21
文章标签 uboot 移植 samsung

本文主要是介绍【uboot移植】基于samsung移植过的uboot(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

准备工作

我这边获取到了三星关于其开发板smdkv210移植过的uboot源代码,当然这个代码也是三星基于uboot官方的某一版本开发的。三星出的开发板会卖给一些大代理商,因此源代码也会随之流出。

分头在windows的共享文件夹、ubuntu中各解压,便于看代码和编译,以及修改文件之后方便拷贝。

对于我们看代码来说,为了避免在SourceInsight中看到太多的重名文件,我们最好对其目录下的cpu、board文件夹下的文件进行删减。cpu下仅留下s5pc11x,board下仅留下samsung。

尝试运行

一般来说,我们使用的开发板是基于三星出的开发板的硬件基础上进行了一定的修改或裁剪。因此,我们开发板使用的uboot与Samsung使用的开发板uboot,其实很大程度上存在相似。由此,我们可以尝试直接将Samsung的uboot在我们的开发板上跑一下。

一、那既然要跑一下的话,我们先看Makefile中的交叉编译工具链(CROSS_COMPILE) 是否配置正确。ubuntu对应的目录也安装了该工具链。在这里插入图片描述
二、交叉编译工具链检查好之后,我们可以尝试编译了,uboot在编译前需要先配置,make xxx_config。但是这个uboot中并没有我们开发板相关的配置项以及配置头文件。我们开发板x210是基于三星开发板smdkv210开发的,因此找到smdkv210的配置项。有5个开发板,我们就随便选一个吧,第一个mdkv210single_config(理论上如果知道哪个与我们开发板更类似就选取哪个),mdkv210single_config对应include/configs/smdkv210single.h头文件。
在这里插入图片描述
make smdkv210single_config之后make。然后通过烧录脚本进行烧录,这里的烧录脚本中执行的两个文件sd_fdisk、mkbl1(分别是sd_fdisk.c、C110-EVT1-mkbl1.c编译而来的)是x86-64架构的,三星上传到时候没有将其clean。我们重新将这两个文件make一下,得到 Intel 80386版本的。

然后运行,运行结果是:
第一,串口无输出;
第二,开发板供电锁存成功。
那么可以得出结论:错误在开发板供电锁存代码和串口初始化打印"O"代码之间死掉了。

顺藤摸瓜找错误点

找到中间段的一些代码,通过led去找到卡死的函数为PMIC_InitIp(PMIC是电源管理芯片),因为我们开发板没有PMIC,因此这个函数内部向PMIC发送I2C接口的命令时会死循环,所以屏蔽这里之后问题解决。
在这里插入图片描述
找的问题所在点之后,把led的代码去掉,重新启动。
在这里插入图片描述
那后uboot卡在了打印“NAND:”之后,我们搜索之后锁定到了lib_arm/board.c中。结合分析调用顺序以及加打印确认(串口已经初始化了),锁定到了start_armboot函数中Board Specific这一系列的defined(CONFIG_SMDKC110)中的nand_init这个函数。
在这里插入图片描述
但是定位到这个函数之后,继续加打印定位。最后其调用关系如下:
drivers/mtd/nand/nand.c中nand_init( )
nand_init_chip( )
cpu/s5pc11x/nand.c中的board_nand_init( )

在这里插入图片描述
最后定位到了这一句,这句代码是在等待引脚的预备状态。按理说这些地方应该是不需要改动的,因此应该是前置步骤的某些配置相关出问题了。

所以分析到这就先不往下分析了,后续从前面的打印内容来查问题。

这篇关于【uboot移植】基于samsung移植过的uboot(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.

libmad音频解码库-Linux交叉编译移植

下载并解压libmad-0.15.1b.tar.gz 下载链接:https://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz $tar -xvf libmad-0.15.1b.tar.gz$cd libmad-0.15.1b 1、先执行下面的命令:这条命令是为了适配高版本的gcc,因为高版本的gcc已经将-fforce-mem去除了:

arm linux lua移植

lua: lua home 1.下载lua源码 lua下载 lua-5.3.4.tar.gz 2.解压: tar xvf lua-5.3.4.tar.gz 3.修改makefile and luaconf.h $修改 lua-5.3.4/Makefile #INSTALL_TOP= /usr/local INSTALL_TOP= $(shell pwd)/out #修改安装目录(当前目录/o

笔记整理—uboot番外(6)针对x210的网卡说明

对于x210而言,在三星中与九鼎官方的uboot都默认使用了二号串口。详见CONFIG_SERIALn(n=1~4)。         更改串口后,应先插回原串口,进行iROM打印,内部iNnad校验核失败的信息,之后再插入其串口进行启动。         修改CCONFIG_NETMASK等多个宏可以修改默认的网络环境。在进行完成修改后,如果依旧没进行改变,则应对iNand

s3c2440---PWM使用之蜂鸣器驱动移植

一、蜂鸣器驱动介绍 1.1.什么是蜂鸣器               蜂鸣器是一种简单的声响发生器,常用于电子产品中作为警示或提醒作用。其基本原理是通过交替改变直流电的电压方向来产生声音,一般使用交替电流产生声音会比较稳定。 1.2.蜂鸣器的类别 1.有源蜂鸣器 1)结构原理 有源蜂鸣器内部自带振荡源,只需接通电源即可发声。内部电路会自动产生一定频率的振荡信号,从而驱动蜂鸣器发声。

PetaLinux Linux Uboot 源码路径

在很早以前的版本,直接在创建的工程下面就可以找到内核源码和uboot源码。后面的版本采用的是网络下载编译,诸如2018.3 编译完成自动删除,如果想保留,可以在创建的工程下面 $ vim ./project-spec/meta-user/conf/petalinuxbsp.conf 加入RM_WORK_EXCLUDE += "linux-xlnx"RM_WORK_EXCLUDE += "u

【GD32】---- 移植工程模板及点灯测试

1 新建模板文件夹 新建一个名叫03_GD32TemplateProject的文件夹,用于建造工程模板 2 移植官方库文件 在模板文件夹里新建5个文件夹,分别存放官方库文件和系统驱动文件 01_main 存放main函数 02_Startup 存放系统启动文件 03_System 存放官方的系统文件 04_Firmware_PeripheralDriver 存放官方

[rk3588 ubuntu20.04]移植ROS2

目录 1 使用命令行安装ROS2 1.1设置语言 1.2添加源 1.3安装ROS2 1.4设置环境变量 2 在编译源码阶段安装ROS2 2.1调整roofts.img大小 2.2 安装ROS2 3 ROS2功能测试 1 使用命令行安装ROS2 1.1设置语言         设置语言为UTF-8。 sudo apt update && sudo apt insta

新路程----海思 uboot(1)

先看start.s吧 .globl _start //.global声明_start为全局符号,_start就会被连接器链接到,也就是链接脚本中的入口地址了。_start: b reset //跳转到reset 下面的代码是设置arm的异常向量表ldr pc, _undefined_instruction //把label后的数据或者指令内容赋值给pcldr pc, _softw