uboot 最重要的变量存储结构体gd
来源:互联网 发布:鼠标手写输入法 mac 编辑:程序博客网 时间:2024/05/29 03:20
一直用source insight找gd变量的定义都没找到,后来发现例如typedef int (init_fnc_t) (void); 以及#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")之类si都是无法辨别为定义的。所以比较难找
经过不懈努力终于发现了定义位置。我用的是arm板子,该定义在cpu/sam-arm/Global_data.h中定义
先定义一个gd_t的结构体,里面具体的含义就自行脑补了
typedef structglobal_data {
bd_t *bd;
unsigned long flags;
unsigned long baudrate;
unsigned long have_console; /* serial_init() was called */
unsigned long reloc_off; /* Relocation Offset */
unsigned long env_addr; /* Address of Environment struct */
unsigned long env_valid; /* Checksum of Environment valid? */
unsigned long fb_base; /* base address of frame buffer */
#ifdef CONFIG_VFD
unsigned char vfd_type; /* display type */
#endif
#if 0
unsigned long cpu_clk; /* CPU clock in Hz!*/
unsigned long bus_clk;
unsigned long ram_size; /* RAM size */
unsigned long reset_status; /* reset status register at boot */
#endif
void **jt;/* jump table */
} gd_t;
然后在后面用#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")将gd的位置存储在r8寄存器中,
这个宏信息量比较大啊。
gd_t结构体中包含了另外一个比较重要的结构体bd_t,该定义在U-bot.h中定义
typedef struct bd_info {
int bi_baudrate;/* serial console baudrate */
unsigned long bi_ip_addr;/* IP Address */
unsigned char bi_enetaddr[6]; /* Ethernet adress */
struct environment_s *bi_env;
ulong bi_arch_number;/* unique id for this board */
ulong bi_boot_params;/* where this board expects params */
struct /* RAM configuration */
{
ulong start;
ulong size;
} bi_dram[CONFIG_NR_DRAM_BANKS];
#ifdef CONFIG_HAS_ETH1
/* second onboard ethernet port */
unsigned char bi_enet1addr[6];
#endif
} bd_t;
具体内容就看后面注释了,都是初始化用的。
- uboot 最重要的变量存储结构体gd
- uboot的全局变量gd
- uboot中gd的定义和使用
- 通过结构体与静态变量组成的存储
- uboot中gd全局变量
- uboot的目录结构
- uboot的目录结构
- php变量存储结构
- U-boot中的gd结构体
- U-boot中的gd结构体
- U-boot中的gd结构体
- ROS中最重要的变量$ROS_PACKAGE_PATH
- 结构体的存储
- uboot的两大环境变量
- C语言中结构体中变量存储的对齐问题
- C/C++中结构体与类成员变量在存储上的内存对齐问题
- C和指针之结构体大小和成员变量位置距离结构开始存储的位置偏移字节
- gd变量声明
- w3m 里设置键位映射
- 创建Material Design风格的Android应用--应用主题
- libsvm遥感图像的分类(MATLAB中进行)
- 1、黑马程序员-OC语言前期准备
- iPhone开发技巧之环境篇(7)--- 区分不同版本的iPhone
- uboot 最重要的变量存储结构体gd
- 技能冷却图标实现
- Android初学之安全卫士中号码归属地背景设置(弹出对话框)
- CentOS6.5下docker的安装及遇到的问题和简单使用
- 浏览器如何进行简单的测试
- 第14周项目2.3.2 从文件中读取按名字排序的成绩单
- leetcode:Linked List Cycle
- VC6.0打开程序进程和操作进程
- Hibernate核心API