女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

恩智浦解讀Zephyr log系統的使用 Zephyr的shell和log功能介紹

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 2025-02-27 09:19 ? 次閱讀

之前我們從0開始新建了一個簡單的Zephyr應用-從0開始打造屬于自己的HelloWorld,本期就帶著大家熟悉一下Zephyrshelllog系統。

首先給大家介紹Zephyr log系統的使用,在使用log前需要:

1. 修改proj.conf打開log功能:
CONFIG_LOG=y
2. 編輯main.c使用log功能:
#include 
#include 


LOG_MODULE_REGISTER(main);


int main(void)
{
    int32_t count = 0;


    printk("Hello Zephyr!
");


    while (1)
    {   
         LOG_INF("Hello from main : %d", count++);
         k_sleep(K_MSEC(1000));
    }
    
    return 0;
}

這里通過LOG_MODULE_REGISTER注冊了一個叫做main的log系統,并通過LOG_INF來進行打印,執行程序編譯和下載后可以得到結果:

ee7f79e6-f4a5-11ef-9310-92fbcf53809c.png

當然,還可以利用LOG_WRN和LOG_ERR來打印信息,大家可以自行體驗。

接下來是shell的使用,同樣的首先要打開shell功能:

1. 編輯proj.conf文件:

CONFIG_LOG=y
CONFIG_SHELL=y
2. 重新構建下載程序查看效果:

ee9454ce-f4a5-11ef-9310-92fbcf53809c.png

3. 當然我們也可以嘗試其他有用的shell選項:

CONFIG_LOG=y
CONFIG_LOG_CMDS=y
CONFIG_SHELL=y
CONFIG_SHELL_PROMPT_UART="shell>"
CONFIG_SHELL_VT100_COLORS=y
CONFIG_KERNEL_SHELL=y
CONFIG_THREAD_MONITOR=y
#add a reboot command
CONFIG_REBOOT=y

4. 添加一個自定義shell命令, 拷貝如下內容到main.c:

#include 
static int monkey_handler(const struct shell *shell, 
                      size_t argc,
                      char **argv)
{
   ARG_UNUSED(argc);
   ARG_UNUSED(argv);
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"                 ██████████████████████████            
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"               ██??????????????????????????██          
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"               ██????????????????????????????██        
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"             ██??????????????????????????????██        
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"         ██████????????????????????????????????██      
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"       ██??????????????????????????????????????██████  
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"       ██??????????????????????????????????????██????██
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"       ██??????????????????██????????██????????██????██
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"         ████??????????????██????????██????????██████  
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"             ██????????????????????????????????██      
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"     ████      ██????????????????????????????██        
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"   ██    ██      ██????????????????????????██          
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"   ██  ██      ██????????????????????????????██        
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"   ██          ██????????????????????????????██        
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"     ████    ██????????????????????????????????██      
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"         ██████????????????????????????????????██      
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"             ██????██????????????????????██????██      
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"               ██████????????????????????██████        
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"                   ██??????████████??????██            
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"                   ██????██        ██????██            
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"                   ██████            ██████            
");
   shell_fprintf(shell,SHELL_VT100_COLOR_YELLOW,"
");
   shell_fprintf(shell,SHELL_VT100_COLOR_CYAN,"                          I'm Super
");
      
   return 0;
}
SHELL_CMD_REGISTER(monkey, NULL, "I'm super.", monkey_handler);



這里我們通過SHELL_CMD_REGISTER聲明了一個叫做monkey的指令,其處理函數是monkey_handler, 會打印一個黃色猴子:

eebd19ea-f4a5-11ef-9310-92fbcf53809c.png

這樣,我們就介紹完了shell和log系統的添加。在上一期中,我們只添加了一個main.c,在本期我們為大家補一個如果添加額外的一個.c文件,需要干兩件事兒:

1. 編輯CMakeLists.txt 添加c文件:
cmake_minimum_required(VERSION 3.20.0)


find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})


project(hello_world)


target_sources(app PRIVATE src/main.c)
target_sources(app PRIVATE src/t2.c)

2. 創建t2.c:
#include 
#include 


// Thread configuration
#define CONFIG__T2_TH_STACK_SIZE 2048
#define CONFIG__T2_TH_PRIORITY 5


void t2_thread_task(void *, void *, void *);


K_THREAD_DEFINE(t2_thread, CONFIG__T2_TH_STACK_SIZE,
                t2_thread_task, NULL, NULL, NULL,
                CONFIG__T2_TH_PRIORITY, 0, 0);


LOG_MODULE_REGISTER(t2);


void t2_thread_task(void *, void *, void *)
{
    while (1)
    {
        LOG_INF("Hello from T2!");
        k_sleep(K_MSEC(500));
    }
}

3. 使用west build + west flash編譯下載代碼:

eed7f5bc-f4a5-11ef-9310-92fbcf53809c.png

這樣,即便我們后面有更復雜的工程需要添加更多的.c文件,我們也能游刃有余,處理得當!!

恩智浦半導體NXP Semiconductors N.V.(納斯達克股票代碼:NXPI)是汽車、工業物聯網、移動設備和通信基礎設施市場值得信賴的合作伙伴,致力于提供創新解決方案。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Log
    Log
    +關注

    關注

    0

    文章

    16

    瀏覽量

    11497
  • Shell
    +關注

    關注

    1

    文章

    372

    瀏覽量

    23978
  • Zephyr
    +關注

    關注

    0

    文章

    35

    瀏覽量

    6233

原文標題:Zephyr的shell和log功能介紹

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    MCXN947與Zephyr的跨界合作 嵌入式技術的新飛躍

    的架構,理解其如何工作。在此處僅對其簡單介紹,便于理解后續內容。 構建系統 Zephyr 使用 CMake 作為其構建系統,使用 Kconfig 進行配置。首先 CMake 通過
    發表于 05-23 09:19 ?957次閱讀
    MCXN947與<b class='flag-5'>Zephyr</b>的跨界合作 嵌入式技術的新飛躍

    分享Zephyr調試技巧

    前面幾期中,我們著重給大家介紹了如何搭建Zephyr開發環境,以及如何添加自己的應用代碼。今天讓我們開始一個新的篇章:Zephyr調試技巧以及介紹Ozone進行
    的頭像 發表于 03-13 09:05 ?1064次閱讀

    Zephyr的構建工具

    給大家介紹一下Zephyr的構建工具們:
    的頭像 發表于 12-05 09:51 ?1372次閱讀
    <b class='flag-5'>Zephyr</b>的構建工具

    Zephyr與FreeRTOS實時性測試比較

    時間是其它指標的基礎,因此以任務切換時間為例,分析兩個系統在實現上的差異。目前Zephyr任務切換時間為6.9微秒,FreeRTOS為2.2微秒。分析比較代碼后得出,Zephyr設計時考慮到了時間片等因素,實現上比較復雜,暫時找
    發表于 08-19 16:12

    LOG101/LOG104偏流調零電路

    LOG101/LOG104偏流調零電路 如圖所示為LOG101/LOG104的偏流調零電路。 LOG101/
    發表于 05-13 16:10 ?1709次閱讀
    <b class='flag-5'>LOG</b>101/<b class='flag-5'>LOG</b>104偏流調零電路

    LOG 100電路功能電路圖

    LOG 100電路功能電路圖
    發表于 06-29 10:01 ?2022次閱讀
    <b class='flag-5'>LOG</b> 100電路<b class='flag-5'>功能</b>電路圖

    Android中Log相關介紹

    本文檔內容介紹了基于Android中Log相關介紹及源代碼,供參考
    發表于 03-15 11:03 ?4次下載

    淺析Zephyr應用的代碼結構中的自定義驅動

    本篇是《《Zephyr應用的代碼結構》》系列的終篇和下面兩篇文章一起可以構建出一個有app獨立管理的zephyr項目 Zephyr應用的代碼結構--West提貨單: zephyr
    的頭像 發表于 08-18 09:08 ?5210次閱讀

    嵌入式系統log模塊設計

    對于開發嵌入式系統的工程師來說,log功能無疑是非常重要的功能模塊。這里講講嵌入式系統log模塊
    發表于 11-03 17:51 ?13次下載
    嵌入式<b class='flag-5'>系統</b><b class='flag-5'>log</b>模塊設計

    使用Keysight免費評估Log4j/Log4Shell零日漏洞

    在過去72小時左右的時間里,網絡安全領域的大多數人已經意識到Log4j/Log4Shell零日漏洞及其對大多數web服務器、云應用程序、互聯網設備和嵌入式設備的廣泛影響。你可以閱讀CVE-2021-44228中記錄的所有血淋淋的細節,但底線是:這可能非常非常糟糕。
    的頭像 發表于 12-21 10:50 ?1742次閱讀

    Zephyr中斷服務類型及實際應用

    說完中斷類型,介紹一下Zephyr中的中斷向量表的概念,除了硬件中斷向量表,Zephyr中還有一個較為新的概念,我們在上文中也有所提及,叫做軟件中斷向量表,那么他們都各自負責什么呢?我們來一一
    的頭像 發表于 03-10 11:53 ?2866次閱讀

    泰凌微電子Zephyr編譯環境搭建

    如上文所介紹,Telink Zephyr是由社區的Zephyr倉庫fork而來的,用于維護我們在社區的內容,并開發新的功能。若要查看 Telink
    的頭像 發表于 01-30 11:28 ?3740次閱讀

    深入解析Zephyr RTOS的技術細節

    Zephyr是一個針對資源受限設備優化的小型、可縮放、多體系架構實時操作系統(RTOS)。Zephyr由Linux基金會維護[1],是一個以構建業界最佳的RTOS為目標的開源合作項目。近年來
    的頭像 發表于 10-22 16:47 ?1802次閱讀
    深入解析<b class='flag-5'>Zephyr</b> RTOS的技術細節

    使用MCUXPresso插件開發Zephyr

    應廣大讀者朋友的熱情邀請,我們特別策劃了“Zephyr領進門”系列介紹(共十篇),旨在為大家深度剖析Zephyr OS——這一備受矚目的開源實時操作系統。從使用MCUXPresso插件
    的頭像 發表于 11-28 09:41 ?771次閱讀

    Zephyr賦能安全可靠的嵌入式開發

    日前,聯手Zephyr實時操作系統成功舉辦了Zephyr Project Meetup上海站的活動,6場主題演講以及深入的現場技術交流
    的頭像 發表于 04-21 10:26 ?488次閱讀