所谓技术

-----simple,sometimes naive!
posts - 11, comments - 0, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

U-boot如何知道kernel的入口地址

Posted on 2008-04-02 10:06 vsolo 阅读(2991) 评论(0)  编辑 收藏 引用 所属分类: MISC

       事实上,如果CONFIG_BOOTCOMMAND在配置文件./include/configs/.h中没有给bootcmd赋值,那么U-boot就不知道kernel的入口地址,U-boot启动后将会等待命令。
       具体实现过程:
           Uboot:Start.s -> start_armboot ()<./lib_arm/board.c>  ->  main_loop ()<./common/main.c>
       main_loop()会调用abortboot (bootdelay)判断在delay time内有没有键按下,并给出prompt“Hit any key to stop autoboot”,若没有键按下则run_command (s, 0)(s为默认的bootcmd)。这里默认的bootcmd需要根据内核的位置设置,若bootcmd未赋值,Uboot就会一直等待。
      若此时内核已在RAM中,bootm <add>就可以启动内核了;若内核从(nor)Flash启动,则首先要将内核从Flash中拷贝到RAM:setenv bootcmd cp.b <source add in Flash> <target add in RAM> <count>\;bootm <target add>;当然也可以设置从其它(如tftp)启动·····

只有注册用户登录后才能发表评论。