uboot回头看(一)

2024-01-15 18:38
文章标签 uboot 回头

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

最近在认真的研究uboot,想把这个弄明白,之前也移植过相关的uboot到开发板上,都是跟着教程在做,回头想想还是不明白为什么这样做,最近在认真的思考为啥这样,也看了一部分资料。主要还是得参考处理器的数据手册,我的板子是九鼎的X210开发板,参考Samsung的数据手册,对理解uboot有很大的帮助,尤其是IROM的编程的那个手册,非常有用,下图是X210中关于IROM和IRAM的映射图,参考这个,会更好地理解uboot在干啥。
在一开始系统上电的时候,CPU会将SD卡或者Flash等启动设备的前16KB加载到自己的SRAM中去运行,因此当你的uboot程序大于16KB时,就需要考虑怎么处理。uboot的处理方案是,在这16KB的程序中,要完成一些必备的工作(这里是uboot的第一阶段在SRAM中运行,比如构建异常向量表,设置CPU为SVC模式,初始化时钟、DDR,重定位,建立映射表等)然后将整个程序拷贝到DDR中,然后再跳转过去运行(跳转到的是uboot的第二阶段,也就是在DRAM中运行)。在这里插入图片描述
这个图是S5PV210的内存地址映射,这4G空间的分配是相当清晰了。当我们在uboot的中将DDR初始化之后,就可以使用外部的DDR了,X210上使用的DDR是512M字节,接在了DRAM0的上半部分256MB和DRAM1的下半部分256MB。S5PV210最大支持1.5G的DDR。X210只接了512MB的物理内存。之后需要看看看uboot中的内存分配。
在这里插入图片描述

这篇关于uboot回头看(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

PetaLinux Linux Uboot 源码路径

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

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

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

新路程------uboot环境变量没生效

之前刷文件系统一种出错,出错log如下 hisilicon # sf probe 0;mw.b 0x82000000 0xff 0x1800000;tftp 0x82000000 rootfs_ucl ibc_64k.jffs2;sf erase 0x500000 0x1800000;sf write 0x82000000 0x500000 0x1800000 32768 KiB h

uboot中添加一条自己的命令-Nazgul

uboot中添加XNazgul命令三部曲 1、在unsp210_u-boot\include\configs\unsp210.h中添加一项宏定义 #define CONFIG_CMD_XNazgul 1 主要是为了防止后面命令实现的时候出现重复的命令 2、在common文件夹下建立cmd_XNazgul.c 文件内容 #include <comm

追踪uboot下tftp命令的代码执行过程-Nagul

一、网卡驱动的添加  网络在uboot中的启动是在uboot的第二阶段启动代码中 /lib_arm/board.c [cpp]  view plain copy void start_armboot (void){}   里面有网络初始化函数 [cpp]  view plain copy eth_initialize(gd->bd)

笔记整理—内核!启动!—uboot部分(3)uboot启动内核传参

uboot会以tag的方式给内核传递参数,tag是一个数据结构,在uboot中与linux_kernel中都有相同的结构。         kernel接收到的传参由若干个tag构成,从tag_start到tag_end之间的数据构成,读到start时开始传参,end结束传参。  CONFIG_SETUP_MEMORY_TAGS 宏会去找对应的tag_mem,其内容

笔记整理—内核!启动!—uboot部分(1)

常规启动时,各镜像都在SD卡中的各种分区中,内核放在kernel分区,从SD卡到DDR的连接处(内核不需要进行重定位,直接从链接处启动)。uboot从sd卡分区读使用movi命令。         使用fastboot指令可以查看分区情况;movi read可以用于读取kernel,读取完成后使用bootm启动。 对于x210而言是movi read kernel 0x300

笔记 10 : 彭老师课本第 5 章 , GPIO , vim 的复制剪切删除 ; uboot读写内存的 md , nm 命令

(77) 进入代码实验以来,开始有机会频繁的修改源代码。补充 vim 的使用: ++ (78) 如何只查看某个文件的权限,属性: (79) 关于 rm 命令: (80) 接着学习 新的 Uboot 命令: md/nm 显示内存与修改内存: uboot 有很多不错的调试命令。之前学习和使用了 loadb 指令指定指令的加载地址, 如 40008000 H: ++ nm

qemu利用uboot启动

进入qemu可以先ping一下主机 qemu已经内部分配了ip地址实现主机(10.0.2.2)与虚拟机(10.0.2.15)的通信 tftp:可以在qemu启动时输入参数-tftp /var/lib/tftpboot,也可以在uboot中执行tftp ${...} ... 主机上tftpd服务的重启:sudo /etc/init.d/tftpd-hpa restart uboot编译