From 1bf44bf9cf2cd5787802a53b1003a141a88ff161 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 11 Jan 2022 10:51:25 -0500 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0libc=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=89=8B=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{dlmodule => libc}/dlmodule.md | 0 .../libc/figures/libc_structure.png | Bin 0 -> 21425 bytes .../programming-manual/libc/libc.md | 82 ++++++++++++++++++ 3 files changed, 82 insertions(+) rename rt-thread-version/rt-thread-standard/programming-manual/{dlmodule => libc}/dlmodule.md (100%) create mode 100644 rt-thread-version/rt-thread-standard/programming-manual/libc/figures/libc_structure.png create mode 100644 rt-thread-version/rt-thread-standard/programming-manual/libc/libc.md diff --git a/rt-thread-version/rt-thread-standard/programming-manual/dlmodule/dlmodule.md b/rt-thread-version/rt-thread-standard/programming-manual/libc/dlmodule.md similarity index 100% rename from rt-thread-version/rt-thread-standard/programming-manual/dlmodule/dlmodule.md rename to rt-thread-version/rt-thread-standard/programming-manual/libc/dlmodule.md diff --git a/rt-thread-version/rt-thread-standard/programming-manual/libc/figures/libc_structure.png b/rt-thread-version/rt-thread-standard/programming-manual/libc/figures/libc_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..07da690e7c40c27a692cb2342cdea4b462d1a937 GIT binary patch literal 21425 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 头文件)。 + +目前,RT-Thread的时间相关Libc函数唯一不支持的是夏令时自动转换相关功能。夏令时在中国不使用,主要是欧美国家在使用。 + +> [!NOTE] +> 注:时区是给人看的,不是给机器看的。因此,底层驱动不应当使用带有时区的时间,而应该使用格林威治时间,即UTC+0,当且仅当该时间需要显示出来给人看的时候,才需要临时将其使用带有时区转换功能的函数(例如`ctime`)显示时间。 +> +> 注意以下两组函数的区别,功能相同,唯一的区别是是否考虑时区问题: +> +> | | 考虑时区 | 不考虑时区 | +> | ------ | --------- | ---------- | +> | 第一组 | localtime | gmtime | +> | 第二组 | mktime | timegm | + +### 1.5 注意事项 + +为保证跨不同编译器、不同工具链的兼容性,建议用户应用层代码: + +- 使用 `` 代替 `` +- 使用 `` 代替 `` + +## 2. POSIX 层 + +#### 2.1 标准输入输出函数 + +在不使能 POSIX 层相关功能的情况下,用户无法使用 `read`、`getchar` 等获取字符串输入的标准 C 函数,需要开启 `RT_USING_POSIX_FS` 和 `RT_USING_POSIX_STDIO` 宏。 + +如果已经开启 Finish 功能的话,可以在 finish 线程下,使用 `finish_getchar` 代替 `getchar`,来获取从终端键入的字符。 -- Gitee From f327d9d3a434fc3912b2a68eec78733b96ebc15f Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 11 Jan 2022 14:59:31 -0500 Subject: [PATCH 2/2] update libc --- .../programming-manual/libc/libc.md | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/libc/libc.md b/rt-thread-version/rt-thread-standard/programming-manual/libc/libc.md index a18f30b..0892f7d 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/libc/libc.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/libc/libc.md @@ -8,7 +8,7 @@ RT-Thread 提供的 Libc (C library, C库),包含编译器配平层和 POSIX ## 1. 编译器配平层 -编译器配平层负责平衡不同编译工具链以及编译平台的差异而设计,为上层 POSIX 层提供功能统一的接口,位于 [components/libc/compiler](https://github.com/RT-Thread/rt-thread/tree/master/components/libc/compilers) 文件目录下。之所以需要配平,是由于 GCC、Keil-MDK、IAR 三个编译工具所提供的标准 C 库函数支持程度不一样,编译器配平层负责将 Keil-MDK、IAR、GCC 三种不同的编译链所提供的标准 C 库平衡到相同的水平。编译器配平层无需用户手动干预,会在编译工程时,根据用户所使用的的编译平台和工具链自动进行配平。 +编译器配平层负责对接编译器的底层桩函数以及平衡不同编译器内置C库函数的差异而设计,为上层 POSIX 层提供功能统一的接口,位于 [components/libc/compiler](https://github.com/RT-Thread/rt-thread/tree/master/components/libc/compilers) 文件目录下。之所以需要配平,是由于 GCC、Keil-MDK、IAR 三个编译工具所提供的标准 C 库函数支持程度不一样,编译器配平层负责将 Keil-MDK、IAR、GCC 三种不同的编译链所提供的标准 C 库平衡到相同的水平。编译器配平层无需用户手动干预,会在编译工程时,根据用户所使用的的编译平台和工具链自动进行配平。 配平层已经提供了一些基本的 libc 函数,这些函数不需要用户额外使能,可以即刻使用。 @@ -38,17 +38,23 @@ RT-Thread 提供的 Libc (C library, C库),包含编译器配平层和 POSIX 同理,原生 `rt_snprintf` 等函数不支持浮点输出,用户可以通过安装 [rt_vsnprintf_full 软件包](https://github.com/mysterywolf/rt_vsnprintf_full) 来支持浮点数输出。 -### 1.2 内存分配函数 +### 1.2 内存相关函数 `malloc`、`realloc`、`calloc`、`free` 内存分配函数可以直接使用,其已经被 `rt_malloc`、`rt_calloc`、`rt_realloc`、`rt_free` 函数接管,二者无任何区别。 -### 1.3 系统函数 +`memcpy`、`memset` 等内存操作相关函数。这里需要注意的时,建议使用`rt_memcpy` 以及 `rt_memset` 来代替 `memcpy` 和 `memset`,虽然`rt_memxxx` 函数要比C库的内存操作函数要慢一些,但是要更安全;除非您对拷贝速度非常在意,否则建议使用 `rt_memxxx` 函数。如果使用的是 Cortex-M 的 MCU,可以安装 [rt_memcpy_cm](https://github.com/mysterywolf/rt_memcpy_cm) 软件包来对 `rt_memcpy` 函数进行汇编加速,该软件包安全且高效。 + +### 1.3 字符串相关函数 + +`strlen` 等字符串相关函数为编译器C库内置函数,可以直接使用。 + +### 1.4 系统函数 `exit`、`abort` 函数,调用后相当于删除当前线程。 `system` 函数可以用于在 C 程序中内置执行一些 Finish 命令。 -### 1.4 时间函数 +### 1.5 时间函数 所有 ANSI/ISO-C 规定的时间函数均可以使用,例如 `time`、`ctime` 等函数。注意:部分涉及到获取当前时间的函数需要使能 RTC 设备才可以正常工作,如果没有使能 RTC 设备就调用这些函数,会在串口终端给出警告。 @@ -57,7 +63,7 @@ RT-Thread 提供的 Libc (C library, C库),包含编译器配平层和 POSIX 目前,RT-Thread的时间相关Libc函数唯一不支持的是夏令时自动转换相关功能。夏令时在中国不使用,主要是欧美国家在使用。 > [!NOTE] -> 注:时区是给人看的,不是给机器看的。因此,底层驱动不应当使用带有时区的时间,而应该使用格林威治时间,即UTC+0,当且仅当该时间需要显示出来给人看的时候,才需要临时将其使用带有时区转换功能的函数(例如`ctime`)显示时间。 +> 注:时区是给人看的,不是给机器看的。因此,底层驱动不应当使用带有时区的时间,而应该使用格林威治时间,即UTC+0。当且仅当该时间需要显示出来给人看的时候,才需要临时将其使用带有时区转换功能的函数(例如`ctime`)显示时间。否则很容易引发时间上的错乱。 > > 注意以下两组函数的区别,功能相同,唯一的区别是是否考虑时区问题: > @@ -66,12 +72,11 @@ RT-Thread 提供的 Libc (C library, C库),包含编译器配平层和 POSIX > | 第一组 | localtime | gmtime | > | 第二组 | mktime | timegm | -### 1.5 注意事项 - -为保证跨不同编译器、不同工具链的兼容性,建议用户应用层代码: +### 1.6 注意事项 -- 使用 `` 代替 `` -- 使用 `` 代替 `` +1. 为保证跨不同编译器、不同工具链的兼容性,建议用户应用层代码: + - 使用 `` 代替 `` + - 使用 `` 代替 `` ## 2. POSIX 层 -- Gitee