Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

📋📌 v5.0.0 特性征集与讨论 | v5.0.0 discussion #5616

Closed
6 tasks
BernardXiong opened this issue Feb 27, 2022 · 52 comments
Closed
6 tasks

📋📌 v5.0.0 特性征集与讨论 | v5.0.0 discussion #5616

BernardXiong opened this issue Feb 27, 2022 · 52 comments

Comments

@BernardXiong
Copy link
Member

BernardXiong commented Feb 27, 2022

v5.0.0是一个大版本发布,一些前期的准备也在推进,考虑到的部分包括:

  • 更好的Cortex-A支持;
    • 在Cortex-A上启用device tree,fdt代码大部分以软件包方式存在;
  • 更好的64位支持;
    • TCP/IP协议栈部分整体验证过,保证64位情况下都没问题;
    • 文件系统相关的都进行验证通过;
  • 完善整体的多核代码,特别是内核代码,核心组件(文件系统,网络协议栈,命令行)的多核支持;
  • 合并rt-smart分支,尽可能的影响只涉及到components/lwp组件的情况即可支持MMU下全进程的特性;
    • 支持用户态下以rust方式编程;
    • 支持用户态的rust egui移植(应用);
  • 集成Flash管理组件,如FAL或类似的;
  • 整理,梳理驱动框架、及bsp驱动命名规则。

其他请多多补充。

@BernardXiong BernardXiong changed the title v5.0.0 特性征集与讨论 | v5.0.0 discussion 📋📌 v5.0.0 特性征集与讨论 | v5.0.0 discussion Feb 27, 2022
@Guozhanxin
Copy link
Member

#5619

@Guozhanxin
Copy link
Member

驱动框架、及bsp驱动命名规则整理。

@mysterywolf
Copy link
Member

LLVM #5551

@mysterywolf
Copy link
Member

mysterywolf commented Mar 1, 2022

线程控制块 隐性继承rt_object的问题 #5500

@armink
Copy link
Member

armink commented Mar 2, 2022

目前缺少 Flash 管理类的组件,挺多嵌入式产品上都会用到相关功能。存储也算是系统基础能力,是不是可以把 FAL 从软件包移动至组件里。

@mysterywolf
Copy link
Member

mysterywolf commented Mar 16, 2022

GCC下完整的自主的libc,不依赖newlib

@BernardXiong
Copy link
Member Author

  • 对调度器进行拆分,分成公共部分,单核部分,SMP多核部分;
  • 对ipc.c进行拆分,这样也可以更清晰;
  • rtdef.h中和设备相关的,都尽可能分离到rtdevice.h中;
  • 🙋‍♂️ 讨论:纳入nimble stack到发布版本中;

@mysterywolf
Copy link
Member

ipc 的FIFO模式也有问题: #4940

@BernardXiong
Copy link
Member Author

BernardXiong commented Mar 25, 2022

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

@mysterywolf
Copy link
Member

目前缺少 Flash 管理类的组件,挺多嵌入式产品上都会用到相关功能。存储也算是系统基础能力,是不是可以把 FAL 从软件包移动至组件里。

康康已经在4.1.0移动完毕 #5662

@mysterywolf
Copy link
Member

mysterywolf commented Apr 5, 2022

版本控制规范:https://semver.org/

目前的版本子号不是很规范,其中RT_VERSION甚至和VS那边造成了冲突

/* RT-Thread version information */
#define RT_VERSION                      4L              /**< major version number */
#define RT_SUBVERSION                   1L              /**< minor version number */
#define RT_REVISION                     1L              /**< revise version number */

参考ESP32:

/** Major version number (X.x.x) */
#define ESP_ARDUINO_VERSION_MAJOR   2
/** Minor version number (x.X.x) */
#define ESP_ARDUINO_VERSION_MINOR   0
/** Patch version number (x.x.X) */
#define ESP_ARDUINO_VERSION_PATCH   3

建议改成:

/* Major version number (X.x.x) */
#define RT_VERSION_MAJOR   4
/* Minor version number (x.X.x) */
#define RT_VERSION_MINOR   2
/* Patch version number (x.x.X) */
#define RT_VERSION_PATCH   0

@mysterywolf
Copy link
Member

mysterywolf commented Apr 8, 2022

消息邮箱消息队列返回消息长度的问题:#5730
消息邮箱不返回消息长度可能还能理解一下,因为要保持小巧、简单。但是消息队列应该返回实际消息的长度。

@jiuxiaxixi
Copy link

USB 方式连接4G 网络?

@jiuxiaxixi
Copy link

目前缺少 Flash 管理类的组件,挺多嵌入式产品上都会用到相关功能。存储也算是系统基础能力,是不是可以把 FAL 从软件包移动至组件里。

好像latest 已经这么做了,不过好像是默认支持STM32F2 这个搞得有点尴尬

@jiuxiaxixi
Copy link

支持用户态下以rust方式编程; 这个棒!

@mysterywolf
Copy link
Member

好像latest 已经这么做了,不过好像是默认支持STM32F2 这个搞得有点尴尬

那个F2只是个例子,你需要自己适配到自己的具体型号,部分bsp也适配了fal,你可以参考

