diff --git a/docs/zh/docs/Embedded/Embedded.md b/docs/zh/docs/Embedded/Embedded.md deleted file mode 100644 index 9da58178e856c0a023dd232cc59cbe682a06e810..0000000000000000000000000000000000000000 --- a/docs/zh/docs/Embedded/Embedded.md +++ /dev/null @@ -1,7 +0,0 @@ -# 嵌入式 - -本文档主要包含以下内容: - -- openEuler Embedded用户指南:介绍openEuler Embedded如何使用、如何构建,如何开发的相关内容。 - -- UniProton用户指南:介绍UniProton的基本功能和接口说明。 diff --git a/docs/zh/docs/Embedded/UniProton/_toc.yaml b/docs/zh/docs/Embedded/UniProton/_toc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..44a46ce762dd3e07f16a1acce52f627ede2f7092 --- /dev/null +++ b/docs/zh/docs/Embedded/UniProton/_toc.yaml @@ -0,0 +1,10 @@ +label: UniProton用户指南 +isManual: true +description: UniProton是面向嵌入式场景的操作系统,支持任务和内存管理、中断处理,提供强大调试能力 +sections: + - label: 概述 + href: ./overview.md + - label: UniProton功能设计 + href: ./uniproton_functions.md + - label: UniProton接口说明 + href: ./uniproton_apis.md diff --git "a/docs/zh/docs/Embedded/UniProton/UniProton\347\224\250\346\210\267\346\214\207\345\215\227-\346\246\202\350\277\260.md" b/docs/zh/docs/Embedded/UniProton/overview.md similarity index 66% rename from "docs/zh/docs/Embedded/UniProton/UniProton\347\224\250\346\210\267\346\214\207\345\215\227-\346\246\202\350\277\260.md" rename to docs/zh/docs/Embedded/UniProton/overview.md index 92097256087e61eea9400d8c0f5b34f95240f8d2..84d252fa8613ce59f67818ffbbaf08544aeaed24 100644 --- "a/docs/zh/docs/Embedded/UniProton/UniProton\347\224\250\346\210\267\346\214\207\345\215\227-\346\246\202\350\277\260.md" +++ b/docs/zh/docs/Embedded/UniProton/overview.md @@ -1,13 +1,11 @@ -# UniProton用户指南 +# UniProton用户指南 -## 介绍 +## 介绍 UniProton是基于openEuler社区面向嵌入式场景的操作系统,旨在成为一个高质量的为上层业务软件屏蔽底层硬件差异,并提供强大的调试功能的操作系统平台。使业务软件可以在不同的硬件平台之间快速移植,方便产品芯片选型,降低硬件采购成本和软件维护成本。 本文档主要用于介绍UniProton的基本功能和接口说明,便于开发人员了解基本的UniProton操作系统知识。 -## 编译教程 - -相关编译教程,可参考:[https://gitee.com/openeuler/UniProton/blob/master/doc/UniProton_build.md](https://gitee.com/openeuler/UniProton/blob/master/doc/UniProton_build.md/)。 - +## 编译教程 +相关编译教程,可参考:。 diff --git "a/docs/zh/docs/Embedded/UniProton/UniProton\346\216\245\345\217\243\350\257\264\346\230\216.md" b/docs/zh/docs/Embedded/UniProton/uniproton_apis.md similarity index 99% rename from "docs/zh/docs/Embedded/UniProton/UniProton\346\216\245\345\217\243\350\257\264\346\230\216.md" rename to docs/zh/docs/Embedded/UniProton/uniproton_apis.md index baf44a5c29931626317ed4112b62d210d6276554..07cea125d484287f884ca7c2c12e2ecddc517b9a 100644 --- "a/docs/zh/docs/Embedded/UniProton/UniProton\346\216\245\345\217\243\350\257\264\346\230\216.md" +++ b/docs/zh/docs/Embedded/UniProton/uniproton_apis.md @@ -1843,7 +1843,6 @@ sem_destroy()函数销毁 sem 指示的匿名信号量。只有使用 sem_init() 2. oflag参数控制信号量是创建还是仅通过调用sem_open()访问。以下标志位可以在oflag中设置: - O_CREAT:如果信号量不存在,则此标志用于创建信号量。 - - O_EXCL:如果设置了O_EXCL和O_CREAT,且信号量名称存在,sem_open()将失败。如果设置了O_EXCL而未设置O_CREAT,则效果未定义。 3. 如果在oflag参数中指定了O_CREAT和O_EXCL以外的标志,则效果未指定。 @@ -3231,6 +3230,7 @@ imaxdiv()函数将计算intmax_t型除法的商和余数。如果余数或商不 #### wcstol wcstol()将宽字符串转换为long型正数。输入字符串分解为三部分。 + 1. 初始的(可能为空的)空白宽字符代码序列(由iswspace()指定)。 2. long型整数,进制的类型由base入参决定。 3. 由一个或多个无法识别的宽字符代码组成的最终宽字符串。 @@ -3242,6 +3242,7 @@ wcstol()将宽字符串转换为long型正数。输入字符串分解为三部 #### wcstod wcstod()将宽字符串转换为double型浮点数。输入字符串分解为三部分。 + 1. 初始的(可能为空的)空白宽字符代码序列(由iswspace()指定)。 2. double型浮点数、无穷大或者NaN。 3. 由一个或多个无法识别的宽字符代码组成的最终宽字符串。 @@ -3317,6 +3318,7 @@ imaxabs()函数计算并返回intmax_t型的绝对值。 #### strtol strtol()函数转换字符串到long型数值。这将nptr所指向的字符串的初始部分转换为long类型的表示形式。首先,它们将输入字符串分解为三部分: + 1. 一个初始的、可能为空的空白字符序列(由isspace()函数判断)。 2. long型整数,进制的类型由base入参决定。 3. 由一个或多个不可识别字符组成的最后字符串,包括输入字符串的终止NUL字符。 @@ -3328,6 +3330,7 @@ strtol()函数转换字符串到long型数值。这将nptr所指向的字符串 #### strtod strtod()函数将字符串转换为double型。输入字符串分解为三部分。 + 1. 初始的(可能为空的)空白字符代码序列(由isspace()指定)。 2. double型浮点数、无穷大或者NaN。 3. 由一个或多个无法识别的字符代码组成的最终字符串。 @@ -3577,7 +3580,7 @@ errno: 暂不支持 -####shmdt +#### shmdt 暂不支持 @@ -5551,7 +5554,6 @@ vwscanf()函数从标准输入stdin中读取格式化的数据到变量参数列 - 成功匹配数:操作成功。 - -1:操作失败。 - ## C11接口 | 接口名 | 适配情况 | @@ -5874,7 +5876,7 @@ tss_set() 函数应将线程特定的 value 与通过先前调用 tss_create() | [ftime](#ftime) | 支持 | | [timegm](#timegm) | 支持 | -#### pthread_getattr_default_np +### pthread_getattr_default_np pthread_getattr_default_np() 函数初始化attr引用的线程属性对象,使其包含用于创建线程的默认属性。 @@ -5885,7 +5887,7 @@ pthread_getattr_default_np() 函数初始化attr引用的线程属性对象, - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_setattr_default_np +### pthread_setattr_default_np pthread_setattr_default_np() 函数用于设置创建新线程的默认属性,即当使用NULL的第二个参数调用pthread_create时使用的属性。 @@ -5896,7 +5898,7 @@ pthread_setattr_default_np() 函数用于设置创建新线程的默认属性, - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_getattr_np +### pthread_getattr_np pthread_getattr_np() 函数初始化attr引用的线程属性对象,使其包含描述正在运行的线程线程的实际属性值。 @@ -5910,7 +5912,7 @@ pthread_getattr_np() 函数初始化attr引用的线程属性对象,使其包 - 0:操作成功。 - 非0值:操作失败。 -#### pthread_getname_np +### pthread_getname_np pthread_getname_np() 函数可用于检索线程的名称。thread参数指定要检索其名称的线程。 @@ -5925,7 +5927,7 @@ pthread_getname_np() 函数可用于检索线程的名称。thread参数指定 - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_setname_np +### pthread_setname_np pthread_setname_np() 函数可用于设置线程的名称。 @@ -5940,7 +5942,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_timedjoin_np +### pthread_timedjoin_np 类似pthread_join,如果线程尚未终止,则调用将阻塞直到abstime中指定的最大时间。如果超时在线程终止之前到期,则调用将返回错误。 @@ -5956,7 +5958,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 - EINVAL:指针未初始化。 - ETIMEDOUT:阻塞超时。 -#### pthread_tryjoin_np +### pthread_tryjoin_np 类似pthread_join,但如果线程尚未终止,将立即返回EBUSY。 @@ -5971,7 +5973,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 - EINVAL:指针未初始化。 - EBUSY:调用时线程尚未终止。 -#### ftime +### ftime 取得当前的时间和日期,由一个timeb结构体返回。 @@ -5981,7 +5983,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 **输出**:无 -#### timegm +### timegm 将tm结构体表示的时间转换为自一个标准时间点以来的时间,不受本地时区的影响。 @@ -6305,4 +6307,4 @@ errno: - OS_ERRNO_SHELL_CMDREG_PARA_ERROR:无效的输入参数。 - OS_ERRNO_SHELL_CMDREG_CMD_ERROR:无效的字符串关键字。 - OS_ERRNO_SHELL_CMDREG_CMD_EXIST:关键字已存在。 -- OS_ERRNO_SHELL_CMDREG_MEMALLOC_ERROR:内存不足。 \ No newline at end of file +- OS_ERRNO_SHELL_CMDREG_MEMALLOC_ERROR:内存不足。 diff --git "a/docs/zh/docs/Embedded/UniProton/UniProton\345\212\237\350\203\275\350\256\276\350\256\241.md" b/docs/zh/docs/Embedded/UniProton/uniproton_functions.md similarity index 92% rename from "docs/zh/docs/Embedded/UniProton/UniProton\345\212\237\350\203\275\350\256\276\350\256\241.md" rename to docs/zh/docs/Embedded/UniProton/uniproton_functions.md index aec2ada3f282c56901a85bc86bb5e2296655a240..d3c5480cf6c35d40053b17d3d466b04ac835fda3 100644 --- "a/docs/zh/docs/Embedded/UniProton/UniProton\345\212\237\350\203\275\350\256\276\350\256\241.md" +++ b/docs/zh/docs/Embedded/UniProton/uniproton_functions.md @@ -1,43 +1,5 @@ # UniProton功能设计 - - -- [UniProton功能设计](#uniproton功能设计) - - - [支持任务管理](#支持任务管理) - - - [支持事件管理](#支持事件管理) - - - [支持队列管理](#支持队列管理) - - - [支持硬中断管理](#支持硬中断管理) - - - [支持内存管理](#支持内存管理) - - ​ [FSC内存算法](#fsc内存算法) - - ​ [核心思想](#核心思想) - - ​ [内存申请](#内存申请) - - ​ [内存释放](#内存释放) - - - [支持定时器管理](#支持定时器管理) - - - [支持信号量管理](#支持信号量管理) - - - [支持异常管理](#支持异常管理) - - - [支持CPU占用率统计](#支持cpu占用率统计) - - - [支持STM32F407ZGT6开发板](#支持stm32f407zgt6开发板) - - - [支持OpenAMP混合部署](#支持openamp混合部署) - - - [支持POSIX标准接口](#支持posix标准接口) - - - ## 支持任务管理 UniProton是一个单进程支持多线程的操作系统。在UniProton中,一个任务表示一个线程。UniProton中的任务为抢占式调度机制,而非时间片轮转调度方式。高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务挂起或阻塞后才能得到调度。 @@ -80,7 +42,7 @@ UniProton创建队列时,根据用户传入队列长度和消息单元大小 如下简要描述一下FSC内存算法: -### FSC内存算法 +### FSC内存算法 #### 核心思想 @@ -128,18 +90,14 @@ UniProton创建队列时,根据用户传入队列长度和消息单元大小 - 申请(Pend):Pend 操作等待指定的信号量,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其他线程发布该信号量,等待的容忍时间可设定。 - - 释放(Post):Post操作发布指定的信号量,若无任务等待该信号量,则直接将计数器加1返回。否则唤醒为此信号量挂起的任务列表中的第一个任务(最早阻塞的)。 - 通常一个信号量的计数值用于对应有效的资源数,表示剩余可被占用的互斥资源数。其值的含义如下有两种情况: - 为0值:表示没有积累下来的Post操作,且有可能有在此信号量上阻塞的任务。 - - 为正值:表示有一个或多个Post下来的发布操作。 - ## 支持异常管理 UniProton中的异常接管属于维测特性,其主要目的是在系统出现异常后,记录尽可能多的异常现场信息,便于后续问题定位。同时提供异常时的钩子函数,便于用户能够在异常发生时做一些用户化的特殊处理。其主要功能是接管内部异常处理或者外部硬件异常。 @@ -181,11 +139,11 @@ OpenAMP是一个开源软件框架,旨在通过非对称多处理器的开源 ## 支持POSIX标准接口 -[UniProton支持posix标准接口](./UniProton接口说明.md) +[UniProton支持posix标准接口](./uniproton_apis.md) ## 支持设备驱动 -UniProton的驱动结构、风格与linux类似,将驱动设备文件化,即VFS系统,通过驱动注册接口,将驱动注册到文件系统中,应用层只需要通过标准系统调用,即可调用底层驱动。整个驱动框架代码适配自开源RTOS系统Nuttx的驱动模块,因此接口调用也与Nuttx基本一致。struct file_operations结构体保存设备文件操作的方法,定义在fs.h头文件中,通过register_driver接口将驱动设备挂到对应的struct inode节点中,struct inode描述了每个设备节点的位置和数据。当系统调用操作设备文件时,根据对应文件的inode就能索引到对应的函数。接口详细信息可以查看[UniProton接口说明](./UniProton接口说明.md)。 +UniProton的驱动结构、风格与linux类似,将驱动设备文件化,即VFS系统,通过驱动注册接口,将驱动注册到文件系统中,应用层只需要通过标准系统调用,即可调用底层驱动。整个驱动框架代码适配自开源RTOS系统Nuttx的驱动模块,因此接口调用也与Nuttx基本一致。struct file_operations结构体保存设备文件操作的方法,定义在fs.h头文件中,通过register_driver接口将驱动设备挂到对应的struct inode节点中,struct inode描述了每个设备节点的位置和数据。当系统调用操作设备文件时,根据对应文件的inode就能索引到对应的函数。接口详细信息可以查看[UniProton接口说明](./uniproton_apis.md)。 ## 支持Shell命令行 @@ -196,4 +154,4 @@ UniProton提供shell命令行,它能够以命令行交互的方式访问操作 | SHELLCMD_ENTRY | 静态注册命令 | | osCmdReg | 动态注册命令 | -通常静态注册命令方式一般用于注册系统常用命令,动态注册命令方式一般用于注册用户命令。静态注册命令有5个入参,动态注册命令有4个入参。下面除去第一个入参是静态注册独有的,剩余的四个入参两个注册命令是一致的。接口详细信息可以查看[UniProton接口说明](./UniProton接口说明.md) \ No newline at end of file +通常静态注册命令方式一般用于注册系统常用命令,动态注册命令方式一般用于注册用户命令。静态注册命令有5个入参,动态注册命令有4个入参。下面除去第一个入参是静态注册独有的,剩余的四个入参两个注册命令是一致的。接口详细信息可以查看[UniProton接口说明](./uniproton_apis.md)。 diff --git a/docs/zh/docs/Embedded/_toc.yaml b/docs/zh/docs/Embedded/_toc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391