rt-thread icon indicating copy to clipboard operation
rt-thread copied to clipboard

RT-Thread 长线推进计划

Open mysterywolf opened this issue 2 years ago • 15 comments

mysterywolf avatar Mar 05 '23 13:03 mysterywolf

  • [x] Task: atomic feature for RT-Thread #7012

BernardXiong avatar Mar 05 '23 13:03 BernardXiong

  • [x] 软件包索引choice块内禁止使用if块,否则Kconfig C前端无法识别 https://github.com/RT-Thread/packages/issues/1564#issuecomment-1455218946 -》 解决:https://github.com/RT-Thread/packages/pull/1580
  • [x] pin框架数据类型优化/更正后,有大量的bsp驱动存在数据类型警告,需要在5.0.0 beta之前修掉。https://github.com/RT-Thread/rt-thread/pull/6934
  • [x] 全面筛查错误码的问题,需要有个脚本自动化筛查 https://github.com/RT-Thread/rt-thread/issues/4791
  • [x] 彻底解决STM32 PWM驱动过去4年以来反复折腾的时钟初始化问题-》解决:https://github.com/RT-Thread/rt-thread/pull/7049
  • [x] rt_thread结构体中改为rt_object显式继承 https://github.com/RT-Thread/rt-thread/pull/5500 https://github.com/RT-Thread/rt-thread/pull/7131

mysterywolf avatar Mar 05 '23 21:03 mysterywolf

  • [x] DOXYGEN warning修复 #6857

supperthomas avatar Mar 08 '23 14:03 supperthomas

  • [x] 对调度器进行拆分,分成公共部分,单核部分,SMP多核部分;

这样在调度器层面,如果仅针对单核大多数场合只看到单核的代码;针对多核时,才会看到更多多核的代码。

可以考虑把schedule.c拆分成三个:

  • scheduler_common.c,up/mp下公共的文件实现;
  • scheduler_up.c
  • scheduler_mp.c

https://github.com/RT-Thread/rt-thread/pull/7103

BernardXiong avatar Mar 13 '23 11:03 BernardXiong

  • [x] 消息邮箱消息队列返回消息长度的问题 https://github.com/RT-Thread/rt-thread/issues/5730

完成: https://github.com/RT-Thread/rt-thread/pull/7709

BernardXiong avatar Mar 13 '23 11:03 BernardXiong

  • [ ] 加入tls(Thread Local Storage)特性,可以在tls基础上加入更多的辅助功能

BernardXiong avatar Mar 13 '23 11:03 BernardXiong

/* global errno in RT-Thread */
static volatile int __rt_errno;

rt_err_t rt_get_errno(void)
{
    rt_thread_t tid;

    if (rt_interrupt_get_nest() != 0)
    {
        /* it's in interrupt context */
        return __rt_errno;
    }

    tid = rt_thread_self();
    if (tid == RT_NULL)
        return __rt_errno;

    return tid->error;
}

void rt_set_errno(rt_err_t error)
{
    rt_thread_t tid;

    if (rt_interrupt_get_nest() != 0)
    {
        /* it's in interrupt context */
        __rt_errno = error;

        return;
    }

    tid = rt_thread_self();
    if (tid == RT_NULL)
    {
        __rt_errno = error;

        return;
    }

    tid->error = error;
}

__rt_errno 的原始数据类型是 int. 

typedef long                            rt_base_t;      /**< Nbit CPU related date type */
typedef rt_base_t                       rt_err_t; 

rt_err_t 的类型是 long 

所以这里就是 int 和 long 直接就转了,在 32 位平台int 和 long 都是 32 位,在 64 位的时候,long 就是 64 位了

mysterywolf avatar Mar 16 '23 00:03 mysterywolf

可以考虑重点维护一些BSP:

  • MCU
  • WiFi类芯片
  • MPU
    • ARM Cortex-A
    • ARM Cortex-A64
  • RISCV相关典型芯片
    • RV64 with smart

BernardXiong avatar Mar 18 '23 15:03 BernardXiong

Update list for v5.0.1

  • DFS v2.0 for rt-smart
    • #7156
  • Optimize gdb debugging behavior
    • #7033

BernardXiong avatar Apr 02 '23 13:04 BernardXiong

考虑增加DMA驱动框架

dqjay110 avatar May 08 '23 03:05 dqjay110

考虑增加DMA驱动框架

考虑交给底层驱动自由实现?而不是提供一套统一的DMA抽象。

理由:在实现抽闲的同时,也会损失一部分功能和自由性,这块应该交给底层驱动,例如SPI驱动,内部整合DMA方式,提供宏开关选择是否开启DMA。

mysterywolf avatar Jun 26 '23 04:06 mysterywolf

  • [ ] 加入tls(Thread Local Storage)特性,可以在tls基础上加入更多的辅助功能

这部分可以尝试先添加一些测试用例,看看这部分的tls如何使用,影响包含哪些。

BernardXiong avatar Aug 05 '23 07:08 BernardXiong

  • [ ] 加入IP化的设备驱动框架,包括设备树,pinctrl,clk等基础框架;
    • [ ] pinctrl框架
    • [ ] clk框架
  • [ ] tty更新和完善

BernardXiong avatar Aug 05 '23 09:08 BernardXiong

TLS 特性目前在推进吗?大概是什么情况?

enkiller avatar Aug 30 '23 08:08 enkiller

TLS 特性目前在推进吗?大概是什么情况?

应该暂时没有。tls特性在smart上遇到了更多,不过目前看起来,似乎都还ok。

BernardXiong avatar Sep 03 '23 13:09 BernardXiong