chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Uboot啟動延時和讀取命令行輸入

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-04 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.啟動延時

如果配置了啟動延遲功能,U-Boot等待用戶從控制臺(一般為串口)輸入字符,等待的時間由頂層配置文件中的宏定義 CONFIG_BOOTDELAY 決定 。在此期間,只要用戶按下任意按鍵就會中斷等待,進入命令行輸入模式。

如果沒有配置啟動延時功能或者啟動延時超過了設(shè)置的時間, U-Boot 運行啟動命令行參數(shù),啟動命令參數(shù)在頂層配置文件中,由 CONFIG_BOOTCOMMAND宏定義。

2.讀取命令行輸入

命令行輸入模式實際上是一個死循環(huán),循環(huán)體簡化后如下所示:

for (;;) {
                len = readline (CONFIG_SYS_PROMPT);
                flag = 0;    /* assume no special flags for now */
                if (len > 0)
                    strcpy (lastcommand, console_buffer);
                else if (len == 0)
                    flag |= CMD_FLAG_REPEAT;
                if (len == -1)
                    puts ("< INTERRUPT >n");
                else
                    rc = run_command(lastcommand, flag);
                if (rc <= 0) {
                    /* invalid command or not repeatable, forget it */
                    lastcommand[0] = 0;
                }
            }

每次循環(huán)調(diào)用readline函數(shù)從控制臺讀取命令行,并且讀取到的字符存儲在console_buffer緩沖區(qū)中。

console_buffer緩沖區(qū)的長度在頂層文件中通過CONFIG_SYS_CBSIZE宏定義。

當(dāng)該函數(shù)在接收到一個回車鍵時認定為命令行輸入結(jié)束,返回命令行長度len。

如果len大于0,將存儲在緩沖區(qū)的命令行拷貝至靜態(tài)數(shù)組lastcommand中,flag設(shè)置為0。

如果len等于0,即readline函數(shù)僅僅接收到一個回車鍵,即直接返回,flag設(shè)置為CMD_FLAG_REPEAT,lastcommand數(shù)組存放的數(shù)據(jù)不變。

flag用于標志是否重復(fù)上次操作,每個命令都有一個 repeatable標志,當(dāng)命令的該標志為1時,此時,命令能夠重復(fù)操作。

把lastcommand和flag作為run_command函數(shù)的參數(shù),進而調(diào)用run_command函數(shù)。

從 run_command 函數(shù)是否會返回的角度看,U-Boot 的命令分為兩類。

一類是函數(shù)返回數(shù)值rc,rc小于等于0 ,則傳入的命令行參數(shù)有誤,命令無效,此時把lastcommand數(shù)組清零,不再執(zhí)行重復(fù)操作。

另外一類是不再返回,一去不再復(fù)返 ,例如bootm、go等命令,這類用于啟動內(nèi)核,將CPU的管理權(quán)從U-Boot交付給內(nèi)核,完成自己啟動內(nèi)核的終極使命。

3.解析命令行

傳入的 lastcommand 參數(shù)僅僅是 readline 函數(shù)讀取到用戶輸入的字符,接下來最主要的工作是解析命令行。

首先判斷傳入的lastcommand參數(shù)是否為空,如果是返回?1,否則繼續(xù)往下解析。截取函數(shù)的關(guān)鍵代碼如下,str指針指向 lastcommand區(qū)域

