首页 > uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题

uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题

uboot启动Linux内核过程分为4大步骤:

在这里插入图片描述

问题2: uboot阶段DDR的分区的问题

上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢?

分清楚这两个概念:

链接地址:链接时指定的地址(指定方式为:Makefile中用-Ttext,或者链接脚本)

运行地址:程序实际运行时地址(指定方式:由实际运行时被加载到内存的哪个位置说了算)

此问题中的提及的位置是链接地址,在由Makefile中用-Ttext,或者链接脚本指定的

  1. Uboot放在DDR中的什么位置

    是用Makefile中的-Ttext指定的。查看code:

    在这里插入图片描述

    TEXT_BASE是将来我们整个uboot链接时指定的链接地址。因为uboot中启用了虚拟地址映射,这个虚拟地址0xC3E0 0000地址对应的物理地址就等于0x33E0 0000,所以我们会将uboot加载到DDR中的起始位置是0x33E0 0000,加载调用的code 如下:

    在这里插入图片描述

    0表示通道0;MOVI_BL2_POS是uboot的第二部分在SD卡中的开始扇区,这个扇区数字必须和烧录uboot时烧录的位置相同;MOVI_BL2_BLKCNT是uboot的长度占用的扇区数;CFG_PHY_UBOOT_BASE是重定位时将uboot的第二部分复制到DDR中的起始地址(0x33E00000).

  2. Kernel 镜像要放在DDR的什么地址?

    内核一定要放在链接地址处,链接地址去内核源代码的链接脚本或者Makefile中去查找。X210中是0x30008000。

    遗留问题: 内核的链接脚本后续要截屏放在这里

    在uboot中通过执行如下命令将kernel加载到DDR中:

    movi read kernel 30008000

    (其中kernel指的是uboot中的kernel分区)

  3. 总结

    Uboot/kernel要拷贝到DDR中的物理地址;

    链接脚本或-Ttext 指定的是程序运行的虚拟地址;

在这里插入图片描述

更多相关:

  • 51 三菱PLC可读不可写Q:MT8102IQ和三菱Q系列PLC通讯,屏无法写入PLC,但是可以读取PLC的状态和数值?A:PLC程序中"允许RUN中写入"打钩,程序下载重启后解决。52 控制不了输入点Q:触摸屏做了三菱PLC的X点的元件,但是控制不了X输出?A:是的,PLC端X点无法通过触摸屏控制输出,屏上只能做X点的显示。53 M...

  • 传统方法(仅适用于普通项目):   1、在vscode中安装 Live Server 插件: 2、安装成功后,vscode右下角会有 Go Live 标识点击: 3、cmd ipconfig 查询自己电脑的ip地址: 4、复制地址替换端口前的地址(http://127.0.0.1:8080修改为http://192.168....

  • ngx_http_geo_module模块,默认情况下,nginx会加载,除非人为的 --without-http_geo_module。 这个模块提供了一个非常好用的geo指令,可以用它来创建变量,诞生其值依赖于客户端IP地址。 ngx_http_geo_module 模块官网地址 http://nginx.org/en...

  • 在Linux系统中,以32bit x86系统来说,进程的4GB内存空间(虚拟地址空间)被划分成为两个部分 ------用户空间和内核空间,大小分别为0-3G,3-4G。        用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。          每个进程的用户空间存放用户的程序和代码(堆栈,数据区,代码区等)...

  • 今天,小编给大家带来的教程为:前嗅ForeSpider脚本教程中,链接抽取的应用场景,以及链接在源码的html标签里写脚本的实战教程。具体内容如下:一.应用场景当需要手动添加链接时,可添加链接脚本。在“链接脚本处”,可能用到的类为extractor 、result、url、grabDoc、dom。二.链接在源码的html标签里链接地址...

  • 问题 项目中需要链接多个静态库,在编译的时候报错如下 sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm+0x30):对‘H264ENC_StatusGet(H264ENC_Status_t&)’未定义的引用 可能原因是符号确实没有定义,而本文出现这个问题的原因是,链接的静态库有前后...

  • 上一篇文章里大概描述linux下静态链接库的编译与使用,下面讲动态链接库的编译与使用方法。 1. 什么是动态链接库     所谓动态链接库,是指编译的时候不会把程序引用到的库插入到执行程序里,而是在执行时候才会去加载相关的库,所有用到此库的程序可以共享一份代码。     这样带来的好处是可执行程序所占的空间变小了,同时,如果库需要升...

  • 人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而笔者当初设计时没有考虑到这一点,使得这些URL链接或Email地址只能以文字的形式而并不是以超链接的形式显示,其它浏览帖子的人还必须把这些URL链接拷贝到浏览器中或把Email地址拷贝到Outlook中才能转到相应的链接地址或发送电子邮件到相应的Email地址。   发现这...

  • iPhone上的Safari(还有些webkit android手机浏览器)会自动对看起来像是电话号码的数字串(包括已经加入连字符或括号格式化过的)添加电话链接,点击之后会询问用户是否想要拨打该号码。如果你不希望开启这个自动识别,可以将它关闭:

    uboot引导kernel - 3 -uboot给内核传参详解

    uboot中执行theKernel函数后,kernel正式启动。如下函数,我们发现有3个参数。 1. 参数 0; 2. 参数machid; 如下code 中获取machid, gd是个全局变量. 2.1 bi_arch_number是board_info中的一个元素,含义是:开发板的机器码。所谓机器码就是uboot给这个开发板定...