系统的启动流程.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统的启动流程 这里我们来讨论 Uoot 的启动流程,并将延伸至内核启动到 start_kernel 函数, 我们主要讲 start_kernel 函数前系统都在做什么,系统是怎么样从开始运行,到 解压内核,跳到内核运行,又怎么样从 Uboot 里将参数传到内核的。 Uboot 的启动是从 start.S 文件开始的,系统一上电 pc 指针便指向这里开始 程序的启动运行,在 start.S 文件中系统的工作主要有: 系统一上电便是 reset 异常,便跳到 reset处进行处理,初始化 Sdram,cache 等,然后跳到 board_init_f 函数中运行。 Board_init_if (lib_mips/board.c): 在此函数中对定时器进行初始化,环境变量初始化,初始化串口, 然后根据 Sdram 进行计算(具体的计算过程看代码),计算出一个具体的 地址,即 SDRAM 的高端地址,然后调用 relocate_code函数,将 Uboot 程 序 Copy 到内存, copy 完后即跳到 in_ram (内存运行)中接着运行 Uboot, 最后调用 board_init_r 函数。 Relocate_code是一段汇编代码, 位于 start.S 中,怎么实现 copy 就自已仔细 看代码了啊, in_ram 也在 start.S 中。 接下来我们来主要看 board_init_r 函数: 开始部分仍是对系统一些功能的初始化: /* configure available FLASH banks */ size = flash_init(); 初始化 flash gpio_init(); // 初始 gpio /** leave this here (after malloc(), environment and PCI are working) **/ /* Initialize devices */ devices_init ();//初始化外设 /* initialize the console (after the relocation and devices init) */ console_init_r ();初始化 console cy_nvram_init(); mac_init(); 进行一些系统初配置初始化后, Uboot 就便等待三秒,等待用户输入字符, 以进行不同的操作,即当按下 4 时会进入命令处理模式,按下 CTRL+ESC 时会进入 tftpd ,可以进行文件的上传。 我们这里只探讨正常启动不探讨 tftpd 下载和命令处理模式。 当我们启动时什么也不操作时,默认的启动类型为3,就会进入到 这里: if(BootType == 3) { char *argv[3]; printf( /n3: System Boot system code via Flash./n); do_bootm(cmdtp, 0, 2, argv); // 从这里开始对内核进行解压,并跳到 内核处运行。 /* below only when boot from flash fali*/ argv[2] = file_name_space[0]; memset(file_name_space,0,ARGV_LEN); eth_initialize(gd-bd); do_tftpd(cmdtp, 0, 4, argv)

文档评论(0)

苦竹酒 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档