当前位置:  技术问答>linux和unix

请教 uboot的bootm引导内核

    来源: 互联网  发布时间:2017-04-02

    本文导语:  本帖最后由 xieweihua2012 于 2012-12-02 18:58:28 编辑 大家好 我在阅读uboot的bootm命令源码时 有些地方不是很明白 在do_bootm函数中,有如下语句 [color=#0000FF]#ifdef CONFIG_ZIMAGE_BOOT  #define LINUX_ZIMAGE_MAGIC 0x016f2818  /* find out ke...

本帖最后由 xieweihua2012 于 2012-12-02 18:58:28 编辑
大家好

我在阅读uboot的bootm命令源码时 有些地方不是很明白

在do_bootm函数中,有如下语句
[color=#0000FF]#ifdef CONFIG_ZIMAGE_BOOT 
#define LINUX_ZIMAGE_MAGIC 0x016f2818
 /* find out kernel image address */
 if (argc ih_os = IH_OS_LINUX;
  hdr->ih_ep = ntohl(addr); //0x800020

  memmove (&images.legacy_hdr_os_copy, hdr, sizeof(image_header_t));  /* save pointer to image header */
  images.legacy_hdr_os = hdr;

  images.legacy_hdr_valid = 1;  

 goto after_header_check;
 }
#endif[/color]
对于上面的代码有疑问如下:

1、宏定义 CONFIG_ZIMAGE_BOOT 是不是表示所加载的内核是zImage格式的映像文件?

2、用红色标记的判断语句 if (*(ulong *)(addr + 9*4) == LINUX_ZIMAGE_MAGIC)是什么意思,为什么如果该语句成立就直接跳转到after_header_check呢(略过对映像头文件的校验),难道是因为zImage格式的映像文件没有头部信息吗,如果是这个原因的话,为啥有memmove (&images.legacy_hdr_os_copy, hdr, sizeof(image_header_t)); 这句话呢(这句话的意思应该就是将头部的64个字节信息保存在images.legacy_hdr_os_cpoy所指向的内存里面,这样看的话,好像又有头部信息)

往路过高手们不吝赐教,走过路过不要错过嘛

|
这个zImage也是有的,从我的u-boot2012.10中可以看出,这个头是由一个结构体来描述的:
struct zimage_header {
uint32_t code[9];
uint32_t zi_magic;
uint32_t zi_start;
uint32_t zi_end;
};
不过,在跳的到内核镜像执行的时候确实是跳转到了zImage的首地址,我想应该是zImage的code[9];这部分内容的原因吧,大家知道zImage是自解压格式的,这9*4字节的代码估计就是解压内核或跳转到zImage解压部分的代码。

另外,uImage是由编译u-boot的时候在tools目录下生成的mkimage工具处理生成的内核镜像,它的这个文件头是由mkimage生成的,用于指示u-boot的引导过程。

    
 
 

您可能感兴趣的文章:

  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • 请教一个linux进程内核栈的问题
  • 【请教】怎么修改linux内核参数
  • 请教,linux内核协议栈中,从内核往驱动发送的报文(注意是下行,不是上行),如何从sk_buff判断是组播数据报文还是组播协议报文????
  • 万能的CSDN啊,100分请教高手一个编译内核传参的问题!
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 80分请教关于内核的module机制
  • 请教内核ppp代码的内容——在线等
  • 请教高手:如何学习内核编程?
  • 请教内核编译的问题!
  • 请教Linux内核编译的问题
  • 初学Linux内核编译,几个问题请教一下
  • 请教:想学LINUX内核编程,请指点
  • 内核安装错误,请教!
  • 请教内核树的问题
  • 请教部分内核参数的意义
  • 100分请教高手一个Linux内核ARM汇编的问题
  • 请教linux的学习,怎么学? 内核开发找什么样的工作?
  • 内核相关项目请教
  • 请教2.6内核下如何进行文件的读写?
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 安装完Redhat Linux后无法引导?请教!
  • 高分请教关于制作RedHat8.0引导盘的问题
  • 请教高手一个关于LINUX引导程序的问题
  • 请教!在同一台机器上如何同时引导win2000和Radhat Linux?
  • LIUNX安装成功,但是无法引导,请教高手指点
  • 请教大家,做文件系统、引导程序的问题?
  • 请教grub被windows的引导管理器覆盖了怎么办?
  • 安装RH后引导出错,请教
  • 多系统引导程序的几个问题,请教???
  • 新内核引导时出错。请教。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 请教,请教,,,一定要看!!一定要看!!
  • 移动开发 iis7站长之家
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题
  • 请教unix常用命令命令问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,