while (*str) {
                  for (inquotes = 0, sep = str; *sep; sep++) {
                    if ((*sep==''') &&
                        (*(sep-1) != ''))
                        inquotes=!inquotes;
                    if (!inquotes &&
                        (*sep == ';') &&   /* separator     */
                        ( sep != str) &&  /* past string start  */
                        (*(sep-1) != ''))    /* and NOT escaped    */
                        break;
                  }

U-Boot允許命令行存在多個命令,命令間用“;”或者“;”字符分割。

token = str;
                  if (*sep) {
                    str = sep + 1;   /* start of command for next pass */
                    *sep = '?';
                  }
                  else
                    str = sep;   /* no more commands for next pass */
                  /* Extract arguments */
                  if ((argc = parse_line (finaltoken, argv)) == 0) {
                    rc = -1; /* no command at all */
                    continue;
                  }
                  if (cmd_process(flag, argc, argv, &repeatable, NULL))
                    rc = -1;

首先解析一個命令,token指向待解析命令的地址。

parse_line函數(shù)分離出命令的各個參數(shù),分別存放在argv中,參數(shù)的數(shù)目為argc,接著調(diào)用common/command.c文件中的cmd_process函數(shù)處理解析得到的命令。

值得注意的是, 命令的第一個參數(shù)是命令的名稱 。當(dāng)前命令處理完畢后, token指向命令行中的下一個命令,直到所有的命令都處理完畢。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11575

    瀏覽量

    216584
  • 控制臺
    +關(guān)注

    關(guān)注

    0

    文章

    85

    瀏覽量

    10800
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4400

    瀏覽量

    66330
  • Uboot
    +關(guān)注

    關(guān)注

    4

    文章

    129

    瀏覽量

    29566
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    uboot啟動怎么停在uboot命令行

    256M的nandflash已經(jīng)裝入了uboot1.1.6和linux2.6.22. 在啟動的時候,我想讓板子啟動時停在uboot命令行,但
    發(fā)表于 06-17 05:45

    為什么uboot啟動命令行之后一直重復(fù)內(nèi)容?

    最近遇到一個問題,uboot啟動命令行之后,用md 命令顯示內(nèi)存 但是每隔16M都會重復(fù)flash的內(nèi)容。比如 md 0x1c000000 和0x1d000000以及0x1e0000
    發(fā)表于 08-19 05:01

    如何通過uboot命令行去更新內(nèi)核呢

    如何通過uboot命令行去更新內(nèi)核、dtb、uboot文件?
    發(fā)表于 01-11 07:07

    cmd網(wǎng)絡(luò)經(jīng)典命令行

    cmd網(wǎng)絡(luò)經(jīng)典命令行:
    發(fā)表于 06-11 15:17 ?36次下載
    cmd網(wǎng)絡(luò)經(jīng)典<b class='flag-5'>命令行</b>

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對于大多用戶來說往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2493次閱讀

    博達環(huán)網(wǎng)配置命令行

    博達工業(yè)交換要環(huán)網(wǎng)配置命令行
    發(fā)表于 12-27 16:24 ?0次下載

    CMD的命令行高級教程

    CMD的命令行高級教程
    發(fā)表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級教程

    通過命令行操控電腦的命令大全匯總

    下面提供多種方法和各種參數(shù),你可以使用這些參數(shù)通過命令行重新啟動本地和遠程計算機。
    發(fā)表于 05-05 17:29 ?4317次閱讀

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發(fā)表于 01-11 16:50 ?4次下載

    linux命令行與shell編程實戰(zhàn)

    Linux命令行與Shell編程實戰(zhàn)主要涉及以下內(nèi)容: Linux命令行基礎(chǔ):學(xué)習(xí)Linux命令行的基本操作,如文件管理、進程管理、網(wǎng)絡(luò)配置等。熟悉使用命令行能夠提高工作效率,提升自己
    的頭像 發(fā)表于 11-08 10:57 ?1272次閱讀

    linux虛擬機怎么調(diào)出命令行

    在Linux虛擬機中調(diào)出命令行界面,可以通過以下步驟實現(xiàn): 打開虛擬機,進入到Linux系統(tǒng)。 在桌面或應(yīng)用菜單中找到終端或命令行圖標,點擊打開。 輸入命令行指令,執(zhí)行相應(yīng)的操作。 另
    的頭像 發(fā)表于 11-08 11:28 ?4025次閱讀

    linux切換到命令行模式

    在Linux中,可以通過以下步驟切換到命令行模式: 打開終端。可以在應(yīng)用菜單中找到終端或命令行終端。 在終端中輸入命令“exit”或“l(fā)ogout”,然后按回車鍵。 系統(tǒng)會提示您
    的頭像 發(fā)表于 11-13 16:47 ?2523次閱讀

    linux命令行運行步驟

    現(xiàn)光標右邊出現(xiàn)了一個類似于“ ”或“#”的字符,這就是命令行提示符。在大多數(shù)Linux發(fā)行版中,普通用戶的提示符是“ ”,而管理員或root用戶的提示符是“#”。 查找可用的命令 Linux系統(tǒng)有許多命令可供使用,可以通過
    的頭像 發(fā)表于 11-17 10:18 ?1437次閱讀

    eclipse怎么使用命令行

    命令行中使用Eclipse來完成一些特定的任務(wù)。本文將詳細介紹如何在命令行中使用Eclipse。 首先,我們需要確保已經(jīng)正確安裝了JDK(Java Development Kit)和Eclipse
    的頭像 發(fā)表于 12-06 11:26 ?4009次閱讀

    idea如何輸入命令行參數(shù)

    在許多軟件開發(fā)和系統(tǒng)管理的任務(wù)中,我們經(jīng)常需要向應(yīng)用程序傳遞命令行參數(shù)。命令行參數(shù)是在運行時傳遞給程序的值,用于指定程序的行為和配置選項。本文將詳細介紹如何在不同的編程語言和操作系統(tǒng)中輸入命令
    的頭像 發(fā)表于 12-06 15:01 ?1874次閱讀