AWTK 在 RT Thread 上的移植筆記

2021-09-29 11:31:56 字數 2903 閱讀 8135

本文以 stm32f103ze 為例,介紹了 awtk 在 rtos 上移植的經驗。與其說移植,倒不如說是整合。所做的事情不過是把 awtk 放到 rtos 的乙個執行緒中執行而已。

awtk 已經移植到 stm32f103ze 裸系統上,為了簡單起見,直接在 awtk-stm32f103ze-raw 基礎上加入 rt-thread 支援。

rtthread/

rtthread/bsp

rtthread/cortex-m3

rtthread/cortex-m3/context_gcc.s

rtthread/cortex-m3/context_iar.s

rtthread/cortex-m3/context_rvds.s

rtthread/cortex-m3/cpuport.c

rtthread/cortex-m3/sconscript

rtthread/include

rtthread/include/libc

rtthread/include/libc/libc_dirent.h

rtthread/include/libc/libc_errno.h

rtthread/include/libc/libc_fcntl.h

rtthread/include/libc/libc_fdset.h

rtthread/include/libc/libc_ioctl.h

rtthread/include/libc/libc_signal.h

rtthread/include/libc/libc_stat.h

rtthread/include/rtdbg.h

rtthread/include/rtdebug.h

rtthread/include/rtdef.h

rtthread/include/rthw.h

rtthread/include/rtlibc.h

rtthread/include/rtm.h

rtthread/include/rtservice.h

rtthread/include/rtthread.h

rtthread/rtconfig.h

rtthread/src

rtthread/src/clock.c

rtthread/src/cpu.c

rtthread/src/device.c

rtthread/src/idle.c

rtthread/src/ipc.c

rtthread/src/irq.c

rtthread/src/kconfig

rtthread/src/kservice.c

rtthread/src/mem.c

rtthread/src/memheap.c

rtthread/src/mempool.c

rtthread/src/object.c

rtthread/src/scheduler.c

rtthread/src/sconscript

rtthread/src/signal.c

rtthread/src/slab.c

rtthread/src/thread.c

rtthread/src/timer.c

rtthread

rtthread/include

根據自己的需要修改配置 rtthread/rtconfig.h

一般來說不需要修改,使用官方提供的即可。我用的是 stm32f103-mini-system 專案中的。

src/platforms/rtt/mutex.c

src/platforms/rtt/semaphore.c

src/platforms/rtt/thread.c

src/platforms/common/sys_tick.c

參考stm32/libraries/hal_drivers/drv_common.c和components.c修改的。

#include "rthw.h"

#include "rtthread.h"

static bool_t s_kernel_inited = false;

static bool_t rtos_is_inited(void)

static uint32_t s_heap[2 * 1024];

ret_t rtos_init(void)

ret_t rtos_start(void)

void rtos_tick(void)

}void rtos_delay(uint32_t ms)

void* awtk_thread(void* args) 

static ret_t awtk_start_ui_thread(void)

int main()

這裡與裸系統不同的地方,主要有兩個:

要提前呼叫 platform_prepare,platform_prepare 負責初始化記憶體,放在 tk_init 中就有些晚,需要單獨提出來呼叫。

為此 platform_prepare 函式做了防重複呼叫的處理。

static bool_t s_inited = false;

static uint32_t s_heam_mem[4096];

ret_t platform_prepare(void)

return ret_ok;

}

awtk 整合 rtos 是非常簡單的,以上過程大概花了 2 個小時吧。只要 rtos 本身好移植,整合 awtk 和 rtos 只是分分鐘的問題。

AWTK 在騰訊 TOS 上的移植筆記

本文以 stm32f103ze 為例,介紹了 awtk 在 rtos 上移植的經驗。與其說移植,倒不如說是整合。因為 rtos 通常沒有提供標準的 lcd 驅動介面,顯示部分並不需要特別的改動。所做的事情不過是把 awtk 放到 rtos 的乙個執行緒中執行而已。awtk 已經移植到 stm32f1...

在龍芯1c上用RT Thread列印hello

rt thread的官方git是 rt thread官方的 rt thread程式設計指南 中有新建執行緒的例子,這裡參考裡面的例子新建乙個靜態執行緒,並在新建的執行緒中列印hello。先來看看 rt thread程式設計指南 中關於靜態執行緒的介紹 在文件中,緊隨其後有例子。總結一下就是先定義好執...

RT Thread的訊息佇列

1.訊息佇列控制塊的組成 結構體 通過下圖可以很容易發現訊息佇列有8個元素.msg pool msg size max msgs entry msg queue head msg queue tail msg queue free和.parent,其中.msg pool為訊息佇列的起始位址 msg ...