OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7907|回复: 7

imx6 uboot重定位的一个疑问

[复制链接]

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2020-4-12 15:53:39 | 显示全部楼层 |阅读模式
10金钱
32.2.5 board_init_f函数详解           
            初始化 gd 的各个成员变量,uboot 会将自己重定位到 DRAM 最后面的地址区域,也就是将自己拷贝到 DRAM 最后面的内存区域中。这么做的目的是给 Linux 腾出空间,防止 Linuxkernel 覆盖掉 uboot,将 DRAM 前面的区域完整的空出来。在拷贝之前肯定要给 uboot 各部分分配好内存位置和大小,比如 gd 应该存放到哪个位置,malloc 内存池应该存放到哪个位置等等。这些信息都保存在 gd 的成员变量中,因此要对 gd 的这些成员变量做初始化。最终形成一个完整的内存“分配图”,在后面重定位 uboot 的时候就会用到这个内存“分配图”。

       上面是原子哥imx6 嵌入式Linux驱动开发指南中讲解uboot流程中的一段话,对于上面红色部分不太理解,有两个疑问如下。

       1.首先uboot为什么不一开始就把链接设置到DRAM的后面地址呢?反正后面要重定位到DRAM地址的最后面区域,我为啥不一开始链接地址就设置到后面,这样不就可以不重定位了吗?

       2.为什么要给linux腾出空间防止Linux kernel覆盖uboot,  uboot跳转到linux kernel之后 uboot就不需要了,为什么要担心Linux kernel覆盖掉uboot



Selection_044.png

最佳答案

查看完整内容[请看2#楼]

uboot为什么不一开始链接到最后面的位置?那是因为根本就没法预测你的DDR范围有多大,不同的板子DDR大小不同,地址范围就不同,但是对于一款芯片而言,DDR的起始地址确实定的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-4-12 15:53:40 | 显示全部楼层
uboot为什么不一开始链接到最后面的位置?那是因为根本就没法预测你的DDR范围有多大,不同的板子DDR大小不同,地址范围就不同,但是对于一款芯片而言,DDR的起始地址确实定的。
开往春天的手扶拖拉机
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2019-8-20
在线时间
83 小时
发表于 2020-4-13 15:43:30 | 显示全部楼层
个人浅见:
1. 因为gd需要进行设置,如果直接链接到后面,可以我觉得可以,但是gd的值还需要再计算一遍,等于开销和前面一样。反而变得可读性差了代码。。
2.我认为可以覆盖,但是我们还有u-boot命令行情况下的调试,放到最后命令行中可以用的ram就敞开了。。不然容易打架
回复

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
 楼主| 发表于 2020-4-13 20:13:59 | 显示全部楼层
zuozhongkai 发表于 2020-4-13 16:51
uboot为什么不一开始链接到最后面的位置?那是因为根本就没法预测你的DDR范围有多大,不同的板子DDR大小不 ...

这个很有道理,一下子就解开了心中的疑惑
回复

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
 楼主| 发表于 2020-4-13 20:14:33 | 显示全部楼层
sn3707 发表于 2020-4-13 15:43
个人浅见:
1. 因为gd需要进行设置,如果直接链接到后面,可以我觉得可以,但是gd的值还需要再计算一遍, ...

谢谢你的回复
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2017-4-18
在线时间
17 小时
发表于 2021-2-18 14:14:38 | 显示全部楼层
2.为什么要给linux腾出空间防止Linux kernel覆盖uboot,  uboot跳转到linux kernel之后 uboot就不需要了,为什么要担心Linux kernel覆盖掉uboot
对于这个疑问呢?
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2017-4-18
在线时间
17 小时
发表于 2021-2-18 14:15:10 | 显示全部楼层
2.为什么要给linux腾出空间防止Linux kernel覆盖uboot,  uboot跳转到linux kernel之后 uboot就不需要了,为什么要担心Linux kernel覆盖掉uboot
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2021-8-29
在线时间
12 小时
发表于 2021-9-7 16:01:21 | 显示全部楼层
这个问题,感觉还是缺乏让人心服口服的解答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表