深入解析board.c:UBOOT移植关键

4星 · 超过85%的资源 需积分: 20 12 下载量 46 浏览量 更新于2024-12-14 收藏 91KB DOC 举报
"对board.c文件的深入分析,涵盖了u-boot移植的关键知识点,包括全局数据结构gd_t和bd_t的解析" 在u-boot的源代码中,`board.c` 文件扮演着核心角色,它包含了特定硬件平台的初始化逻辑,是u-boot进行系统移植的重要组成部分。本文将详细探讨`board.c` 中涉及的两个关键数据结构:gd_t 和 bd_t,以及它们在u-boot启动过程中的作用。 首先,gd_t(global data)结构体是u-boot全局信息的存储库,它保存了启动过程中所需的各种配置信息和状态标志。例如: 1. `bd_t* bd` 指针指向bd_t结构体,包含了与目标板相关的硬件配置信息。 2. `unsigned long flags` 存储各种标志位,用于指示u-boot的不同状态。 3. `unsigned long baudrate` 是串行通信的波特率设置。 4. `unsigned long reloc_off` 表示重定位偏移,u-boot在运行过程中可能需要重新定位其内存映像。 5. `unsigned long env_addr` 是环境变量结构的地址,u-boot的环境变量存储在这里。 6. `void **jt` 是跳转表,包含了u-boot中各种函数的入口地址。 gd_t中的其他成员如CPU时钟频率、总线时钟频率、RAM大小等,在某些配置下可能也会被用到,它们提供了对硬件平台的详细了解。 接下来,bd_t(board info)结构体则更具体地定义了与目标板相关的硬件参数: 1. `int bi_baudrate` 是串行控制台的波特率,用于初始化串口通信。 2. `unsigned long bi_ip_addr` 存储了板子的IP地址,如果网络功能被启用。 3. `unsigned char bi_enetaddr[6]` 保存以太网MAC地址,用于网络设备的初始化。 4. `struct environment_s *bi_env` 指向环境变量结构,与gd_t中的env_addr相对应。 bd_t结构通常由board-specific的初始化代码填充,这些代码根据实际硬件设置值来初始化各个字段。通过理解这两个数据结构,开发者可以更好地进行u-boot的移植工作,确保u-boot能够正确识别和配置目标硬件。 在移植u-boot到新的硬件平台时,需要修改`board.c` 文件以适应新平台的特性,包括但不限于初始化内存控制器、设置时钟频率、配置串口、网络接口以及其他外围设备。同时,还需要适配gd_t 和 bd_t 结构,以确保u-boot能正确读取和设置硬件参数。 此外,还需要注意的是,u-boot的环境变量管理功能允许用户在运行时配置和存储参数,这些变量通常存储在非易失性存储器中,如串行EEPROM或Flash。通过gd_t 的 `env_addr` 和 `env_valid` 字段,u-boot可以找到并验证这些环境变量的正确性。 对`board.c` 的深入理解是成功进行u-boot移植的基础,而gd_t 和 bd_t 数据结构的掌握则是这一过程的关键。通过熟悉这些结构,开发者能够更好地定制u-boot,使其满足不同硬件平台的需求。
2008-03-01 上传
2008-03-01 上传