Raspberry Pi上MMC初始化流程与uboot控制详解
需积分: 16 20 浏览量
更新于2024-09-11
收藏 5KB TXT 举报
本文档主要探讨了在Linux单片机启动过程中MMC(MultiMedia Card)与U-Boot交互的详细流程,特别是针对Raspberry Pi平台。MMC初始化过程从`initr_mmc`函数开始,该函数负责打印相关信息并调用`mmc_initialize`来初始化MMC模块。`mmc_initialize`函数的核心步骤包括:
1. **初始化MMC设备列表**:首先清空`mmc_devices`链表,并设置当前设备计数器`cur_dev_num`为0。这里提到了一个关键函数`board_mmc_init`,它在Raspberry Pi的硬件初始化中扮演重要角色,用于注册SD卡设备。
2. **`board_mmc_init`函数**:这个函数具体执行了BCM2835 SDHCI控制器的初始化,通过调用`bcm2835_sdhci_init`函数设置了SDHCI的基地址和时钟频率。接着,它创建了一个`struct mmc`对象,将其添加到`mmc_devices`链表的尾部,从而完成SD卡设备的注册。
3. **MMC设备预初始化**:如果系统不是SPL(Single-Partition Loader)模式,`do_preinit`函数会被执行,遍历`mmc_devices`链表,对每个设备执行`mmc_start_init`,此函数可能涉及设备的进一步配置或初始化。
4. **mmc_create函数**:在这个过程中,`mmc_create`函数被调用,它内部可能包含了`preinit`成员的设置,这个成员可能是对设备进行预初始化操作的一部分。
5. **设备搜索和操作**:文档未提供`mmc_start_init`的具体实现,但可以推测它会根据`preinit`成员的值执行相应的初始化操作。最后,如果一切正常,函数返回0,表示MMC初始化成功。
总结来说,本文档详细解释了在Raspberry Pi的U-Boot环境中,如何通过MMC初始化流程来加载和配置SD卡设备。理解这个过程对于开发针对该平台的嵌入式系统至关重要,包括硬件驱动的集成、系统引导顺序以及设备的正确识别和初始化。
390 浏览量
点击了解资源详情
235 浏览量
2022-08-08 上传
250 浏览量
380 浏览量
1005 浏览量
178 浏览量
435 浏览量
凯eleven
- 粉丝: 0
- 资源: 1