@mysterywolf
Copy link
Member

mysterywolf commented Apr 13, 2022

考虑在v5.0.0中多增加几个RT_Exxx的错误码,相比如uCOS-III的错误码我们的错误码确实比较模糊。大部分错误都被囫囵吞枣的归结到了-RT_ERROR这种没有任何实际指导意义的错误码上。


看了一下freertos的,更少。。。

@jiuxiaxixi
Copy link

那个F2只是个例子,你需要自己适配到自己的具体型号,

我的意思是 这个 这个放在 drv_fal.c 里面,放在 rtthread/componets 里面可能有点不合适,应该是和芯片没有关系才是对的

@mysterywolf
Copy link
Member

mysterywolf commented Apr 14, 2022

考虑将rtdebug.h 和 rtdbg.h整合到成一个文件

@BernardXiong
Copy link
Member Author

  • SConscript下加入对xml构建方式支持;

@BernardXiong BernardXiong pinned this issue Apr 15, 2022
@esonhon
Copy link

esonhon commented Apr 15, 2022

感觉目前components和在线组件等 KConfig菜单结构和组织有些混乱,不太好找。中移的OnesOs应该是基于我们RTT的,但它的菜单结构要条理的多(组件相对较少也是部分原因),可以参考。

@flyucc
Copy link

flyucc commented Apr 20, 2022

目前缺少 Flash 管理类的组件,挺多嵌入式产品上都会用到相关功能。存储也算是系统基础能力,是不是可以把 FAL 从软件包移动至组件里。

使用fal时,总是要去编辑fal_cfg.h,这个能改成通过api注册的方式就好了

@BernardXiong
Copy link
Member Author

目前缺少 Flash 管理类的组件,挺多嵌入式产品上都会用到相关功能。存储也算是系统基础能力,是不是可以把 FAL 从软件包移动至组件里。

使用fal时,总是要去编辑fal_cfg.h,这个能改成通过api注册的方式就好了

这部分如果可以有个UI工具,以图像化方式来创建/编辑是否更好?

@mysterywolf
Copy link
Member

这部分如果可以有个UI工具,以图像化方式来创建/编辑是否更好?

这种方案我之前试验过,可以让sconscript脚本调用一个python脚本,python脚本里使用tkinter绘制图形界面。在执行scons --target=mdk5等操作的时候,这个GUI会自动蹦出来,让用户通过按钮设置,设置的结果返回给sconscript,sconscript再根据设置情况来决定添加什么.c文件或者开启什么宏定义等等。但是路子比较野,所以也就是试验了一下而已。https://github.com/mysterywolf/scons-python

@Guozhanxin
Copy link
Member

完善 C++ 的支持

  • 有一套 cpp 标准库的测试集合
  • 文档梳理清楚,明确支持哪些特性,有个清单

@oyoungs
Copy link

oyoungs commented Apr 22, 2022

添加cmake构建,这样可以使用其他的IDE(比如CLion, VSCode, QtCreator等)更好的代码编辑, 也可以更方便的对项目构建配置编译宏

@mysterywolf
Copy link
Member

添加cmake构建,这样可以使用其他的IDE(比如CLion, VSCode, QtCreator等)更好的代码编辑, 也可以更方便的对项目构建配置编译宏

CMAKE 构建支持的 scons --target=cmake

@cazure
Copy link
Contributor

cazure commented Apr 28, 2022

块设备识别mbr分区和gpt分区功能,并且能有一套管理工具支持,msh命令修改创建分区就好了。mbr功能已经有了,gpt我看到gitee的rt-smart分支有人在提交pr了。

还有fal支持动态修改分区表就好了,最好能在fal中直接支持mbr,gpt。我在想这三个东西都是为了分区而存在的,fal难道不能做个超集把mbr gpt融合进来嘛,哈哈哈。手动狗头

@BernardXiong
Copy link
Member Author

后续rt-smart那边会先合并,然后5.0版本会把smart分支都合并进来。

@mysterywolf
Copy link
Member

mysterywolf commented Apr 30, 2022

image
设备框架没有提供init open close的接口,导致用户如果想要做一些构造和析构操作,例如init的时候初始化IO,close的时候将IO恢复到默认状态,关闭对应的时钟低功耗,都不能实现。
#611

@charlown
Copy link
Contributor

charlown commented May 4, 2022

既然重新加入flash管理组件, FAL组件,要不要规范个OTA框架或者接口,那个stm32通用bootloader挺鸡肋的,能把它开放出来给开发者适配其他芯片么

@mysterywolf
Copy link
Member

mysterywolf commented May 8, 2022

object的名字,可否改为const char*类型,目前每一个object都需要提供默认8字节的名字存储空间,这个名字后续实际上也不会更改,放在ram里是死重,实属浪费的。

@mysterywolf
Copy link
Member

互斥量考虑实现一下优先级天花板协议:
优先级继承协议 -》 自动挡汽车
优先级天花板协议-》手动挡汽车
优先级天花板协议在处理复杂条件下的优先级翻转时可以人工手动控制,行为更受控。

@armink
Copy link
Member

