前言
前面已經讓 RT-Thread 進入了 entry 入口函數,并且 調整 鏈接腳本,自動初始化與 MSH shell 的符號已經預留, 進入了 RT-Thread 的初始化流程
接下來:從 內存管理、系統tick 定時器、適配串口 uart 驅動三個模塊入手,讓RT-Thread 真正運行起來
系統tick定時器
可以稱之為 操作系統的心跳,一般是個周期性的定時器,比如 1ms 為周期,周期性的執行。
通過驗證,mps2-an385 支持 systick 定時器,簡單配置后,就可以實現 系統 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 當前被 board.c 中的 rt_hw_board_init 調用,而 rt_hw_board_init 又被 RT-Thread rtthread_startup 調用, rtthread_startup 被 RT-Thread 入口函數 entry 調用,這個 entry 又被 啟動文件 Reset_Handler 調用,Reset_Handler 是 MCU 上電執行的函數。
初始化 rt_hw_systick_init 后,VS Code gdb 調試,發現可以周期性進入 SysTick_Handler,也就是 systick 定時器的中斷處理函數,在這個函數中,執行 rt_tick_increase,基于時間片的系統調度、系統定時與延時等,都依賴 系統 tick 定時器,也就是移植 RT-Thread,必須有周期性 tick 定時器
系統內存管理
./qemu.sh 運行信息
以上,說明RT-Thread qemu mps2-an385 bsp 制作初步完成,當前初步驗證,無法支持文件系統,并且其他的外設欠缺資料,因為移植宣告完成。 可以通過 VS Code gdb 調試,熟悉 RT-Thread 系統調用、內存分配、測試驗證各個 RT-Thread 功能模塊
小結
本篇通過 bsp 適配 內存管理、串口驅動、系統 tick 定時器,讓 RT-Thread 跑起來,qemu mps2-an385 bsp 在 RT-Thread 上移植適配完成。
-
RAM
+關注
關注
8文章
1369瀏覽量
114808 -
定時器
+關注
關注
23文章
3253瀏覽量
115063 -
UART接口
+關注
關注
0文章
124瀏覽量
15316 -
RT-Thread
+關注
關注
31文章
1299瀏覽量
40258 -
gdb調試器
+關注
關注
0文章
10瀏覽量
1104
發布評論請先 登錄
相關推薦
如何在windows和linux平臺使用RT-Thread QEMU BSP,并運行RT-ThreadGUI示例
![如何在windows和linux平臺使用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>QEMU</b> <b class='flag-5'>BSP</b>,并<b class='flag-5'>運行</b><b class='flag-5'>RT</b>-ThreadGUI示例](https://file.elecfans.com/web1/M00/45/E4/o4YBAFp7oDmAJmgMAAAVSNIpyFs909.png)
RT-Thread的STM32BSP制作教程
掌握RT-Thread系統移植的基本方法
如何在Window及Ubuntu平臺使用QEMU運行 RT-Thread qemu-vexpress-a9 BSP工程
在Windows平臺使用Eclipse調試RT-Thread qemu-vexpress-a9 BSP工程
使用QEMU運行RT-Thread時BSP下的以太網卡驅動實現原理?
RT-Thread BSP qemu-virt64-aarch64文件系統
STM32系列RT-Thread系統BSP制作教程免費下載
![STM32系列<b class='flag-5'>RT-Thread</b><b class='flag-5'>系統</b><b class='flag-5'>BSP</b><b class='flag-5'>制作</b>教程免費下載](https://file.elecfans.com/web1/M00/85/7D/o4YBAFxzUgCAO8bCAACgJ95Z9JQ053.png)
手把手教你在RT-THREAD bsp上運行pikascript腳本點亮小燈
![手把手教你在<b class='flag-5'>RT-THREAD</b> <b class='flag-5'>bsp</b>上<b class='flag-5'>運行</b>pikascript腳本點亮小燈](https://file1.elecfans.com/web2/M00/8E/69/wKgaomTGflCAEE0SAAAYtwqeRXo631.png)
RT-Thread qemu mps2-an385 bsp移植制作 :BSP制作篇
![<b class='flag-5'>RT-Thread</b> <b class='flag-5'>qemu</b> <b class='flag-5'>mps2-an385</b> <b class='flag-5'>bsp</b><b class='flag-5'>移植</b><b class='flag-5'>制作</b> :<b class='flag-5'>BSP</b><b class='flag-5'>制作</b><b class='flag-5'>篇</b>](https://file1.elecfans.com/web2/M00/8E/C9/wKgZomTJ_E2Ac_3UAADDSPEuGtI790.jpg)
RT-Thread BSP qemu-virt64-aarch64文件系統
![<b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b> <b class='flag-5'>qemu</b>-virt64-aarch64文件<b class='flag-5'>系統</b>](https://file1.elecfans.com/web2/M00/A7/49/wKgaomUiaRKAcf2PAACt4_7IDoQ682.jpg)
評論