RT-Thread针对PSE51标准规定头文件及对应接口

网友投稿 379 2022-10-31

RT-Thread针对PSE51标准规定头文件及对应接口

2、Real-time Controller Profile IEEE Std 1003.13 PSE52,带有简单的文件系统…等

3、Dedicated Real-time Profile IEEE Std 1003.13 PSE53,拥有网络功能…等

4、Multi-Purpose Real-time Profile IEEE Std 1003.13 PSE54,完整的文件系统,带有 Shell 组件…等

2. POSIX 在 RT-Thread 中支持情况

RT-Thread 针对 PSE51 的标准规定的头文件及对应接口,提供了大部分接口。除此之外,我们还提供了更加完整的文件系统的接口,以及基于我们 SAL 组件的网络接口。这为 POSIX 的应用迁移打下了基础,可以使得较复杂的 POSIX 应用也可以经过小部分修改就可以在 RT-Thread 上运行。

POSIX FILE 相关接口,包含了文件系统的内容,接口比较丰富;标准 I/O 接口,Poll / Select 等较复杂的功能也已经支持

Delay 相关接口

Clock 相关接口,对拥有 RTC 硬件,或者没有使用 RTC 硬件的设备都有对应的功能实现

Dynamic 动态模块

由于在不同的平台开发所使用的编译工具链不一致;所以在实现时,RT-Thread 区分了三个概念:广义的 POSIX,狭隘的 POSIX,编译器配平层;下面结合关系图,描述一下对应的概念:

广义的 POSIX ,即 POSIX 接口;这里面包含了一些关于 pthread, signal, IPC 等函数以及 C 库的相关内容;

狭隘的 POSIX,即不是 C 库标准提供以外的 POSIX 函数,例如 pthread 这些内容;

编译器配平层,由 C 库相关提供的函数。由于不同编译平台对该内容的实现参差不齐,因此需要针对不同的编译平台增补这些函数。这也就是 “ 配平 ” 的由来。这块内容较多,且不同的编译工具链所支持的操作不一,因此在 POSIX 代码迁移时需要修改这里来解决对应的编译错误。

4. POSIX 在 RT-Thread 中使用方法

4.1 Pthread 接口

1、在 menuconfig 中打开 pthread ,设定支持得最大 pthread 数目

2、在用户代码中,即可使用 pthread.h, sche.h 这些 pthread 提供的头文件来编程

4.2 Timer 接口

1、在 menuconfig 中打开 timer 即可

2、在用户代码中,即可使用 这些 timer 提供的头文件来编程

4.3 Net 接口

1、在 menuconfig 中打开 Enable BSD Socket I/O 就可以使用标准 Socket 进行编程

4.4 Filesystem 接口

1、在 menuconfig 中打开Enable POSIX file system and I/O 配置具体的 POSIX 函数接口

4.5 其他接口

其他接口也是一样,开打对应的 menuconfig 选项,即可使用对应头文件,及提供的函数来编程。整个过程不需要 rt-thread 的头文件参与,使编译出的代码运行在 RT-Thread 操作系统之上。

5. 注意事项5.1 不同编译平台的兼容

在上一节,编译器配平层的存在解决了多组编译工具链不一致造成的问题;同时,也引入了一些在编写代码时需要注意的事项。这些注意事项是为了解决对应的编译错误。因为编译工具链有的允许头文件替换,有的不支持这些问题。RT-Thread 提供了一个相对轻便的解决办法:

为保证跨不同编译器、不同工具链的兼容性,建议用户应用层代码:

使用 《sys/time.h》 代替 《time.h》

使用 《sys/errno.h》 代替 《errno.h》

使用 《sys/signal.h》 代替 《signal.h》

有使用 《time.h》 的引用逻辑的,修改为 《sys/time.h》 的方式来避免编译错误;其他两个也是类似的处理逻辑,拟合不同编译工具链的处理逻辑。

5.2 Net 接口

启用网络功能后,并不是所有的 BSD Socket 接口都支持,在 RT-Thread 中只实现了一部分函数。因此如果对应函数缺失,需要按照代码逻辑替换为基础的 Socket 接口来兼容原逻辑。完整的 BSD Socket 功能将持续优化以解决这个问题。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:第三节(函数)
下一篇:ELK logstash是如何工作的?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~