armink commented May 10, 2022

VS 模拟器上开启网络相关功能后存在编译错误:

  • 打开 SAL 有错误
  • 打开 LWIP 有错误

@mysterywolf
Copy link
Member

mysterywolf commented May 18, 2022

梳理需要增加的API:

@mysterywolf
Copy link
Member

mysterywolf commented May 20, 2022

thread结构体下的user_data不能被我方自己所用 dlmodule和pthread都在偷偷地使用这个字段
设备框架中的user_data字段也有这个问题
如果我方内部有可能使用这个字段,就不能用user_data这个名字

@mysterywolf
Copy link
Member

mysterywolf commented May 25, 2022

彻底清除掉finsh的存在,否则会把用户搞蒙 一会shell 一会msh 一会finsh

@mysterywolf
Copy link
Member

mysterywolf commented May 28, 2022

#6007
https://club.rt-thread.org/ask/question/231413344ffb4032.html
用户对设备框架层还是不能完全掌控
没有丰富的文档和教学视频 尤其是移植和框架层内部的讲解
还有一个问题就是设备框架层的命名和规范非常杂,需要统一。
框架命名问题.pptx
#6055
#5342 (comment)

@wxuefei
Copy link

wxuefei commented May 31, 2022

有没有 x64 支持??

@mysterywolf
Copy link
Member

有没有 x64 支持??

https://github.com/RT-Thread/rt-thread/tree/master/bsp/x86

@wxuefei
Copy link

wxuefei commented May 31, 2022

有没有 x64 支持??

https://github.com/RT-Thread/rt-thread/tree/master/bsp/x86

这是 x86 32位的吧,x86_64 也支持?

@mysterywolf
Copy link
Member

#6011 (comment)

@BernardXiong
Copy link
Member Author

有没有 x64 支持??

https://github.com/RT-Thread/rt-thread/tree/master/bsp/x86

这是 x86 32位的吧,x86_64 也支持?

是的,这个是32位的,欢迎来推进x86 64。

@foldl
Copy link
Contributor

foldl commented Jun 21, 2022

NimBLE stack sucks. 千万别。

A few reasons:

  1. Configurations sucks;
  2. Organization of headers/sources sucks;
  3. struct os_mbuf is the worst design I have ever seen.

@Zmmfly
Copy link

Zmmfly commented Jun 22, 2022

RT Smart上 asio 有支持计划吗?

@mysterywolf
Copy link
Member

#6103 (comment)

@cazure
Copy link
Contributor

cazure commented Jun 27, 2022

有支持fdcan的计划吗?我现在发现设备驱动框架里面好像还没有对FDCAN数据包的处理,都是支持CAN2.0AB标准的数据包。之前我看到论坛有人发帖说在artpi上实现了fdcan实际上好像也是支持到CAN2.0AB的数据包。
https://club.rt-thread.org/ask/question/01ee2cb8a03be0ab.html
https://club.rt-thread.org/ask/question/5c1416f99e0cea0f.html

@grissiom
Copy link
Member

话说 can 设备驱动,发送和接收的结构体不一样,能忍?……

@flyucc
Copy link

flyucc commented Jul 20, 2022

rt-thread上有计划ADC/DAC驱动模型的DMA支持嘛?

@mysterywolf
Copy link
Member

@charlown
Copy link
Contributor

charlown commented Aug 2, 2022

这里我写一些关于BSP驱动的想法吧。

最近梳理了一下gd32片上flash的情况
1 flash容量 64k/128k/256k, page 1kb/2kb/4kb
2 flash容量分成bank0, bank1, page 1kb/2kb/4kb
3 flash容量分成bank0, bank1, 使用sector
4 flash容量512k, page 8kb
5 flash容量 <= 128kb, page 1kb

个人把drv flash分成以下系列:
drv_flash_l23x.c
drv_flash_f1x0.c
drv_flash_f10x.c
drv_flash_f20x.c
drv_flash_f3x0.c
drv_flash_f30x.c
drv_flash_f4xx.c
drv_flash_f403.c
drv_flash_e10x.c
drv_flash_e23x.c
drv_flash_e50x.c
drv_flash_c10x.c

对于现在的bsp驱动架构:
drv_flash.c形式
1 同一个文件可能存在几千行代码混杂着大量的宏定义,个人认为过于复杂了
2 不断适配新的芯片有可能频繁改动同一文件,以及为了适配新芯片而加入新的宏定义,频繁改动意味着有可能引入bug风险

drv_flash_xxx.c形式
1 减少改动,减少出现同一个文件修改冲突,以及忘记git pull最新源码造成丢失最新pr的情况
2 利用开源的力量完善驱动,有利于任务分发
比如在开源中国分发完善gd32的drv_flash驱动任务,每个挑战者就可以领取不同系列的drv_flash驱动,加快完善驱动的进程

@mysterywolf
Copy link
Member

image

@mysterywolf mysterywolf unpinned this issue Aug 4, 2022
@RT-Thread RT-Thread locked and limited conversation to collaborators Aug 4, 2022
@mysterywolf mysterywolf converted this issue into discussion #6224 Aug 4, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests