(6)上面一步出错的异常处理 (7)lmb_reserve 这个函数在hi3521a中没有实现,实际是一个空函数 (8)获取linux启动启动内核的函数地址 (9)调用启动内核的函数,在海思设备上,实际上是调用函数do_bootm_linux, (10)正常情况在上一步就已经将控制权移交到kernel去运行了,不会运行到这里,如果运行到这里表示出现错误了...
调用lmb_reserve将image 占用的内存大小和区域设置为已经使用的区域。调用bootm_find_images去找到dtb 文件,并且将地址和长度信息,存储到全局变量images中。做完以上之后,就会调用do_bootm_states,并且设置对应状态 启动inux。static int bootz_start(cmd_tbl_t *cmdtp, int flag, int argc, ...
/* Create a new LMB reservation */ if (lmb) lmb_reserve(lmb, (ulong)blob, of_size); fdt_initrd(blob, *initrd_start, *initrd_end); if (!ft_verify_fdt(blob)) goto err; #if defined(CONFIG_SOC_KEYSTONE) if (IMAGE_OF_BOARD_SETUP) ft_board_setup_ex(blob, gd- >bd); #endif ret...
验。7. bootm_start_lmb();//不做任何有意义的⼯作,除了定义# define lmb_reserve(lmb, base, size)8. /* get kernel image header, start address and length */寻找可⽤的内核镜像,见下⾯的分析。主要根据传 ⼊的参数检查镜像的合法性并获取信息。9. os_hdr = boot_get_kernel (c...
lmb_reserve(&images.lmb,images.os.load, (load_end - images.os.load)); if (images.os.type == IH_TYPE_STANDALONE) { if (iflag) enable_interrupts(); /* This may return when 'autostart' is 'no' */ bootm_start_standalone(iflag, argc, argv); ...
lmb_reserve(&images->lmb, images->os.load, (load_end - images->os.load)); 重定位ramfs 设置设备树区域 /* 获得启动的函数(根据系统类型)。本处是do_bootm_linux */ boot_fn = bootm_os_get_boot_func(images->os.os); ...
("* kernel: cmdline image address = 0x%08lx\n", images->ep); } ret = bootz_setup(images->ep, &zi_start, &zi_end); if (ret != 0) return 1; lmb_reserve(&images->lmb, images->ep, zi_end - zi_start); /* * Handle the BOOTM_STATE_FINDOTHER state ou...
end = relocated_addr + image_size; lmb_reserve(&images->lmb, images->ep, le32_to_cpu(image_size)); //调用函数 bootm_find_images 查找 ramdisk 和设备树(dtb)文件,但是我们没有用到 ramdisk,因此此函数在这里仅仅用于查找设备树(dtb)文件,此函数稍后也会讲解 if (bootm_find_images(flag, argc, ...
lmb_reserve(&images-》lmb, images-》os.load, (load_end - images-》os.load)); else if (ret && ret != BOOTM_ERR_OVERLAP) goto err; else if (ret == BOOTM_ERR_OVERLAP) ret = 0; #if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY) ...
bootm_start_lmb();//不做任何有意义的工作,除了定义# define lmb_reserve(lmb, base, size) /* get kernel image header, start address and length */寻找可用的内核镜像,见下面的分析。主要根据传入的参数检查镜像的合法性并获取信息。 os_hdr = boot_get_kernel (cmdtp, flag, argc, argv, &images,...