源码参考九鼎科技移植的X210开发板捆绑BSP中的uboot, 版本为1.3.4
mmc初始化函数int mmc_initialize(bd_t *bis)在uboot/lib_arm/board.c中的start_armboot()函数中被调用(uboot的C语言阶段)
puts ("SD/MMC: ");
mmc_exist = mmc_initialize(gd->bd);
1. 函数本体在uboot/mmc/mmc.c中
INIT_LIST_HEAD(&mmc_devices);
cur_dev_num = 0;
mmc_devices是一个mmc.c中定义的内核链表类型的全局变量
struct list_head {
struct list_head *next, *prev;
};
static struct list_head mmc_devices;
INIT_LIST_HEAD初始化mmc_devices, 将next, prev都指向自己,表示目前没有已注册的mmc设备, cur_dev_num被相应初始化为0
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next