一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

恩智浦解讀Zephyr log系統(tǒng)的使用 Zephyr的shell和log功能介紹

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

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

首先給大家介紹Zephyr log系統(tǒng)的使用,在使用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注冊了一個(gè)叫做main的log系統(tǒng),并通過LOG_INF來進(jìn)行打印,執(zhí)行程序編譯和下載后可以得到結(jié)果:

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

當(dāng)然,還可以利用LOG_WRN和LOG_ERR來打印信息,大家可以自行體驗(yàn)。

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

1. 編輯proj.conf文件:

CONFIG_LOG=y
CONFIG_SHELL=y
2. 重新構(gòu)建下載程序查看效果:

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

3. 當(dāng)然我們也可以嘗試其他有用的shell選項(xiàng):

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. 添加一個(gè)自定義shell命令, 拷貝如下內(nèi)容到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聲明了一個(gè)叫做monkey的指令,其處理函數(shù)是monkey_handler, 會(huì)打印一個(gè)黃色猴子:

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

這樣,我們就介紹完了shell和log系統(tǒng)的添加。在上一期中,我們只添加了一個(gè)main.c,在本期我們?yōu)榇蠹已a(bǔ)一個(gè)如果添加額外的一個(gè).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. 創(chuàng)建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

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

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


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

    關(guān)注

    0

    文章

    15

    瀏覽量

    11461
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    371

    瀏覽量

    23822
  • Zephyr
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    6178

原文標(biāo)題:Zephyr的shell和log功能介紹

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

收藏 人收藏

    評論

    相關(guān)推薦

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

    的架構(gòu),理解其如何工作。在此處僅對其簡單介紹,便于理解后續(xù)內(nèi)容。 構(gòu)建系統(tǒng) Zephyr 使用 CMake 作為其構(gòu)建系統(tǒng),使用 Kconfig 進(jìn)行配置。首先 CMake 通過
    發(fā)表于 05-23 09:19 ?866次閱讀
    MCXN947與<b class='flag-5'>Zephyr</b>的跨界合作 嵌入式技術(shù)的新飛躍

    分享Zephyr調(diào)試技巧

    前面幾期中,我們著重給大家介紹了如何搭建Zephyr開發(fā)環(huán)境,以及如何添加自己的應(yīng)用代碼。今天讓我們開始一個(gè)新的篇章:Zephyr調(diào)試技巧以及介紹Ozone進(jìn)行
    的頭像 發(fā)表于 03-13 09:05 ?884次閱讀

    Zephyr的構(gòu)建工具

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

    Zephyr與FreeRTOS實(shí)時(shí)性測試比較

    時(shí)間是其它指標(biāo)的基礎(chǔ),因此以任務(wù)切換時(shí)間為例,分析兩個(gè)系統(tǒng)在實(shí)現(xiàn)上的差異。目前Zephyr任務(wù)切換時(shí)間為6.9微秒,F(xiàn)reeRTOS為2.2微秒。分析比較代碼后得出,Zephyr設(shè)計(jì)時(shí)考慮到了時(shí)間片等因素,實(shí)現(xiàn)上比較復(fù)雜,暫時(shí)找
    發(fā)表于 08-19 16:12

    MIMXRT595-EVK是否可以在SRAM中運(yùn)行hello_world zephyr示例?

    專家,我知道 MIMXRT1xxx 能夠在 ITCM 中運(yùn)行 hello_world 但是 MIMXRT595 中沒有 ITCM 只有 SRAM。MIMXRT595-EVK是否可以在SRAM中運(yùn)行hello_world zeph
    發(fā)表于 03-30 06:38

    LOG101/LOG104偏流調(diào)零電路

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

    Android中Log相關(guān)介紹

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

    淺析Zephyr應(yīng)用的代碼結(jié)構(gòu)中的自定義驅(qū)動(dòng)

    本篇是《《Zephyr應(yīng)用的代碼結(jié)構(gòu)》》系列的終篇和下面兩篇文章一起可以構(gòu)建出一個(gè)有app獨(dú)立管理的zephyr項(xiàng)目 Zephyr應(yīng)用的代碼結(jié)構(gòu)--West提貨單: zephyr
    的頭像 發(fā)表于 08-18 09:08 ?5120次閱讀

    嵌入式系統(tǒng)log模塊設(shè)計(jì)

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

    使用Keysight免費(fèi)評估Log4j/Log4Shell零日漏洞

    在過去72小時(shí)左右的時(shí)間里,網(wǎng)絡(luò)安全領(lǐng)域的大多數(shù)人已經(jīng)意識(shí)到Log4j/Log4Shell零日漏洞及其對大多數(shù)web服務(wù)器、云應(yīng)用程序、互聯(lián)網(wǎng)設(shè)備和嵌入式設(shè)備的廣泛影響。你可以閱讀CVE-2021-44228中記錄的所有血淋淋的細(xì)節(jié),但底線是:這可能非常非常糟糕。
    的頭像 發(fā)表于 12-21 10:50 ?1693次閱讀

    Zephyr中斷服務(wù)類型及實(shí)際應(yīng)用

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

    泰凌微電子Zephyr編譯環(huán)境搭建

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

    深入解析Zephyr RTOS的技術(shù)細(xì)節(jié)

    Zephyr是一個(gè)針對資源受限設(shè)備優(yōu)化的小型、可縮放、多體系架構(gòu)實(shí)時(shí)操作系統(tǒng)(RTOS)。Zephyr由Linux基金會(huì)維護(hù)[1],是一個(gè)以構(gòu)建業(yè)界最佳的RTOS為目標(biāo)的開源合作項(xiàng)目。近年來
    的頭像 發(fā)表于 10-22 16:47 ?1509次閱讀
    深入解析<b class='flag-5'>Zephyr</b> RTOS的技術(shù)細(xì)節(jié)

    使用MCUXPresso插件開發(fā)Zephyr

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

    Zephyr賦能安全可靠的嵌入式開發(fā)

    日前,聯(lián)手Zephyr實(shí)時(shí)操作系統(tǒng)成功舉辦了Zephyr Project Meetup上海站的活動(dòng),6場主題演講以及深入的現(xiàn)場技術(shù)交流
    的頭像 發(fā)表于 04-21 10:26 ?276次閱讀