前言
前面已經(jīng)讓 RT-Thread 進(jìn)入了 entry 入口函數(shù),并且 調(diào)整 鏈接腳本,自動初始化與 MSH shell 的符號已經(jīng)預(yù)留, 進(jìn)入了 RT-Thread 的初始化流程
接下來:從 內(nèi)存管理、系統(tǒng)tick 定時器、適配串口 uart 驅(qū)動三個模塊入手,讓RT-Thread 真正運行起來
系統(tǒng)tick定時器
可以稱之為 操作系統(tǒng)的心跳,一般是個周期性的定時器,比如 1ms 為周期,周期性的執(zhí)行。
通過驗證,mps2-an385 支持 systick 定時器,簡單配置后,就可以實現(xiàn) 系統(tǒng) tick 定時器功能
修改完善 drv_common.c
#include
#include
#include "CMSDK_CM3.h"
#include "system_CMSDK_CM3.h"
static uint32_t _systick_ms = 1;
/**
This is the timer interrupt service routine.
/
void SysTick_Handler(void)
{
/ enter interrupt /
rt_interrupt_enter();
rt_tick_increase();
/ leave interrupt /
rt_interrupt_leave();
}
/ SysTick configuration */
void rt_hw_systick_init(void)
{
SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
NVIC_SetPriority(SysTick_IRQn, 0xFF);
_systick_ms = 1000u / RT_TICK_PER_SECOND;
if(_systick_ms == 0)
_systick_ms = 1;
}
rt_hw_systick_init 當(dāng)前被 board.c 中的 rt_hw_board_init 調(diào)用,而 rt_hw_board_init 又被 RT-Thread rtthread_startup 調(diào)用, rtthread_startup 被 RT-Thread 入口函數(shù) entry 調(diào)用,這個 entry 又被 啟動文件 Reset_Handler 調(diào)用,Reset_Handler 是 MCU 上電執(zhí)行的函數(shù)。
初始化 rt_hw_systick_init 后,VS Code gdb 調(diào)試,發(fā)現(xiàn)可以周期性進(jìn)入 SysTick_Handler,也就是 systick 定時器的中斷處理函數(shù),在這個函數(shù)中,執(zhí)行 rt_tick_increase,基于時間片的系統(tǒng)調(diào)度、系統(tǒng)定時與延時等,都依賴 系統(tǒng) tick 定時器,也就是移植 RT-Thread,必須有周期性 tick 定時器
系統(tǒng)內(nèi)存管理
./qemu.sh 運行信息
以上,說明RT-Thread qemu mps2-an385 bsp 制作初步完成,當(dāng)前初步驗證,無法支持文件系統(tǒng),并且其他的外設(shè)欠缺資料,因為移植宣告完成。 可以通過 VS Code gdb 調(diào)試,熟悉 RT-Thread 系統(tǒng)調(diào)用、內(nèi)存分配、測試驗證各個 RT-Thread 功能模塊
小結(jié)
本篇通過 bsp 適配 內(nèi)存管理、串口驅(qū)動、系統(tǒng) tick 定時器,讓 RT-Thread 跑起來,qemu mps2-an385 bsp 在 RT-Thread 上移植適配完成。
-
RAM
+關(guān)注
關(guān)注
8文章
1391瀏覽量
116783 -
定時器
+關(guān)注
關(guān)注
23文章
3287瀏覽量
117205 -
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
15732 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1370瀏覽量
41509 -
gdb調(diào)試器
+關(guān)注
關(guān)注
0文章
10瀏覽量
1150
發(fā)布評論請先 登錄
如何在windows和linux平臺使用RT-Thread QEMU BSP,并運行RT-ThreadGUI示例

RT-Thread的STM32BSP制作教程
掌握RT-Thread系統(tǒng)移植的基本方法
如何在Window及Ubuntu平臺使用QEMU運行 RT-Thread qemu-vexpress-a9 BSP工程
在Windows平臺使用Eclipse調(diào)試RT-Thread qemu-vexpress-a9 BSP工程
使用QEMU運行RT-Thread時BSP下的以太網(wǎng)卡驅(qū)動實現(xiàn)原理?
RT-Thread BSP qemu-virt64-aarch64文件系統(tǒng)
STM32系列RT-Thread系統(tǒng)BSP制作教程免費下載

手把手教你在RT-THREAD bsp上運行pikascript腳本點亮小燈

RT-Thread qemu mps2-an385 bsp移植制作 :環(huán)境搭建篇

RT-Thread qemu mps2-an385 bsp移植制作 :BSP制作篇

RT-Thread BSP qemu-virt64-aarch64文件系統(tǒng)

評論