国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

RT-Thread Nano硬核移植指南:手把手實現VGLite圖形驅動適配 | 技術集結

RT-Thread官方賬號 ? 2025-07-17 14:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

VGLite 是 NXP 提供的輕量級 2D 圖形 API,本文將手把手帶你實現VGLite圖形驅動適配RT-Thread


文章分為上、下兩篇,將手把手教您移植。上篇對 RT-Thread Nano 內核與 Finsh 組件進行移植,下篇則教您改寫 SDK 中的 VGLite 代碼以將其適配到 RT-Thread Nano 中。


所有工作已上傳至Github(https://github.com/Frogrey/MIMXRT1170EVKB-VGLite-RTThreadNano),歡迎有興趣的讀者學習交流!


目錄


硬件準備


軟件準備


FreeRTOS 移除


移植 RT-Thread Nano 內核到 RT1170


移植 Finsh 控制臺組件到 RT1170


參考教程

1

硬件準備


本文采用i.MX RT1170 EVKB 開發板RK055HDMIPI4M 顯示屏,顯示屏與開發板 J48 相連,使用 MIPI DSI 協議通信。連接 5V 輸入到開發板 J43, 跳線連接 J38 的 1-2,電源開關為 SW5 ,Debug 時使用 Micro-USB 數據線連接 PC 與開發板的 J86 。總體連接圖如下:

f75c04d4-62d8-11f0-9cf1-92fbcf53809c.pngf769e6d0-62d8-11f0-9cf1-92fbcf53809c.png


2

軟件準備


下載RT-Thread Nano源碼并解壓。

構建并下載RT1170 SDK(https://mcuxpresso.nxp.com/zh/select)。

解壓 SDK 壓縮包,使用 IAR 打開

/boards/evkbmimxrt1170/vglite_examples/clock_freertos/cm7/iar/clock_freertos_cm7.eww,后續以此為例進行移植。

需在工程 /board/display_support.h 中確保當前屏幕與DEMO_PANEL宏定義的型號一致。

f776de62-62d8-11f0-9cf1-92fbcf53809c.png

編譯并運行,正常運行時屏幕顯示時鐘圖像,且串口持續輸出幀數信息。

f788dd60-62d8-11f0-9cf1-92fbcf53809c.png

NOTE: 本文中使用的 SDK 版本為 v2.14.0,RT-Thread Nano 為 v3.1.3,IAR 為 9.40.1。


3

FreeRTOS 移除


首先刪除原工程中的 freertos 組與 /source/FreeRTOSConfig.h 文件。

f7955522-62d8-11f0-9cf1-92fbcf53809c.png

右鍵工程名點擊 Options... 選項,在下圖界面可刪除 FreeRTOS 頭文件路徑:


全局搜索代碼中以下 FreeRTOS 相關頭文件,注釋或刪除:

#include"FreeRTOS.h"#include"task.h"#include"semphr.h"#include"queue.h"

因原有的 VGLite 源文件仍會調用已移除的 FreeRTOS 函數,會導致編譯報錯。可先右鍵以下文件后點擊 Options... 選項,選擇 Exclude from build 排除編譯。

/board/display_support.c 與 .h 文件

/board/vglite_support.c 與 .h 文件

/source/vglite_window.c 與 .h 文件

/elementary/ 組

/vglite/ 組

/video/ 組

f79f4f0a-62d8-11f0-9cf1-92fbcf53809c.png

既然已移除了 FreeRTOS,那么文件名中的 "freertos" 也可更換掉,比如 "clock_freertos.eww" 可改為 "clock_rtthread.eww"。此外,.ewd、.ewp、.eww 文件中有關 "freertos" 的文本也可用記事本等搜索替換。


4

移植RT-Thread Nano內核到RT1170


1添加源文件

在 SDK 解壓包的 /rtos/ 中創建 rt-thread 文件夾,并將 RT-Thread Nano 解壓包中以下文件復制到 /rtos/rt-thread/ 文件夾內。

/rt-thread/ 文件夾中的 include、libcpu、src 文件夾

/rt-thread/bsp/ 文件夾中的 board.c 與 rtconfig.h 文件

f7a93772-62d8-11f0-9cf1-92fbcf53809c.png

打開 clock_rtthread.eww,新建 rtthread 組并添加以下文件:

/rtos/rt-thread/src/ 文件夾中所有文件

/rtos/rt-thread/libcpu/arm/cortex-m7/ 文件夾中 cpuport.c 與 context_iar.S 文件(RT1170 芯片為 Cortex-M7 架構,若對其他開發板移植,需選取芯片對應架構的文件)

/rtos/rt-thread/ 文件夾中的 board.c,也可添加 rtconfig.h 文件方便 RT-Thread 配置

f7b5089a-62d8-11f0-9cf1-92fbcf53809c.png

2 添加頭文件路徑

IAR 中右鍵工程名點擊 Options... 選項,進入下圖界面添加以下路徑:

rtconfig.h 頭文件所在位置的路徑

RT-Thread 的 include 文件夾下的頭文件路徑

f7bfc9c4-62d8-11f0-9cf1-92fbcf53809c.png

若添加的路徑為絕對路徑而非以 "$PROJ_DIR$" 開頭的相對路徑,可以先關閉 IAR,使用記事本打開 clock_rtthread.ewp 進行搜索替換,再重新打開 IAR。

3 配置 RT-Thread Nano

后續的代碼需對線程動態分配,故在 rtconfig.h 文件中取消下行注釋以提供內存堆支持:

#defineRT_USING_HEAP

同時,需在工程 /rtthread/board.c 中增大內存堆,更改RT_HEAP_SIZE宏為 (1024 * 10):

#defineRT_HEAP_SIZE (1024 * 10)

其余 RT-Thread 配置將在下篇講解,上篇主要聚焦內核移植所用到的配置。


5

編寫測試應用程序


編寫一個簡單的 RT-Thread 代碼以測試移植的內核。備份工程中 /source/colock_freertos.c 的原有代碼后,更改為以下測試代碼:

#include"rtthread.h"#include"fsl_debug_console.h"#include"pin_mux.h"#include"clock_config.h"#include"board.h"
staticvoidtest_thread(void*parameter){ while(1) { PRINTF("Hello RT-Thread\r\n"); rt_thread_mdelay(500); }}intmain(void){ /* Init board hardware. */ BOARD_ConfigMPU(); BOARD_BootClockRUN(); BOARD_InitLpuartPins(); BOARD_InitDebugConsole();
rt_thread_ttest_thread_handle =rt_thread_create("test_thread", test_thread, RT_NULL,512,1,1); if(test_thread_handle != RT_NULL) rt_thread_startup(test_thread_handle);}

編譯并運行,若開發板每隔 500 毫秒通過串口發送 "Hello RT-Thread", 則說明內核移植成功,恭喜您已完成了近一半的路程!


6

移植 Finsh 控制臺組件到 RT1170


Finsh 是 RT-Thread 的命令行組件(shell),提供一套可以在命令行調用的操作接口。此組件是可選項,若不需要可跳過此章節。


Finsh 移植分為兩部分:添加 UART 控制臺實現打印輸出、添加 Finsh 組件實現命令輸入。

1添加 UART 控制臺實現打印輸出

1 UART 初始化

原工程中,UART 等初始化在main()函數中完成。移植 RT-Thread Nano 后,可將初始化轉移到工程 /rtthread/board.c 中的rt_hw_board_init()函數中,如下所示。

#include#include......voidrt_hw_board_init(){ /* Init board hardware. */ BOARD_ConfigMPU(); BOARD_BootClockRUN(); BOARD_InitLpuartPins(); BOARD_InitDebugConsole(); BOARD_InitMipiPanelPins(); ......}

2 rt_hw_console_output() 實現

RT-Thread 使用rt_kprintf()調用rt_hw_console_output()函數打印輸出,此函數位于工程 /rtthread/kservice.c 文件中,需要自己實現。可以直接包含原工程 /utilities/fsl_debug_console.h 文件, 使用PRINTF宏輸出。不過打印已以 '\n' 結尾,故還需輸出 '\r',以完成回車與換行。實現后的函數如下:

#include......RT_WEAKvoidrt_hw_console_output(constchar *str){ PRINTF(str); PRINTF("\r");}

3 UART 輸出測試

更改PRINTF宏為rt_kprintf()函數,以此測試是否正常輸出。更改的代碼如下,原先的初始化操作已轉移到了工程 /rtthread/board.c 的rt_hw_board_init()函數中。

#include"rtthread.h"
staticvoidtest_thread(void*parameter){ while(1) { rt_kprintf("Hello RT-Thread"); rt_thread_mdelay(500); }}intmain(void){ rt_thread_t test_thread_handle =rt_thread_create("test_thread", test_thread,RT_NULL,512,1,1); if(test_thread_handle !=RT_NULL) rt_thread_startup(test_thread_handle);}

編譯并運行,若開發板仍持續通過串口發送 "Hello RT-Thread",則可正常輸出。

2 添加 Finsh 組件實現命令輸入

1 源文件添加

Finsh 源文件位于 RT-Thread Nano 解壓包的 /rt-thread/components/finsh/ 內,將 finsh 文件夾復制到 SDK 解壓包的 /rtos/rt-thread/ 中。

f7cae264-62d8-11f0-9cf1-92fbcf53809c.png

在工程 /rtthread 組中新建 finsh 組,添加復制的 finsh 文件夾中所有 .c 文件。

f7d48ce2-62d8-11f0-9cf1-92fbcf53809c.png

IAR 中右鍵工程名點擊 Options... 選項,添加 finsh 文件夾路徑。

f7ddf5a2-62d8-11f0-9cf1-92fbcf53809c.png

2 使能 Finsh

在 rtconfig.h 中包含添加的 Finsh 頭文件:

#include"finsh_config.h"

rtconfig.h 與 finsh_config.h 中存在部分重復的宏,可注釋掉 finsh_config.h 中重復的宏以避免編譯時的警告。

3 rt_hw_console_getchar() 實現

也需手動實現工程 /rtthread/finsh/finsh_port.c 中的函數rt_hw_console_getchar()用于命令輸入。


注釋原有的rt_hw_console_getchar()函數中的 #error 開頭語句以停止報錯。可用原工程 /utilities/fsl_debug_console.h 文件中的GETCHAR宏實現輸入,函數如下:

#include......RT_WEAKcharrt_hw_console_getchar(void){ intch =-1; ch =GETCHAR(); returnch;}

4 Finsh 控制臺測試

編譯并運行,使用 PUTTY 等工具打開串口。按下 tab 鍵或輸入 help 命令并回車,會輸出以下信息。否則說明移植失敗,需再檢查上述步驟。


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

    關注

    61

    文章

    1372

    瀏覽量

    193939
  • 移植
    +關注

    關注

    1

    文章

    406

    瀏覽量

    29182
  • nano
    +關注

    關注

    1

    文章

    162

    瀏覽量

    31773
  • RT-Thread
    +關注

    關注

    32

    文章

    1528

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從安裝到使用,RT-Thread Nano最全教程看完不信你還不會使用

    RT-Thread Nano發布以來,小編收到不少開發者詢問RT-Thread Nano的配套教程實例,幸得RT-Thread開發者燕十三
    的頭像 發表于 09-26 06:39 ?7.2w次閱讀
    從安裝到使用,<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>最全教程看完不信你還不會使用

    移植RT-Thread nano到CW32L083

    移植RT-Thread Nano到CW32L083開發板上,并成功運行。
    的頭像 發表于 07-03 09:04 ?2.3w次閱讀
    <b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> <b class='flag-5'>nano</b>到CW32L083

    i.MX RT1170:VGLite移植RT-Thread Nano過程講解(上)

    RT-Thread 是國人自主研發的開源實時操作系統(RTOS),RT-Thread Nano 是極簡版的硬實時內核,內存占用小,移植簡單。VGLi
    的頭像 發表于 11-09 11:20 ?3992次閱讀
    i.MX <b class='flag-5'>RT</b>1170:<b class='flag-5'>VGLite</b><b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>過程講解(上)

    i.MX RT1170:VGLite移植RT-Thread Nano過程講解(下)

    上篇介紹了如何移植 RT-Thread Nano 內核與 Finsh 控制臺到 RT1170。本篇繼續介紹如何將 NXP 官方的 VGLite
    的頭像 發表于 11-09 11:22 ?1731次閱讀

    手把手教你實戰RT-Thread Nano,不信都這樣了你還不會

    手把手教你實戰RT-Thread Nano,不信都這樣了你還不會
    發表于 11-23 10:30

    基于 Keil MDK 移植 RT-Thread Nano

    Nano 源碼。適配 Nano,主要從 中斷、時鐘、內存這幾個方面進行適配實現移植。驗證
    發表于 03-29 06:58

    基于 Keil MDK 移植 RT-Thread Nano

    適配實現移植。驗證移植結果:編寫第一個應用代碼,基于 RT-Thread Nano 閃爍 LE
    發表于 05-14 10:32

    基于 CubeMX 移植 RT-Thread Nano

    RT-Thread Nano pack 安裝包進行安裝。在基礎工程中添加 RT-Thread Nano 源碼。適配
    發表于 05-14 16:09

    基于 Keil MDK 移植 RT-Thread Nano

    適配實現移植。驗證移植結果:編寫第一個應用代碼,基于 RT-Thread Nano 閃爍 LE
    發表于 05-19 18:15

    【國產MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano

    【國產MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano
    發表于 11-18 18:51 ?67次下載
    【國產MCU<b class='flag-5'>移植</b>】HC32F460基于Keil MDK <b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    【國產MCU系列】在 HK32F030 上移植 RT-Thread Nano

    如需下載相關開源資料請點擊閱讀原文這是一個航順 HK32F030 的 RT-Thread Nano 移植示例,記錄了在 Keil 裸機工程的基礎上進行 RT-Thread
    發表于 11-21 18:51 ?42次下載
    【國產MCU系列】在 HK32F030 上<b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    STM32 RT-Thread Nano(1)基于 Keil MDK 移植

    鏈接地址移植系統:RT-Thread Nano V3.1.3 下載鏈接實現內容:主程序中LED3實現間隔2秒亮滅 創建一個線程
    發表于 12-02 16:06 ?13次下載
    STM32 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>(1)基于 Keil MDK <b class='flag-5'>移植</b>

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎工程作為示例進行講解。 RT-Thread
    發表于 01-26 17:04 ?17次下載
    基于 Keil MDK <b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    RT-Thread文檔_內核移植

    RT-Thread文檔_內核移植
    發表于 02-22 18:31 ?4次下載
    <b class='flag-5'>RT-Thread</b>文檔_內<b class='flag-5'>核移植</b>

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與<b class='flag-5'>移植</b>