Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RT-Thread 长线推进计划 #7020

Closed
mysterywolf opened this issue Mar 5, 2023 · 15 comments
Closed

RT-Thread 长线推进计划 #7020

mysterywolf opened this issue Mar 5, 2023 · 15 comments
Labels
good first issue Good for newcomers 新手任务

Comments

@mysterywolf
Copy link
Member

mysterywolf commented Mar 5, 2023

No description provided.

@mysterywolf mysterywolf pinned this issue Mar 5, 2023
@BernardXiong
Copy link
Member

BernardXiong commented Mar 5, 2023

@mysterywolf
Copy link
Member Author

mysterywolf commented Mar 5, 2023

@supperthomas
Copy link
Member

supperthomas commented Mar 8, 2023

@BernardXiong
Copy link
Member

BernardXiong commented Mar 13, 2023

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

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

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

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

#7103

@BernardXiong
Copy link
Member

BernardXiong commented Mar 13, 2023

完成: #7709

@BernardXiong
Copy link
Member

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

@mysterywolf
Copy link
Member Author

/* 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 位了

@BernardXiong
Copy link
Member

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

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

@BernardXiong
Copy link
Member

BernardXiong commented Apr 2, 2023

Update list for v5.0.1

@supperthomas supperthomas added the good first issue Good for newcomers 新手任务 label Apr 11, 2023
@dqjay110
Copy link

dqjay110 commented May 8, 2023

考虑增加DMA驱动框架

@mysterywolf
Copy link
Member Author

mysterywolf commented Jun 26, 2023

考虑增加DMA驱动框架

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

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

@mysterywolf mysterywolf changed the title RT-Thread Task List | RT-Thread 任务清单 RT-Thread 长线推进计划 Jun 26, 2023
@BernardXiong
Copy link
Member

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

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

@BernardXiong
Copy link
Member

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

@enkiller
Copy link
Contributor

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

@BernardXiong
Copy link
Member

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

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

@mysterywolf mysterywolf unpinned this issue Mar 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers 新手任务
Projects
None yet
Development

No branches or pull requests

5 participants