U-Boot启动引导内核分析(三).doc_第1页
U-Boot启动引导内核分析(三).doc_第2页
U-Boot启动引导内核分析(三).doc_第3页
U-Boot启动引导内核分析(三).doc_第4页
U-Boot启动引导内核分析(三).doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

U-Boot启动引导内核分析(三) 2011-03-23 09:20:51| 分类: 默认分类 | 标签: |字号大中小 订阅do_bootm_linux()函数位于lib_arm/Bootm.c文件中,主要流程分析如下:void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv, bootm_headers_t *images) ulong initrd_start, initrd_end; ulong ep = 0; bd_t *bd = gd-bd; char *s; int machid = bd-bi_arch_number; void (*theKernel)(int zero, int arch, uint params); int ret;#ifdef CONFIG_CMDLINE_TAG char *commandline = getenv (bootargs);#endif /* find kernel entry point */ if (images-legacy_hdr_valid) ep = image_get_ep (&images-legacy_hdr_os_copy);#if defined(CONFIG_FIT) else if (images-fit_uname_os) ret = fit_image_get_entry (images-fit_hdr_os, images-fit_noffset_os, &ep); if (ret) puts (Cant get entry point property!n); goto error; #endif else puts (Could not find kernel entry point!n); goto error; theKernel = (void (*)(int, int, uint)ep; s = getenv (machid); if (s) machid = simple_strtoul (s, NULL, 16); printf (Using machid 0x%x from environmentn, machid); ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_ARM, &initrd_start, &initrd_end); if (ret) goto error; show_boot_progress (15); debug (# Transferring control to Linux (at address %08lx) .n, (ulong) theKernel);#if defined (CONFIG_SETUP_MEMORY_TAGS) | defined (CONFIG_CMDLINE_TAG) | defined (CONFIG_INITRD_TAG) | defined (CONFIG_SERIAL_TAG) | defined (CONFIG_REVISION_TAG) | defined (CONFIG_LCD) | defined (CONFIG_VFD) /* 初始化TAG结构体开始 */ setup_start_tag (bd);#ifdef CONFIG_SERIAL_TAG setup_serial_tag (¶ms);#endif#ifdef CONFIG_REVISION_TAG setup_revision_tag (¶ms);#endif#ifdef CONFIG_SETUP_MEMORY_TAGS /* 设置RAM参数 */ setup_memory_tags (bd);#endif#ifdef CONFIG_CMDLINE_TAG setup_commandline_tag (bd, commandline);#endif#ifdef CONFIG_INITRD_TAG if (initrd_start & initrd_end) setup_initrd_tag (bd, initrd_start, initrd_end);#endif#if defined (CONFIG_VFD) | defined (CONFIG_LCD) setup_videolfb_tag (gd_t *) gd);#endif /* 初始化TAG结构体结束 */ setup_end_tag (bd);#endif /* we assume that the kernel is in place */ printf (nStarting kernel .nn);#ifdef CONFIG_USB_DEVICE extern void udc_disconnect (void); udc_disconnect (); #endif cleanup_before_linux (); /* 将控制权交给内核,让内核自解压启动 */ /* 传给KERNEL的参数:(struct tag *)bd-bi_boot_params */ /* 在boardatmelat91sam9g20ekAt91sam9g20ek.c文件中有如下定义: gd-bd-bi_boot_params = PHYS_SDRAM + 0x100;(PHYS_SDRAM = 0x20000000) */

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论