亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2878 | 回復(fù): 3
打印 上一主題 下一主題

[BootLoader] 熟悉u-boot的啟動(dòng)流程 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-03-28 17:18 |只看該作者 |倒序?yàn)g覽
u-boot的作用有兩種:
1、初始化硬件  2、加載啟動(dòng)操作系統(tǒng)

u-boot執(zhí)行流程(.c .S)分為兩個(gè)階段,內(nèi)容如下:

第一階段啟動(dòng)流程:
     1)設(shè)置為svc模式,禁止中斷
     2)cpu_init_crit
            設(shè)置一級(jí)緩存,二級(jí)緩存
            禁止MMU
            設(shè)置電路       
     3)lowlevel_init
           1.關(guān)看門狗
           2.系統(tǒng)時(shí)鐘初始化
           3.外接內(nèi)存初始化
           4.uart初始化
           5.nand初始化

     4)判斷當(dāng)前運(yùn)行地址是否為鏈接時(shí)指定的地址
          如果不相等則執(zhí)行copy_from_nand
          完成代碼由nand到外接的ram拷貝工作

代碼框架如下:
copy_from_nand
            copy_uboot_to_ram
                nandll_read_blocks(CFG_PHY_UBOOT_BASE, COPY_BL2_SIZE);
                                     0x23e00000,      512k
                     nandll_read_page(buf, i + skipped_page)
                         nand_readpage
總結(jié): 實(shí)現(xiàn)將nand 0 地址開始的512K內(nèi)容搬移到外接RAM 0x23e00000

     5)使能MMU
         

     6)清空BSS功能
     7)跳轉(zhuǎn)到start_armboot去執(zhí)行
          ldr     pc, _start_armboot
            _start_armboot:
          .word start_armboot
   

第二階段啟動(dòng)流程       
     1)該階段的硬件初始化工作
     2)初始化環(huán)境變量
     3)倒數(shù)計(jì)時(shí)
          執(zhí)行bootcmd中指定的命令
     4)進(jìn)入for(:
         readline(CFG_PROMPT)
         run_command(cmd)
        {
            解析輸入的字符串“;”
            匹配單條命令
            run_cmd()
        }

源碼追蹤如下:

入口函數(shù)
lib_arm/board.c

start_armboot(){
    1)相關(guān)硬件的初始化工作
     cpu_init();

     board_init()
    {
      gd->bd->bi_arch_number = MACH_TYPE;
      gd->bd->bi_boot_params = (PHYS_SDRAM_1+0x100);
     }
    ......
     for (; {    board.c  793行
        main_loop ();
     }

    void main_loop (void)
    {
    s = getenv ("bootdelay";   main.c 550行
    s = getenv ("bootcmd";    main.c 574行
     }
   
    if (bootdelay >= 0 && s && !abortboot (bootdelay))   main.c 582行  讀秒沒有被打斷,則執(zhí)行內(nèi)核程序,否則跳到646行
    {
       "nand read.jffs2 0xc0008000 kernel;bootm 0xc0008000"   
        run_command (s, 0);                      582行
    }

    for (;    main.c  646行
    {
              len = readline (CFG_PROMPT);    main.c 655行
  
              int readline (const char *const prompt)    main.c 1141行
              {
                    return readline_into_buffer(prompt, console_buffer);
               }   
             
              strcpy (lastcommand, console_buffer);   main.c 659行
             run_command (lastcommand, flag);     main.c 680行
    }

    int run_command (const char *cmd, int flag)    main.c  1486行
   {
               /* Look up command in command table */   main.c 1566行
                if ((cmdtp = find_cmd(argv[0])) == NULL) {
                        printf ("Unknown command '%s' - try 'help'\n", argv[0]);
                        rc = -1;        /* give up after bad command */
                        continue;
                }                   

                  /* OK - call function to do the command */     main.c 1596行
                if ((cmdtp->cmd) (cmdtp, flag, argc, argv) != 0) {
                        rc = -1;
                }
     }
}

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2016-03-28 17:25 |只看該作者
dianzan !~!!!!!

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2016-04-07 10:32 |只看該作者
請(qǐng)問我想移植uboot到我的板子,看了很多教程,也不知道具體該怎么做,能請(qǐng)教下么?

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2016-04-08 14:33 |只看該作者
寫的不錯(cuò)!。。。。。。。。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP