前言
前面已经让 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 上移植适配完成。
三大运营商在5G方面动作频频,5G用户有望三年突破5亿户
APS计划排产软件助家纺企业进行成本控制
预测性维护如何实现?快来看看这些明星产品吧
openwrt无线中继设置步骤
华为公布新款MateBook 13/14 2021新品
RT-Thread qemu mps2-an385 bsp移植制作 :系统运行篇
智能家居数据中心布线系统设计方法及步骤解析
5G换机潮推迟,屏幕创新当家,全面屏能否焕发能量提振销量
for竟然有那么多种用法!
高比能量动力锂电池寿命衰减难题如何破局
压力传感器的应用实例:汽车、手机、模具
基于SSM2024的混音器电路原理图讲解
简化锁具管理、加强数字化管控
机器人行业发展的宏观背景与公司现状分析
普渡科技参与起草商用清洁机器人团体标准,助力行业发展
隔爆型的蓝牙网关VDB2613可应用于煤矿井下和加油站
热继电器的安装使用和维护
物联网爆发的前哨是怎样的
监控市场的变革与发展
意法半导体Q1季度环比大幅下滑,Q2季度预计净营收20亿美元