[uboot] (番外篇)global | 您所在的位置:网站首页 › 番外的定义 › [uboot] (番外篇)global |
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例 [uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2) [uboot] (第一章)uboot流程——概述 [uboot] (第二章)uboot流程——uboot-spl编译流程 =================================================================================== 一、global_data功能 1、global_data存在的意义在某些情况下,uboot是在某些只读存储器上运行,比如ROM、nor flash等等。 在uboot被重定向到RAM(可读可写)之前,我们都无法写入数据,更无法通过全局变量来传递数据。 而global_data则是为了解决这个问题。 这里顺便一下,后续的uboot的relocation操作,也就是uboot的重定向操作,最主要的目的也是为了解决这个问题,后续会专门说明。 2、 global_data简单介绍global_data又称之为GD. 简单地说,uboot把global_data放在RAM区,并且使用global_data来存储全局数据。由此来解决上述场景中无法使用全局变量的问题。 二、global_data数据结构 1、数据结构说明global_data数据结构结构体定义为struct global_data,被typedef为gd_t。 也就是说可以直接通过struct global_data或者gd_t来进行声明。 struct global_data定义如下(过滤掉一些被宏定义包含的部分): include/asm-generic/global_data.h typedef struct global_data { bd_t *bd; unsigned long flags; unsigned int baudrate; unsigned long cpu_clk; /* CPU clock in Hz! */ unsigned long bus_clk; /* We cannot bracket this with CONFIG_PCI due to mpc5xxx */ unsigned long pci_clk; unsigned long mem_clk; unsigned long have_console; /* serial_init() was called * |
CopyRight 2018-2019 实验室设备网 版权所有 |