在启动过程中,确保At91bootstrap成功地加载了应用程序代码。可以通过一些调试工具来检查问题所在。代码示例:
#define CONFIG_DEBUG_AT91_MCI
#define CONFIG_BOARD_LATE_INIT
int board_late_init(void)
{
char ver[VERSION_SIZE];
memset(ver, 0, VERSION_SIZE);
strcpy(ver, "U-BOOT ");
strcat(ver, PLAIN_VERSION);
strcat(ver, " (" U_BOOT_DATE " - " U_BOOT_TIME ")");
debug("U-Boot %s\n", ver);
return 0;
}
#include
#define CONFIG_GENERIC_ATMEL_MCI
#define CONFIG_SYS_MMC_MAX_DEVICE 1
#define CONFIG_SYS_MMC_MAX_BLK_COUNT 64
int mmc_initialize(bd_t *bis)
{
int ret;
struct mmc *mmc;
ret = atmel_mci_init();
if (ret != 0) {
panic("Failed to init MCI controller\n");
return -1;
}
mmc = mmc_create(0, NULL);
if (mmc == NULL) {
panic("Failed to create MMC device\n");
return -1;
}
ret = mmc_init(mmc);
if (ret != 0) {
panic("Failed to init MMC\n");
return -1;
}
ret = mmc_detect_card(mmc);
if (ret != 0) {
panic("Failed to detect MMC card\n");
return -1;
}
ret = blk_register_device(bis, "mmc", 0, CONFIG_SYS_MMC_MAX_BLK_COUNT,
mmc_block_dev_desc, 0);
if (ret < 0) {
panic("Failed to register MMC block device\n");
return -1;
}
return 0;
}
int board_late_init(void)
{
struct mmc *mmc;
int ret;
ret = mmc_initialize(&bd);
if (ret != 0)
return -1;
mmc = find_mmc_device(0);
if (mmc == NULL)
return -1;
ret = fat_register_device(mmc, 1, CONFIG_SYS_MMC_MAX_BLK_COUNT,
"mmc", "/");
if (ret != 0)
return -1;
return 0;
}