整个流程就是在uboot下,识别出sd卡,接着对sd卡进行vfat格式化,根据文件名读出升级包数据到内存,然后对升级包进行解析,解析出对应分区的镜像文件,进行分区的烧写升级。
以SD卡mmc设备为例
static int mmc_stor_init(void)
{
struct mmc *mmc;
int dev_num=0;
#ifdef CONFIG_EMMC
dev_num=1;
#else
dev_num=0;
#endif
mmc = find_mmc_device(dev_num);
if (NULL == mmc) {
printf("No mmc driver found!\n");
return -1;
}
return 0;
}
static void mmc_stor_exit(void)
{
}
struct mtd_info *nand_flash;
static int nand_flash_init(void)
{
nand_flash = get_nand_dev_by_index(0);
return 0;
}
static int nand_flash_erase(unsigned long offset, unsigned long len)
{
int ret;
unsigned long erase_len;
unsigned long erase_step;
unsigned long length;
nand_erase_options_t opts;
memset(&opts, 0, sizeof(opts));
length = len;
erase_step = nand_flash->erasesize;
erase_len = length;
opts.length = erase_step;
opts.offset = offset;
opts.quiet = 1;
while (length > 0) {
if (length < erase_step)
erase_step &#