Rt-Thread之内核移植(官网+任务切换总结)

本文深入解析RT-Thread实时操作系统的核心机制,包括自动初始化、内核对象管理、中断处理流程、线程栈初始化、上下文切换以及BSP移植等内容,揭示了RT-Thread在Cortex-M架构上的高效实现策略。

启动流程就不必再说了。详情就看熊谱翔的书吧。这里只是说一下对自己来说比较新鲜的地方及所得。

自动初始化机制:

只要在函数定义处通过宏定义的方式进行声明,就会在系统启动过程中被执行。这里当宏理解成开关就可以了,还有其用法,是放在了函数定义处,注意一下就可以,还是比较好理解的,如:

int rt_hw_usart_init(void)  /* 串口初始化函数 */

{

    . . . . .. 

    /* 注册串口1 设备 */

    rt_hw_serial_register(&serial1, "uart1",

                          RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,

                          uart);

    return 0;

}

INIT_BOARD_EXPORT(rt_hw_usart_init);    /* 使用组件自动初始化机制 */

 

内核对象的管理架构,完全是基于面向对象的方法来设计的。两个特点:

1、内核对象包括线程、信号量、互斥量、事件、邮箱、消息队列和定时器、内存池、设备驱动等。对象容器中包含每类内核对象的信息,包括对象类型、大小等。对象容器给每类内核对象分配了一个链表,所有的内核对象都被链接到该链表上。

2、要了解各种类之的继承关系。当然,这里的类指容器。

 

关于内核移植主要是针对cotex-M的CPU架构:

准备知识:

M核通用寄存器就不用说了,见下图:

程序状态字寄存器里保存算术与逻辑标志,例如负数标志,零结果标志,溢出标志等等。

中断屏蔽寄存器组控制 Cortex-M 的中断除能。

控制寄存器用来定义特权级别和当前使用哪个堆栈指针。

MSP,适用于中断模式下。PSP适用于多任务状态。

如果是具有

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值