本文以 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 ...