From ec09310a7b3faed04a8ce68a4995f85be12e17e5 Mon Sep 17 00:00:00 2001 From: hemiao Date: Fri, 18 Jul 2025 17:09:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0embedded=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/embedded/_toc.yaml | 4 + docs/zh/embedded/openEuler_embedded/_toc.yaml | 16 + .../application_development_using_sdk.md | 189 + .../container_build_guide.markdown | 141 + .../installation_and_running.md | 177 + .../openEuler_embedded/openEuler-embedded.md | 5 + .../openEuler_embedded_22.03_release_notes.md | 32 + .../openEuler_embedded_build_guide.md | 8 + .../public_sys-resources/hosttools.png | Bin 0 -> 175700 bytes .../public_sys-resources/icon-caution.gif | Bin 0 -> 580 bytes .../public_sys-resources/icon-danger.gif | Bin 0 -> 580 bytes .../public_sys-resources/icon-note.gif | Bin 0 -> 394 bytes .../public_sys-resources/icon-notice.gif | Bin 0 -> 406 bytes .../public_sys-resources/icon-tip.gif | Bin 0 -> 253 bytes .../public_sys-resources/icon-warning.gif | Bin 0 -> 580 bytes .../openEuler_embedded/quick_build_guide.md | 135 + docs/zh/embedded/uniproton/_toc.yaml | 10 + docs/zh/embedded/uniproton/figures/FCS.png | Bin 0 -> 22115 bytes .../uniproton/figures/MemoryApplication.png | Bin 0 -> 6386 bytes .../uniproton/figures/MemoryRelease.png | Bin 0 -> 10618 bytes .../uniproton/figures/pend_semaphore.png | Bin 0 -> 32691 bytes .../uniproton/figures/post_semaphore.png | Bin 0 -> 26707 bytes docs/zh/embedded/uniproton/overview.md | 11 + docs/zh/embedded/uniproton/uniproton_apis.md | 4210 +++++++++++++++++ .../embedded/uniproton/uniproton_functions.md | 160 + 25 files changed, 5098 insertions(+) create mode 100644 docs/zh/embedded/_toc.yaml create mode 100644 docs/zh/embedded/openEuler_embedded/_toc.yaml create mode 100644 docs/zh/embedded/openEuler_embedded/application_development_using_sdk.md create mode 100644 docs/zh/embedded/openEuler_embedded/container_build_guide.markdown create mode 100644 docs/zh/embedded/openEuler_embedded/installation_and_running.md create mode 100644 docs/zh/embedded/openEuler_embedded/openEuler-embedded.md create mode 100644 docs/zh/embedded/openEuler_embedded/openEuler_embedded_22.03_release_notes.md create mode 100644 docs/zh/embedded/openEuler_embedded/openEuler_embedded_build_guide.md create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/hosttools.png create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-caution.gif create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-danger.gif create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-note.gif create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-notice.gif create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-tip.gif create mode 100644 docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-warning.gif create mode 100644 docs/zh/embedded/openEuler_embedded/quick_build_guide.md create mode 100644 docs/zh/embedded/uniproton/_toc.yaml create mode 100644 docs/zh/embedded/uniproton/figures/FCS.png create mode 100644 docs/zh/embedded/uniproton/figures/MemoryApplication.png create mode 100644 docs/zh/embedded/uniproton/figures/MemoryRelease.png create mode 100644 docs/zh/embedded/uniproton/figures/pend_semaphore.png create mode 100644 docs/zh/embedded/uniproton/figures/post_semaphore.png create mode 100644 docs/zh/embedded/uniproton/overview.md create mode 100644 docs/zh/embedded/uniproton/uniproton_apis.md create mode 100644 docs/zh/embedded/uniproton/uniproton_functions.md diff --git a/docs/zh/embedded/_toc.yaml b/docs/zh/embedded/_toc.yaml new file mode 100644 index 0000000..f0e10eb --- /dev/null +++ b/docs/zh/embedded/_toc.yaml @@ -0,0 +1,4 @@ +label: 嵌入式 +sections: + - href: ./openEuler_embedded/_toc.yaml + - href: ./uniproton/_toc.yaml diff --git a/docs/zh/embedded/openEuler_embedded/_toc.yaml b/docs/zh/embedded/openEuler_embedded/_toc.yaml new file mode 100644 index 0000000..2a7ffe7 --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/_toc.yaml @@ -0,0 +1,16 @@ +label: openEuler Embedded 用户指南 +isManual: true +description: openEuler Embedded是基于openEuler社区面向嵌入式场景的Linux版本,旨在成为一个高质量的以Linux为中心的嵌入式系统软件平台 +sections: + - label: openEuler Embedded 用户指南 + href: ./openEuler-embedded.md + - label: 基于openEuler Embedded的SDK应用开发 + href: ./application_development_using_sdk.md + - label: 安装与运行 + href: ./installation_and_running.md + - label: openEuler Embedded 22.03发行说明 + href: ./openEuler_embedded_22.03_release_notes.md + - label: openEuler Embedded构建指导 + href: ./openEuler_embedded_build_guide.md + - label: 快速构建指导 + href: ./quick_build_guide.md diff --git a/docs/zh/embedded/openEuler_embedded/application_development_using_sdk.md b/docs/zh/embedded/openEuler_embedded/application_development_using_sdk.md new file mode 100644 index 0000000..81a3ab7 --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/application_development_using_sdk.md @@ -0,0 +1,189 @@ +# 基于openEuler Embedded的SDK应用开发 + +当前发布的镜像除了体验openEuler Embedded的基本功能外,还可以进行基本的应用开发,也即在openEuler Embedded上运行用户自己的程序。本章主要介绍如何基于openEuler Embedded的SDK进行应用开发。 + +## 安装SDK + +1. **安装依赖软件包** + + 使用SDK开发内核模块需要安装一些必要的软件包,运行如下命令: + + ```sh + 在 openEuler 上安装: + yum install make gcc g++ flex bison gmp-devel libmpc-devel openssl-devel + + 在 Ubuntu 上安装: + apt-get install make gcc g++ flex bison libgmp3-dev libmpc-dev libssl-dev + ``` + +2. **执行SDK自解压安装脚本** + + 运行如下命令: + + ```sh + sh openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.sh + ``` + + 根据提示输入工具链的安装路径,默认路径是`/opt/openeuler//`。若不设置,则按默认路径安装,也可以配置相对路径或绝对路径。 + + 举例如下: + + ```sh + sh ./openeuler-glibc-x86_64-openeuler-image-armv7a-qemu-arm-toolchain-22.03.sh + + openEuler embedded(openEuler Embedded Reference Distro) SDK installer version 22.03 + ================================================================ + + Enter target directory for SDK (default: /opt/openeuler/22.03): sdk + You are about to install the SDK to "/usr1/openeuler/sdk". Proceed [Y/n]? y + Extracting SDK...............................................done + Setting it up...SDK has been successfully set up and is ready to be used. + Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g. + $ . /usr1/openeuler/sdk/environment-setup-armv7a-openeuler-linux-gnueabi + ``` + +3. **设置SDK环境变量** + + 运行source命令。第2步执行结束后已打印source命令,直接运行即可。 + + ```sh + . /usr1/openeuler/myfiles/sdk/environment-setup-armv7a-openeuler-linux-gnueabi + ``` + +4. **查看是否安装成功** + + 运行如下命令,查看是否安装成功、环境设置成功。 + + ```sh + arm-openeuler-linux-gnueabi-gcc -v + ``` + +## 使用SDK编译hello world样例 + +1. **准备代码** + + 以构建一个hello world程序为例,运行在openEuler Embedded根文件系统镜像中。 + + 创建一个`hello.c`文件,源码如下: + + ```c + #include + + int main(void) + { + printf("hello world\n"); + } + ``` + + 编写`CMakeLists.txt`,和`hello.c`文件放在同一个目录。 + + ```sh + project(hello C) + + add_executable(hello hello.c) + ``` + +2. **编译生成二进制** + + 进入`hello.c`文件所在目录,使用工具链编译,命令如下: + + ```sh + cmake .. + make + ``` + + 把编译好的hello程序拷贝到openEuler Embedded系统的`/tmp/`某个目录下(例如`/tmp/myfiles/`)。如何拷贝可以参考前文所述[使能共享文件系统场景](./installation_and_running.md#使能共享文件系统场景)。 + +3. **运行用户态程序** + + 在openEuler Embedded系统中运行hello程序。 + + ```sh + cd /tmp/myfiles/ + ./hello + ``` + + 如运行成功,则会输出\"hello world\"。 + +## 使用SDK编译内核模块样例 + +1. **准备环境** + + 在设置好SDK环境的基础之上,编译内核模块还需准备相应环境,但只需要准备一次即可。运行如下命令会创建相应的内核模块编译环境: + + ```sh + cd /sysroots/-openeuler-linux/usr/src/kernel + make modules_prepare + ``` + +2. **准备代码** + + 以编译一个内核模块为例,运行在openEuler Embedded内核中。 + + 创建一个`hello.c`文件,源码如下: + + ```c + #include + #include + + static int hello_init(void) + { + printk("Hello, openEuler Embedded!\r\n"); + return 0; + } + + static void hello_exit(void) + { + printk("Byebye!"); + } + + module_init(hello_init); + module_exit(hello_exit); + + MODULE_LICENSE("GPL"); + ``` + + 编写`Makefile`,和`hello.c`文件放在同一个目录: + + ```c + KERNELDIR := ${KERNEL_SRC_DIR} + CURRENT_PATH := $(shell pwd) + + target := hello + obj-m := $(target).o + + build := kernel_modules + + kernel_modules: + $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules + clean: + $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean + ``` + + ![](./public_sys-resources/icon-note.gif) **说明:** + + - `KERNEL_SRC_DIR` 为SDK中内核源码树的目录,该变量在安装SDK后会被自动设置。 + + - `$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules`和`$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean`代码前均为Tab键,非空格键。 + +3. **编译生成内核模块** + + 进入hello.c文件所在目录,使用工具链编译,命令如下: + + ```sh + make + ``` + + 将编译好的hello.ko拷贝到openEuler Embedded系统的目录下。 + + 如何拷贝可以参考前文所述[使能共享文件系统场景](./installation_and_running.md#使能共享文件系统场景)。 + +4. **插入内核模块** + + 在openEuler Embedded系统中插入内核模块: + + ```sh + insmod hello.ko + ``` + + 如运行成功,则会在内核日志中出现"Hello, openEuler Embedded!"。 diff --git a/docs/zh/embedded/openEuler_embedded/container_build_guide.markdown b/docs/zh/embedded/openEuler_embedded/container_build_guide.markdown new file mode 100644 index 0000000..52d120a --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/container_build_guide.markdown @@ -0,0 +1,141 @@ +# 容器构建指导 + +============================== + +由于openEuler Embedded构建过程需要基于openEuler操作系统,且需要安装较多系统工具和构建工具。为方便开发人员快速搭建构建环境,我们将构建过程所依赖的操作系统和工具封装到一个容器中,这就使得开发人员可以快速搭建一个构建环境,进而投入到代码开发中去,避免在准备环境阶段消耗大量时间。 + +## 环境准备 + +需要使用docker创建容器环境,为了确保docker成功安装,需满足以下软件硬件要求: + +- 操作系统: 推荐使用openEuler 22.03/22.03、Ubuntu 20.04/22.04、Debian 11、Suse 12.05 +- 内核: 推荐3.8及以上的内核 +- 驱动: 内核必须支持一种合适的存储驱动,例如: Device Mapper、AUFS、vfs、btrfs、ZFS +- 架构: 运行64位架构的计算机(目前只支持x86\_64和amd64) + +### 安装docker + +------------- + +1. 检查当前环境是否已安装docker工具 + + 运行如下命令,可以看到当前docker版本信息,则说明当前环境已安装docker,无需再次安装。 + + ``` sh + docker version + ``` + +2. 如果没有安装,可参考官方链接安装 + +官网地址: ,openEuler环境可参考Centos安装Docker。 + +例如openEuler环境docker安装命令如下: + +``` sh +sudo yum install docker +``` + +### 获取容器镜像 + +------------- + +通过`docker pull`命令拉取华为云中的镜像到宿主机。命令如下: + +``` sh +docker pull swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:22.03-lts +``` + +### 准备容器构建环境 + +------------- + +#### 1.启动容器 + +可通过`docker run`命令启动容器,为了保证容器启动后可以在后台运行,且可以正常访问网络,建议使用如下命令启动: + +``` bash +docker run -idt --network host swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:22.03-lts bash +``` + +参数说明: + +- -i 让容器的标准输入保持打开 +- -d 让 Docker 容器在后台以守护态(Daemonized)形式运行 +- -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上 +- --network 将容器连接到(host)网络 +- swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container 指定镜像名称 +- bash 进入容器的方式 + +#### 2.查看已启动的容器id + +``` sh +docker ps +``` + +#### 3.进入容器 + +``` bash +docker exec -it 容器id bash +``` + +构建环境已准备完成,下面就可以在容器中进行构建了。 + +## 版本构建 + +### 下载源码 + +1. 获取源码下载脚本 + + ```sh + git clone https://gitee.com/openeuler/yocto-meta-openeuler.git -b openEuler-22.03-LTS -v /usr1/openeuler/src/yocto-meta-openeuler + ``` + +2. 通过脚本下载源码 + +```sh +cd /usr1/openeuler/src/yocto-meta-openeuler/scripts +sh download_code.sh /usr1/openeuler/src +``` + +### 编译构建 + +- 编译架构: aarch64-std、aarch64-pro、arm-std、raspberrypi4-64 +- 构建目录: /usr1/build +- 源码目录: /usr1/openeuler/src +- 编译器所在路径: /usr1/openeuler/gcc/openeuler\_gcc\_arm64le + +>![](./public_sys-resources/icon-note.gif) **说明:** +> +>- 不同的编译架构使用不同的编译器,aarch64-std、aarch64-pro、raspberrypi4-64使用openeuler\_gcc\_arm64le编译器,arm-std使用openeuler\_gcc\_arm32le编译器。 +>- 下面以以aarch64-std目标架构编译为例。 + +1. 将/usr1目录所属群组改为openeuler,否则切换至openeuler用户构建会存在权限问题。 + + ``` sh + chown -R openeuler:users /usr1 + ``` + +2. 切换至openeuler用户。 + + ```sh + su openeuler + ``` + +3. 进入构建脚本所在路径,运行编译脚本。 + +```sh +cd /usr1/openeuler/src/yocto-meta-openeuler/scripts +source compile.sh aarch64-std /usr1/build /usr1/openeuler/gcc/openeuler_gcc_arm64le +bitbake openeuler-image +``` + +### 构建结果说明 + +结果件默认生成在构建目录下的output目录下,例如上面aarch64-std的构建结果件生成在/usr1/build/output目录下,如下表: + +| filename | description | +| ---------------------------------------------------------- | ----------------------------------- | +| Image-\* | openEuler Embedded image | +| openeuler-glibc-x86\_64-openeuler-image-\*-toolchain-\*.sh | openEuler Embedded sdk toolchain | +| openeuler-image-qemu-aarch64-\*.rootfs.cpio.gz | openEuler Embedded file system | +| zImage | openEuler Embedded compressed image | diff --git a/docs/zh/embedded/openEuler_embedded/installation_and_running.md b/docs/zh/embedded/openEuler_embedded/installation_and_running.md new file mode 100644 index 0000000..1ed5e97 --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/installation_and_running.md @@ -0,0 +1,177 @@ +# 安装与运行 + +本章主要介绍如何获取预先构建好的镜像,如何运行镜像。 + +## 获取镜像 + +当前发布的已构建好的镜像,只支持arm和aarch64两种架构,且只支持qemu中ARM virt-4.0平台,您可以通过如下链接获得相应的镜像: + +- [qemu_arm](https://repo.openeuler.org/openEuler-22.03-LTS/embedded_img/arm32/arm-std/):32位arm架构,ARM Cortex A15处理器 +- [qemu_aarch64](https://repo.openeuler.org/openEuler-22.03-LTS/embedded_img/arm64/aarch64-std/):64位aarch64架构,ARM Cortex A57处理器 + +只要相应环境支持qemu仿真器(版本5.0以上),您可以将提供的openEuler Embedded镜像部署在物理裸机、云环境、容器或虚拟机上。 + +## 镜像内容 + +所下载的镜像,由以下几部分组成: + +- 内核镜像**zImage**: 基于openEuler社区Linux 5.10代码构建得到。相应的内核配置可通过如下链接获取: + - [arm(cortex a15)](https://gitee.com/openeuler/yocto-embedded-tools/blob/openEuler-22.03-LTS/config/arm/defconfig-kernel) + - [arm(cortex a57)](https://gitee.com/openeuler/yocto-embedded-tools/blob/openEuler-22.03-LTS/config/arm64/defconfig-kernel),针对aarch64架构,额外增加了镜像自解压功能,可以参见相应的[patch](https://gitee.com/openeuler/yocto-embedded-tools/blob/openEuler-22.03-LTS/patches/arm64/0001-arm64-add-zImage-support-for-arm64.patch) + +- 根文件系统镜像 + + - **openeuler-image-qemu-xxx.cpio.gz**:标准根文件系统镜像,进行了必要安全加固,增加了audit、cracklib、OpenSSH、Linux PAM、shadow、iSula容器所支持的软件包。 + +- SDK(Software Development Kit)工具 + + - **openeuler-glibc-x86_64-xxxxx.sh**:openEuler Embedded SDK自解压安装包,SDK包含了进行开发(用户态程序、内核模块等)所必需的工具、库和头文件等。 + +## 运行镜像 + +通过运行镜像,一方面您可以体验openEuler Embedded的功能,一方面也可以完成基本的嵌入式Linux开发。 + +![](./public_sys-resources/icon-note.gif) **说明:** + +- 建议使用QEMU 5.0以上版本运行镜像,由于一些额外功能(网络、共享文件系统)需要依赖QEMU的virtio-net, virtio-fs等特性,如未在QEMU中使能,则运行时可能会产生错误,此时可能需要从源码重新编译QEMU。 +- 运行镜像时,建议把内核镜像和根文件系统镜像放在同一目录下。 + +QEMU的下载与安装可以参考[QEMU官方网站](https://www.qemu.org/download/#linux) , 或者下载[源码](https://www.qemu.org/download/#source)单独编译安装。安装好后可以运行如下命令确认: + +```sh +qemu-system-aarch64 --version +``` + +### 极简运行场景 + +该场景下,QEMU未使能网络和共享文件系统,适合快速的功能体验。 + +1. **启动QEMU** + + 针对arm(ARM Cortex A15),运行如下命令: + + ```sh + qemu-system-arm -M virt-4.0 -m 1G -cpu cortex-a15 -nographic -kernel zImage -initrd + ``` + + 针对aarch64(ARM Cortex A57),运行如下命令: + + ```sh + qemu-system-aarch64 -M virt-4.0 -m 1G -cpu cortex-a57 -nographic -kernel zImage -initrd + ``` + + >![](./public_sys-resources/icon-note.gif) **说明:** + > + >由于标准根文件系统镜像进行了安全加固,因此第一次启动时,需要为登录用户名root设置密码,且密码强度有相应要求: + > + >1. 至少8个字符。 + > + >2. 必须包含数字,字母和特殊字符。 + > + > @#$%^&*+|\\=~`!?,.:;-_'"(){}[]/>< + > + >例如openEuler@2021。 + +2. **检查运行是否成功** + + QEMU运行成功并登录后,将会呈现openEuler Embedded的Shell。 + +### 使能共享文件系统场景 + +通过共享文件系统,可以使得运行QEMU仿真器的宿主机和openEuler Embedded共享文件,这样在宿主机上交叉编译的程序,拷贝到共享目录中,即可在openEuler Embedded上运行。 + +假设将宿主机的`/tmp`目录作为共享目录,并事先在其中创建了名为`hello_openeuler.txt`的文件,使能共享文件系统功能的操作指导如下: + +1. **启动QEMU** + + 针对arm(ARM Cortex A15),运行如下命令: + + ```sh + qemu-system-arm -M virt-4.0 -m 1G -cpu cortex-a15 -nographic -kernel zImage -initrd -device virtio-9p-device,fsdev=fs1,mount_tag=host -fsdev local,security_model=passthrough,id=fs1,path=/tmp + ``` + + 针对aarch64(ARM Cortex A57),运行如下命令: + + ```sh + qemu-system-aarch64 -M virt-4.0 -m 1G -cpu cortex-a57 -nographic -kernel zImage -initrd -device virtio-9p-device,fsdev=fs1,mount_tag=host -fsdev local,security_model=passthrough,id=fs1,path=/tmp + ``` + +2. **映射文件系统** + + 在openEuler Embedded启动并登录之后,需要运行如下命令,映射共享文件系统 + + ```sh + cd /tmp + mkdir host + mount -t 9p -o trans=virtio,version=9p2000.L host /tmp/host + ``` + + 即把9p文件系统挂载到到openEuler Embedded的`/tmp/host`目录下,实现共享映射。 + +3. **检查共享是否成功** + + 在openEuler Embedded中,运行如下命令: + + ```sh + cd /tmp/host + ls + ``` + + 如能发现`hello_openeuler.txt`,则共享成功。 + +### 使能网络场景 + +通过QEMU的virtio-net和宿主机上的虚拟网卡,可以实现宿主机和openEuler Embedded之间的网络通信。除了通过virtio-fs实现文件共享外,还可以通过网络的方式,例如**scp**命令,实现宿主机和 openEuler Embedded传输文件。 + +1. **启动QEMU** + + 针对arm(ARM Cortex A15),运行如下命令: + + ```sh + qemu-system-arm -M virt-4.0 -m 1G -cpu cortex-a15 -nographic -kernel zImage -initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup + ``` + + 针对aarch64(ARM Cortex A57),运行如下命令: + + ```sh + qemu-system-aarch64 -M virt-4.0 -m 1G -cpu cortex-a57 -nographic -kernel zImage -initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup + ``` + +2. **宿主上建立虚拟网卡** + + 在宿主机上需要建立名为tap0的虚拟网卡,可以借助脚本实现,创建`qemu-ifup`脚本,放在`/etc/`下,具体内容如下: + + ```sh + #!/bin/bash + ifconfig $1 192.168.10.1 up + ``` + + 其执行需要root权限: + + ```sh + chmod a+x qemu-ifup + ``` + + 通过`qemu-ifup`脚本,宿主机上将创建名为tap0的虚拟网卡,地址为192.168.10.1。 + +3. **配置openEuler Embedded网卡** + + openEuler Embedded登录后,执行如下命令: + + ```sh + ifconfig eth0 192.168.10.2 + ``` + +4. **确认网络连通** + + 在openEuler Embedded中,执行如下命令: + + ```sh + ping 192.168.10.1 + ``` + + 如能ping通,则宿主机和openEuler Embedded之间的网络是连通的。 + + >![](./public_sys-resources/icon-note.gif) **说明:** + > + >如需openEuler Embedded借助宿主机访问互联网,则需要在宿主机上建立网桥,此处不详述,如有需要,请自行查阅相关资料。 diff --git a/docs/zh/embedded/openEuler_embedded/openEuler-embedded.md b/docs/zh/embedded/openEuler_embedded/openEuler-embedded.md new file mode 100644 index 0000000..732600e --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/openEuler-embedded.md @@ -0,0 +1,5 @@ +# openEuler Embedded 用户指南 + +openEuler Embedded是基于openEuler社区面向嵌入式场景的Linux版本,旨在成为一个高质量的以Linux为中心的嵌入式系统软件平台。openEuler Embedded在内核版本、软件包版本等代码层面会与openEuler其他场景的Linux保持一致,共同演进,不同之处在于针对嵌入场景的内核配置、软件包的组合与配置、代码特性补丁的不同。 + +本文档主要用于介绍如何获取预先构建好的镜像,如何运行镜像,如何基于镜像完成基本的嵌入式Linux应用开发以及如何构建openEuler Embedded。使用人员需要具备基本的Linux操作系统知识。 diff --git a/docs/zh/embedded/openEuler_embedded/openEuler_embedded_22.03_release_notes.md b/docs/zh/embedded/openEuler_embedded/openEuler_embedded_22.03_release_notes.md new file mode 100644 index 0000000..4cbd322 --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/openEuler_embedded_22.03_release_notes.md @@ -0,0 +1,32 @@ +# openEuler Embedded 22.03发行说明 + +openEuler Embedded 22.03是openEuler Embedded第一次正式发布,包含的内容大概如下: + +## 内核 + +- 内核升级到 5.10.0-60.17.0 + +- 内核支持Preempt-RT补丁 + +- 内核支持树莓派4B相关补丁 + +## 软件包 + +- 支持80+软件包,详见[当前所支持的软件包](https://openeuler.gitee.io/yocto-meta-openeuler/features/software_package_description.html) + +## 亮点特性 + +- 多OS混合部署框架的初步实现,支持openEuler Embedded和Zephyr的混合部署,详见[多OS混合部署框架](https://openeuler.gitee.io/yocto-meta-openeuler/features/mcs.html) +- 分布式软总线的初步集成,详见[分布式软总线](https://openeuler.gitee.io/yocto-meta-openeuler/features/distributed_soft_bus.html) + +- 安全加固指导,详见[安全加固说明](https://openeuler.gitee.io/yocto-meta-openeuler/security_hardening/index.html) +- 基于Preempt-RT的软实时,详见[软实时系统介绍](https://openeuler.gitee.io/yocto-meta-openeuler/features/preempt_rt.html) + +## 南向生态 + +- 新增树莓派4B支持,详见[树莓派4B的支持](https://openeuler.gitee.io/yocto-meta-openeuler/features/raspberrypi.html) + +## 构建系统 + +- 初步的openEuler Embedded构建体系, 详见[快速构建指导](./quick_build_guide.md) +- 容器化构建,详见[容器构建指导](./container_build_guide.markdown) diff --git a/docs/zh/embedded/openEuler_embedded/openEuler_embedded_build_guide.md b/docs/zh/embedded/openEuler_embedded/openEuler_embedded_build_guide.md new file mode 100644 index 0000000..68d6e1d --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/openEuler_embedded_build_guide.md @@ -0,0 +1,8 @@ +# openEuler Embedded构建指导 + +===================== + +本文档主要提供了两种方式准备构建环境,并描述了详细的构建流程。用户根据需要选择一种方式即可。 + +- 初步的openEuler Embedded构建体系, 详见[快速构建指导](./quick_build_guide.md) +- 容器化构建,详见[容器构建指导](./container_build_guide.markdown) diff --git a/docs/zh/embedded/openEuler_embedded/public_sys-resources/hosttools.png b/docs/zh/embedded/openEuler_embedded/public_sys-resources/hosttools.png new file mode 100644 index 0000000000000000000000000000000000000000..83bb076a7763d522dde36168b1f713e524141531 GIT binary patch literal 175700 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≀xz@bFQS4ry9XjQoA0sw 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�(R?AoPm92`mzaRGj^aKz8aO;Uq9oyUI4 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

7SmeGEkt$2AqN! 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

tP&tSUE2a(A~VxEqz%h;(C}?~`GE)-O-J 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 literal 0 HcmV?d00001 diff --git a/docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-danger.gif b/docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 GIT binary patch literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 literal 0 HcmV?d00001 diff --git a/docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-note.gif b/docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda GIT binary patch literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> literal 0 HcmV?d00001 diff --git a/docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-notice.gif b/docs/zh/embedded/openEuler_embedded/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 GIT binary patch literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 literal 0 HcmV?d00001 diff --git a/docs/zh/embedded/openEuler_embedded/quick_build_guide.md b/docs/zh/embedded/openEuler_embedded/quick_build_guide.md new file mode 100644 index 0000000..ab24e77 --- /dev/null +++ b/docs/zh/embedded/openEuler_embedded/quick_build_guide.md @@ -0,0 +1,135 @@ +# 快速构建指导 + +===================== + +本章主要介绍如何构建openEuler Embedded。 + +## 环境准备 + +-------------- + +### Yocto中主机端命令使用 + +Yocto或者说Bitbake本质上是一组python程序,其最小运行环境要求如下: + +- Python3 \> 3.6.0 +- Git \> 1.8.3.1 +- Tar \> 1.28 + +在构建过程中所需要的其他工具,Yocto都可以根据相应的软件包配方自行构建出来,从而达到自包含的效果。在这个过程中,Yocto还会依据自身需要,对相应的工具打上yocto专属补丁(如dnf,rpm等)。这些主机工具会在第一次的构建中从源码开始构建,因此Yocto第一次构建比较费时。 + +为了加速构建特别是第一次构建,openEuler Embedded采取了"能用原生工具就用原生工具,能不构建就不构建"的策略,尽可能使用主机上预编译的原生的工具。这就需要依赖主机上软件包管理工具(apt, dnf, yum, zypper等)事先安装好。 + +Yocto是通过HOSTTOOLS变量来实现主机工具的引入,为每个在HOSTTOOLS中列出的工具建立相应的软链接。为了避免来自主机对构建环境的污染,Yocto会重新准备不同于主机的环境,例如PATH变量等,因此如果新增依赖主机上的某个命令,需显示在Yocto的HOSTTOOLS变量中增加,否则即使主机上存在,Yocto构建时也会报错找不到相应的工具。相应流程如下图所示: + +![](./public_sys-resources/hosttools.png) + +当前openEuler Embedded所需要主机工具已经默认在local.conf.sample中的HOSTTOOLS定义,主要工具描述如下: + +| 工具名 | 用途 | +| ------ | ------------- | +| cmake | cmake构建工具 | +| ninjia | ninja构建系统 | + +### openEuler Embedded所需构建工具 + +- 构建OS + + [操作系统:openEuler-22.03-LTS-SP4](https://repo.openeuler.org/openEuler-22.03-LTS-SP4/docker_img/x86_64/openEuler-docker.x86_64.tar.xz) + +- 安装系统额外工具 + +```sh +yum -y install tar cmake gperf sqlite-devel chrpath gcc-c++ patch rpm-build flex autoconf automake m4 bison bc libtool gettext-devel createrepo\_c rpcgen texinfo hostname python meson dosfstools mtools parted ninja-build autoconf-archive libmpc-devel gmp-devel +``` + +- 预编译的交叉工具链和库 + + Yocto可以构建出交叉编译所需的交叉工具链和C库,但整个流程复杂且耗时,不亚于内核乃至镜像的构建,而且除了第一次构建,后面很少会再涉及。同时,绝大部分开发者都不会直接与工具链和C库构建打交道。所以为了简化该流程,openEuler Embedded采取的策略是采用预编译的交叉工具链和库,会专门维护和发布相应的带有C库的工具链。 + + 目前我们提供了对arm32位和aarch64位两种架构的工具链支持,通过如下方式可以获得: + + - 下载rpm包: `wget https://repo.openeuler.org/openEuler-22.03-LTS/EPOL/main/x86_64/Packages/gcc-cross-1.0-0.oe2203.x86_64.rpm` + - 解压rpm包: `rpm2cpio gcc-cross-1.0-0.oe2203.x86_64.rpm | cpio -id` + - 解压后可以看到当前路径下会有tmp目录,编译链存放于该目录下 + - ARM 32位工具链: openeuler_gcc_arm32le.tar.xz + - ARM 64位工具链: openeuler_gcc_arm64le.tar.xz + +### 已安装好工具的构建容器 + +openEuler Embedded的构建过程中会使用到大量的各式各样的主机工具。如前文所述,为了加速构建,openEuler Embedded依赖主机事先安装好相应的工具,但这也会带来不同主机环境会有不同的工具版本的问题,例如构建需要cmake高于1.9版本,但主机上最高只有cmake 1.8。为了解决这一问题,openEuler Embedded提供了专门的构建容器,提供统一的构建环境。 + +使用者可以通过如下链接获得容器镜像直接用于编译: + +​ [openEuler Embedded构建容器的基础镜像](https://repo.openeuler.org/openEuler-21.03/docker_img/x86_64/openEuler-docker.x86_64.tar.xz) + +具体构建指导请参考[容器构建指导](./container_build_guide.markdown)。 + +## 版本构建 + +### 构建代码下载 + +openEuler Embedded整个构建工程的文件布局如下,假设openeuler\_embedded为顶层目录: + +><顶层目录openeuler_embedded> +>├── src 源代码目录,包含所有软件包代码、内核代码和Yocto构建代码 +>├── build openEuler Embedded的构建目录,生成的各种镜像放在此目录下 + +1. 获取源码下载脚本 + + 将脚本下载到指定目录,例如下载到src/yocto-meta-openeuler目录下: + + ```sh + git clone https://gitee.com/openeuler/yocto-meta-openeuler.git -b openEuler-22.03-LTS -v src/yocto-meta-openeuler + ``` + + 脚本为src/yocto-meta-openeuler/scripts/download\_code.sh,此脚本有3个参数: + + - 参数1:下载的源码路径,默认相对脚本位置下载,例如前面样例,代码仓会下到src/下 + - 参数2:下载的分支,默认值见脚本,不同分支按版本确定 + - 参数3:下代码的xml文件,标准manifest格式,按xml配置下代码 + +2. 通过脚本下载源码 + + - 下载最新代码: + + ```sh + sh src/yocto-meta-openeuler/scripts/download_code.sh + ``` + + - 下载指定版本代码: + + ```sh + sh src/yocto-meta-openeuler/scripts/download_code.sh "" "" "manifest.xml" + ``` + + 指定openEuler Embedded版本的代码的manifest.xml文件从openEuler Embedded发布件目录embedded\_img/source-list/下获取。 + +### 编译构建 + +一键式构建脚本:src/yocto-meta-openeuler/scripts/compile.sh, 具体细节可以参考该脚本。 + +编译脚本的主要流程说明: + +1. 设置PATH增加额外工具路径 +2. TEMPLATECONF指定local.conf.sample等配置文件路径 +3. 调用poky仓的oe-init-build-env进行初始化配置 +4. 在编译目录的conf/local.conf中配置MACHINE,按需增加额外新增的层 +5. 在编译目录执行bitbake openeuler-image编译openEuler Embedded的image和sdk +6. 执行完发布件在编译目录的output目录下 + +运行编译脚本,以编译标准arm架构为例,编译方法如下: + +source src/yocto-meta-openeuler/scripts/compile.sh arm-std +bitbake openeuler-image #执行第一条source后,会提示出bitbake命令 + +### 构建结果说明 + +结果件默认生成在构建目录下的output目录下,例如上面arm的构建结果件生成在/usr1/build/output目录下,如下表: + +| filename | description | +| ---------------------------------------------------------- | ----------------------------------- | +| Image-\* | openEuler Embedded image | +| openeuler-glibc-x86\_64-openeuler-image-\*-toolchain-\*.sh | openEuler Embedded sdk toolchain | +| openeuler-image-qemu-aarch64-\*.rootfs.cpio.gz | openEuler Embedded file system | +| zImage | openEuler Embedded compressed image | diff --git a/docs/zh/embedded/uniproton/_toc.yaml b/docs/zh/embedded/uniproton/_toc.yaml new file mode 100644 index 0000000..44a46ce --- /dev/null +++ b/docs/zh/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/embedded/uniproton/figures/FCS.png b/docs/zh/embedded/uniproton/figures/FCS.png new file mode 100644 index 0000000000000000000000000000000000000000..afb47c557755c10a3f0b196b7080b16a0f86ab6a GIT binary patch literal 22115 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 literal 0 HcmV?d00001 diff --git a/docs/zh/embedded/uniproton/figures/MemoryRelease.png b/docs/zh/embedded/uniproton/figures/MemoryRelease.png new file mode 100644 index 0000000000000000000000000000000000000000..f91c89bb02311f104949e2af42cddc4a3faaaca3 GIT binary patch literal 10618 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 b55LZ8wvv0OYDU-yz(0L$W374(=lK5xTFYw6 literal 0 HcmV?d00001 diff --git a/docs/zh/embedded/uniproton/figures/post_semaphore.png b/docs/zh/embedded/uniproton/figures/post_semaphore.png new file mode 100644 index 0000000000000000000000000000000000000000..fa08d76dafd335b60838dda08db61ccadd8c6b8d GIT binary patch literal 26707 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

!lB6}pF< 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 xr5d<>eodouble类型的浮点数x | 支持 | +| [atan2f](#atan2f) | 计算参数y除以x的反正切值,使用两个参数的符号确定返回值的象限 | float类型的浮点数y
float类型的浮点数x | 支持 | +| [atan2l](#atan2l) | 计算参数y除以x的反正切值,使用两个参数的符号确定返回值的象限 | long double类型的浮点数y
long double类型的浮点数x | 支持 | +| [atanh](#atanh) | 计算参数x的反双曲正切值,返回类型double | double类型的浮点数x | 支持 | +| [atanhf](#atanhf) | 计算参数x的反双曲正切值,返回类型float | float类型的浮点数x | 支持 | +| [atanhl](#atanhl) | 计算参数x的反双曲正切值,返回类型long double | long double类型的浮点数x | 支持 | +| [cbrt](#cbrt) | 计算参数x的立方根,返回类型double | double类型的浮点数x | 支持 | +| [cbrtf](#cbrtf) | 计算参数x的立方根,返回类型float | float类型的浮点数x | 支持 | +| [cbrtl](#cbrtl) | 计算参数x的立方根,返回类型long double | long double类型的浮点数x | 支持 | +| [ceil](#ceil) | 计算不小于参数x的最小整数值,返回类型double | duoble类型的浮点数x | 支持 | +| [ceilf](#ceilf) | 计算不小于参数x的最小整数值,返回类型float | float类型的浮点数x | 支持 | +| [ceill](#ceill) | 计算不小于参数x的最小整数值,返回类型long double | long duoble类型的浮点数x | 支持 | +| [copysign](#copysign) | 生成一个值,该值具有参数x的大小和参数y的符号 | duoble类型的浮点数x
double类型的浮点数y | 支持 | +| [copysignf](#copysignf) | 生成一个值,该值具有参数x的大小和参数y的符号 | float类型的浮点数x
float类型的浮点数y | 支持 | +| [copysignl](#copysignl) | 生成一个值,该值具有参数x的大小和参数y的符号 | long duoble类型的浮点数x
long double类型的浮点数y | 支持 | +| [cos](#cos) | 计算参数x的余弦值,参数应为弧度值,返回类型double | duoble类型的浮点数x | 支持 | +| [cosf](#cosf) | 计算参数x的余弦值,参数应为弧度值,返回类型float | float类型的浮点数x | 支持 | +| [cosl](#cosl) | 计算参数x的余弦值,参数应为弧度值,返回类型long double | long double类型的浮点数x | 支持 | +| [cosh](#cosh) | 计算参数x的双曲余弦值,返回类型double | double类型的浮点数x | 支持 | +| [coshf](#coshf) | 计算参数x的双曲余弦值,返回类型float | float类型的浮点数x | 支持 | +| [coshl](#coshl) | 计算参数x的双曲余弦值,返回类型long double | long double类型的浮点数x | 支持 | +| [erf](#erf) | 计算参数x的高斯误差函数的值 | double类型的浮点数x | 支持 | +| [erff](#erff) | 计算参数x的高斯误差函数的值 | float类型的浮点数x | 支持 | +| [erfl](#erfl) | 计算参数x的高斯误差函数的值 | long double类型的浮点数x | 支持 | +| [erfc](#erfc) | 计算参数x的高斯误差函数的值 | double类型的浮点数x | 支持 | +| [erfcf](#erfcf) | 计算参数x的互补误差函数的值 | float类型的浮点数x | 支持 | +| [erfcl](#erfcl) | 计算参数x的互补误差函数的值 | long double类型的浮点数x | 支持 | +| [exp](#exp) | 以e为基数的指数,即$e^x$的值,返回类型double | double类型的浮点数x | 支持 | +| [expf](#expf) | 以e为基数的指数,即$e^x$的值,返回类型float | float类型的浮点数x | 支持 | +| [expl](#expl) | 以e为基数的指数,即$e^x$的值,返回类型long double | long double类型的浮点数x | 支持 | +| [exp10](#exp10) | 以10为基数的指数,即$10^x$的值,返回类型double | double类型的浮点数x | 支持 | +| [exp10f](#exp10f) | 以10为基数的指数,即$10^x$的值,返回类型float | float类型的浮点数x | 支持 | +| [exp10l](#exp10l) | 以10为基数的指数,即$10^x$的值,返回类型long double | long double类型的浮点数x | 支持 | +| [exp2](#exp2) | 以2为基数的指数函数,返回类型double | double类型的浮点数x | 支持 | +| [exp2f](#exp2f) | 以2为基数的指数函数,返回类型float | float类型的浮点数x | 支持 | +| [exp2l](#exp2l) | 以2为基数的指数函数,返回类型long double | long double类型的浮点数x | 支持 | +| [expm1](#expm1) | 计算$e^x - 1$的值。如果参数x是个小值,expm1(x)函数的值比表达式$e^x - 1$更准确 | double类型的浮点数x | 支持 | +| [expm1f](#expm1f) | 计算$e^x - 1$的值。如果参数x是个小值,expm1(x)函数的值比表达式$e^x - 1$更准确 | float类型的浮点数x | 支持 | +| [expm1l](#expm1l) | 计算$e^x - 1$的值。如果参数x是个小值,expm1(x)函数的值比表达式$e^x - 1$更准确 | long double类型的浮点数x | 支持 | +| [fabs](#fabs) | 计算参数x的绝对值,返回类型double | double类型的浮点数x | 支持 | +| [fabsf](#fabsf) | 计算参数x的绝对值,返回类型float | float类型的浮点数x | 支持 | +| [fabsl](#fabsl) | 计算参数x的绝对值,返回类型long double | long double类型的浮点数x | 支持 | +| [fdim](#fdim) | 计算参数x和参数y之间的正差值 | double类型的浮点数x
double类型的浮点数y | 支持 | +| [fdimf](#fdimf) | 计算参数x和参数y之间的正差值 | float类型的浮点数x
float类型的浮点数y | 支持 | +| [fdiml](#fdiml) | 计算参数x和参数y之间的正差值 | long double类型的浮点数x
long double类型的浮点数y | 支持 | +| [finite](#finite) | 如果参数x既不是无限值也不是NaN,则返回一个非零值,否则返回0 | double类型的浮点数x | 支持 | +| [finitef](#finitef) | 如果参数x既不是无限值也不是NaN,则返回一个非零值,否则返回0 | float类型的浮点数x| 支持 | +| [floor](#floor) | 计算不大于参数x到最大整数值,返回类型double | double类型的浮点数x | 支持 | +| [floorf](#floorf) | 计算不大于参数x到最大整数值,返回类型float | float类型的浮点数x | 支持 | +| [floorl](#floorl) | 计算不大于参数x到最大整数值,返回类型long double | long double类型的浮点数x | 支持 | +| [fma](#fma) | 计算表达式$(x * y) + z$的值,返回double类型 | double类型的浮点数x
double类型的浮点数y
double类型的浮点数z | 支持 | +| [fmaf](#fmaf) | 计算表达式$(x * y) + z$的值,返回float类型 | float类型的浮点数x
float类型的浮点数y
float类型的浮点数z | 支持 | +| [fmal](#fmal) | 计算表达式$(x * y) + z$的值,返回long double类型 | long double类型的浮点数x
long double类型的浮点数y
long double类型的浮点数z | 支持 | +| [fmax](#fmax) | 确定其参数的最大数值。如果一个参数是非数值(NaN),另一个参数是数值,fmax函数将选择数值 | double类型的浮点数x
double类型的浮点数y | 支持 | +| [fmaxf](#fmaxf) | 确定其参数的最大数值。如果一个参数是非数值(NaN),另一个参数是数值,fmax函数将选择数值 | float类型的浮点数x
float类型的浮点数y | 支持 | +| [fmaxl](#fmaxl) | 确定其参数的最大数值。如果一个参数是非数值(NaN),另一个参数是数值,fmax函数将选择数值 | long double类型的浮点数x
long double类型的浮点数y | 支持 | +| [fmin](#fmin) | 返回其参数的最小数值。非数值NaN参数视为缺失数据。如果一个参数是非数值,另一个参数是数值,fmin函数将选择数值 | double类型的浮点数x
double类型的浮点数y | 支持 | +| [fminf](#fminf) | 返回其参数的最小数值。非数值NaN参数视为缺失数据。如果一个参数是非数值,另一个参数是数值,fmin函数将选择数值 | float类型的浮点数x
float类型的浮点数y | 支持 | +| [fminl](#fminl) | 返回其参数的最小数值。非数值NaN参数视为缺失数据。如果一个参数是非数值,另一个参数是数值,fmin函数将选择数值 | long double类型的浮点数x
long double类型的浮点数y | 支持 | +| [fmod](#fmod) | 计算表达式x/y的浮点余数,返回double类型 | double类型的浮点数x
double类型的浮点数y | 支持 | +| [fmodf](#fmodf) | 计算表达式x/y的浮点余数,返回float类型 | float类型的浮点数x
float类型的浮点数y | 支持 | +| [fmodl](#fmodl) | 计算表达式x/y的浮点余数,返回long double类型 | long double类型的浮点数x
long double类型的浮点数y | 支持 | +| [frexp](#frexp) | 将浮点数分解为规格化小数和2的整数幂,并将整数存入参数exp指向的对象中 | double类型的浮点数x
int *类型的浮点数y | 支持 | +| [frexpf](#frexpf) | 将浮点数分解为规格化小数和2的整数幂,并将整数存入参数exp指向的对象中 | float类型的浮点数x
int *类型的浮点数y | 支持 | +| [frexpl](#frexpl) | 将浮点数分解为规格化小数和2的整数幂,并将整数存入参数exp指向的对象中 | long double类型的浮点数x
int *类型的浮点数y | 支持 | +| [hypot](#hypot) | 计算表达式$(x^2 + y^2)^{1/2}$的值 | double类型的浮点数x
double类型的浮点数y | 支持 | +| [hypotf](#hypotf) | 计算表达式$(x^2 + y^2)^{1/2}$的值 | float类型的浮点数x
float类型的浮点数y | 支持 | +| [hypotl](#hypotl) | 计算表达式$(x^2 + y^2)^{1/2}$的值 | long double类型的浮点数x
long double类型的浮点数y | 支持 | +| [ilogb](#ilogb) | 以FLT_RADIX作为对数的底数,返回double类型x的对数的整数部分 | double类型的浮点数x | 支持 | +| [ilogbf](#ilogbf) | 以FLT_RADIX作为对数的底数,返回float类型x的对数的整数部分 | float类型的浮点数x | 支持 | +| [ilogbl](#ilogbl) | 以FLT_RADIX作为对数的底数,返回long double类型x的对数的整数部分 | long double类型的浮点数x | 支持 | +| [j0](#j0) | 计算参数x的第一类0阶贝塞尔函数 | double类型浮点数x | 支持 | +| [j0f](#j0f) | 计算参数x的第一类0阶贝塞尔函数 | float类型浮点数x | 支持 | +| [j1](#j1) | 计算参数x的第一类1阶贝塞尔函数 | double类型浮点数x | 支持 | +| [j1f](#j1f) | 计算参数x的第一类1阶贝塞尔函数 | float类型浮点数x | 支持 | +| [jn](#jn) | 计算参数x的第一类n阶贝塞尔函数 | int类型阶数
double类型浮点数x | 支持 | +| [jnf](#jnf) | 计算参数x的第一类n阶贝塞尔函数 | int类型阶数
float类型浮点数x | 支持 | +| [ldexp](#ldexp) | 计算参数x与2的exp次幂的乘积,即返回$x * 2^{exp}$的double类型值。 | double类型的浮点数x
int类型的指数exp | 支持 | +| [ldexpf](#ldexpf) | 计算参数x与2的exp次幂的乘积,即返回$x * 2^{exp}$的float类型值。 | float类型的浮点数x
int类型的指数exp | 支持 | +| [ldexpl](#ldexpl) | 计算参数x与2的exp次幂的乘积,即返回$x * 2^{exp}$的long double类型值。 | long double类型的浮点数x
int类型的指数exp | 支持 | +| [lgamma](#lgamma) | 计算参数x伽玛绝对值的自然对数,返回double类型 | double类型的浮点数x | 支持 | +| [lgammaf](#lgammaf) | 计算参数x伽玛绝对值的自然对数,返回float类型 | float类型的浮点数x | 支持 | +| [lgammal](#lgammal) | 计算参数x伽玛绝对值的自然对数,返回long double类型 | long double类型的浮点数x | 支持 | +| [lgamma_r](#lgamma_r) | 计算参数x伽玛绝对值的自然对数,与lgamma不同在于是线程安全的 | double类型的浮点数x
int *类型符号参数 | 支持 | +| [lgamma_r](#lgamma_r) | 计算参数x伽玛绝对值的自然对数,与lgamma不同在于是线程安全的 | float类型的浮点数x
int *类型符号参数 | 支持 | +| [llrint](#llrint) | 根据当前舍入模式,将参数舍入为long long int类型的最接近整数值 | double类型的浮点数x | 支持 | +| [llrintf](#llrintf) | 根据当前舍入模式,将参数舍入为long long int类型的最接近整数值 | float类型的浮点数x | 支持 | +| [llrintl](#llrintl) | 根据当前舍入模式,将参数舍入为long long int类型的最接近整数值 | long double类型的浮点数x | 支持 | +| [llround](#llround) | 将double类型x舍入为浮点形式表示的long long int型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | double类型的浮点数x | 支持 | +| [llroundf](#llroundf) | 将float类型x舍入为浮点形式表示的long long int型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | float类型的浮点数x | 支持 | +| [llroundl](#llroundl) | 将long double类型x舍入为浮点形式表示的long long int型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | long double类型的浮点数x | 支持 | +| [log](#log) | double类型x的自然对数函数 | double类型的浮点数x | 支持 | +| [logf](#logf) | float类型x的自然对数函数 | float类型的浮点数x | 支持 | +| [logl](#logl) | long double类型x的自然对数函数 | long double类型的浮点数x | 支持 | +| [log10](#log10) | double类型x以10为底数的对数函数 | double类型的浮点数x | 支持 | +| [log10f](#log10f) | float类型x以10为底数的对数函数 | float类型的浮点数x | 支持 | +| [log10l](#log10l) | long double类型x以10为底数的对数函数 | long double类型的浮点数x | 支持 | +| [log1p](#log1p) | 以e为底数的对数函数,计算$log_e(1 + x)$的值。如果参数x是个小值,表达式log1p(x)比表达式log(1 + x)更准确 | double类型的浮点数x | 支持 | +| [log1pf](#log1pf) | 以e为底数的对数函数,计算$log_e(1 + x)$的值。如果参数x是个小值,表达式log1p(x)比表达式log(1 + x)更准确 | float类型的浮点数x | 支持 | +| [log1pl](#log1pl) | 以e为底数的对数函数,计算$log_e(1 + x)$的值。如果参数x是个小值,表达式log1p(x)比表达式log(1 + x)更准确 | long double类型的浮点数x | 支持 | +| [log2](#log2) | double类型x以2为底数的对数函数 | double类型的浮点数x | 支持 | +| [log2f](#log2f) | float类型x以2为底数的对数函数 | flaot类型的浮点数x | 支持 | +| [log2l](#log2l) | long double类型x以2为底数的对数函数 | long double类型的浮点数x | 支持 | +| [logb](#logb) | double类型x以FLT_RADIX为的底数到对数函数 | double类型的浮点数x | 支持 | +| [logbf](#logbf) | float类型x以FLT_RADIX为的底数到对数函数 | float类型的浮点数x | 支持 | +| [logbl](#logbl) | double类型x以FLT_RADIX为的底数到对数函数 | double类型的浮点数x | 支持 | +| [lrint](#lrint) | 根据当前舍入模式,将参数舍入为long int类型的最接近整数值 | double类型的浮点数x | 支持 | +| [lrintf](#lrintf) | 根据当前舍入模式,将参数舍入为long int类型的最接近整数值 | float类型的浮点数x | 支持 | +| [lrintl](#lrintl) | 根据当前舍入模式,将参数舍入为long int类型的最接近整数值 | long double类型的浮点数x | 支持 | +| [lround](#lround) | 将double类型x舍入为浮点形式表示的long int型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | double类型的浮点数x | 支持 | +| [lroundf](#lroundf) | 将float类型x舍入为浮点形式表示的long int型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | float类型的浮点数x | 支持 | +| [lroundl](#lroundl) | 将long double类型x舍入为浮点形式表示的long int型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | long double类型的浮点数x | 支持 | +| [modf](#modf) | 将double类型的参数value分成整数部分和小数部分,两部分与参数value具有相同的类型和符号。整数部分以浮点形式存入参数iptr指向的对象中 | double类型的浮点数value
double *类型的指数iptr | 支持 | +| [modff](#modff) | 将float类型的参数value分成整数部分和小数部分,两部分与参数value具有相同的类型和符号。整数部分以浮点形式存入参数iptr指向的对象中 | float类型的浮点数value
float *类型的指数iptr | 支持 | +| [modfl](#modfl) | 将long double类型的参数value分成整数部分和小数部分,两部分与参数value具有相同的类型和符号。整数部分以浮点形式存入参数iptr指向的对象中 | long double类型的浮点数value
long double *类型的指数iptr | 支持 | +| [nan](#nan) | 返回一个double类型的非数值NaN,内容由参数tagp确定 | const char*类型tagp | 支持 | +| [nanf](#nanf) | 返回一个float类型的非数值NaN,内容由参数tagp确定 | const char*类型tagp | 支持 | +| [nanl](#nanl) | 返回一个long double类型的非数值NaN,内容由参数tagp确定 | const char*类型tagp | 支持 | +| [nearbyint](#nearbyint) | 根据当前舍入模式,将double型参数x舍入为浮点格式的double型整数值 | double类型x | 支持 | +| [nearbyintf](#nearbyintf) | 根据当前舍入模式,将float型参数x舍入为浮点格式的float型整数值 | float类型x | 支持 | +| [nearbyintl](#nearbyintl) | 根据当前舍入模式,将long double型参数x舍入为浮点格式的double型整数值 | long double类型x | 支持 | +| [nextafter](#nextafter) | 返回double类型参数x沿参数y方向的下一个可表示值 | double类型x
double类型y | 支持 | +| [nextafterf](#nextafterf) | 返回double类型参数x沿参数y方向的下一个可表示值 | float类型x
flaot类型y | 支持 | +| [nextafterl](#nextafterl) | 返回double类型参数x沿参数y方向的下一个可表示值 | long double类型x
long double类型y | 支持 | +| [nexttoward](#nexttoward) | 返回double类型参数x沿参数y方向的下一个可表示值,等价于nextafter,区别在于参数y为long double | double类型浮点数x
long double类型浮点数y | 支持 | +| [nexttowardf](#nexttowardf) | 返回double类型参数x沿参数y方向的下一个可表示值,等价于nextafter,区别在于参数y为long double | float类型浮点数x
long double类型浮点数y | 支持 | +| [nexttowardl](#nexttowardl) | 返回double类型参数x沿参数y方向的下一个可表示值,等价于nextafter,区别在于参数y为long double | long double类型浮点数x
long double类型浮点数y | 支持 | +| [pow](#pow) | 计算表达式$x^y$的值 | double类型浮点数x
double类型浮点数y | 支持 | +| [powf](#powf) | 计算表达式$x^y$的值 | float类型浮点数x
float类型浮点数y | 支持 | +| [powl](#powl) | 计算表达式$x^y$的值 | long double类型浮点数x
long double类型浮点数y | 支持 | +| [pow10](#pow10) | 计算表达式$10^x$的值 | double类型浮点数x | 支持 | +| [pow10f](#pow10f) | 计算表达式$10^x$的值 | float类型浮点数x| 支持 | +| [pow10l](#pow10l) | 计算表达式$10^x$的值 | long double类型浮点数x | 支持 | +| [remainder](#remainder) | 计算参数x除以y的余数,等同于drem | double类型浮点数x
double类型浮点数y | 支持 | +| [remainderf](#remainderf) | 计算参数x除以y的余数,等同于dremf | float类型浮点数x
float类型浮点数y | 支持 | +| [remainderl](#remainderl) | 计算参数x除以y的余数 | long double类型浮点数x
long double类型浮点数y | 支持 | +| [remquo](#remquo) | 计算参数x和参数y的浮点余数,并将商保存在传递的参数指针quo中 | double类型浮点数x
double类型浮点数y
int *类型商que | 支持 | +| [remquof](#remquof) | 计算参数x和参数y的浮点余数,并将商保存在传递的参数指针quo中 | float类型浮点数x
float类型浮点数y
int *类型商que | 支持 | +| [remquol](#remquol) | 计算参数x和参数y的浮点余数,并将商保存在传递的参数指针quo中 | long double类型浮点数x
long double类型浮点数y
int *类型商que | 支持 | +| [rint](#rint) | 根据当前舍入模式,将参数x舍入为浮点个数的整数值 | double类型的浮点数x | 支持 | +| [rintf](#rintf) | 根据当前舍入模式,将参数x舍入为浮点个数的整数值 | float类型的浮点数x | 支持 | +| [rintl](#rintl) | 根据当前舍入模式,将参数x舍入为浮点个数的整数值 | long double类型的浮点数x | 支持 | +| [round](#round) | 将double类型x舍入为浮点形式表示的double型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | double类型的浮点数x | 支持 | +| [roundf](#roundf) | 将float类型x舍入为浮点形式表示的float型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | float类型的浮点数x | 支持 | +| [roundl](#roundl) | 将long double类型x舍入为浮点形式表示的long double型最近整数值。如果x位于两个整数中心,将向远离0的方向舍入。 | long double类型的浮点数x | 支持 | +| [scalb](#scalb) | 计算$x * FLT\_RADIX^{exp}$的double类型值 | double类型的浮点数x
double类型的指数exp | 支持 | +| [scalbf](#scalbf) | 计算$x * FLT\_RADIX^{exp}$的float类型值 | float类型的浮点数x
float类型的指数exp | 支持 | +| [scalbln](#scalbln) | 计算$x * FLT\_RADIX^{exp}$的double类型值 | double类型的浮点数x
long类型的指数exp | 支持 | +| [scalblnf](#scalblnf) | 计算$x * FLT\_RADIX^{exp}$的float类型值 | float类型的浮点数x
long类型的指数exp | 支持 | +| [scalblnl](#scalblnl) | 计算$x * FLT\_RADIX^{exp}$的long double类型值 | long double类型的浮点数x
long类型的指数exp | 支持 | +| [scalbn](#scalbn) | 计算$x * FLT\_RADIX^{exp}$的double类型值 | double类型的浮点数x
int类型的指数exp | 支持 | +| [scalbnf](#scalbnf) | 计算$x * FLT\_RADIX^{exp}$的float类型值 | float类型的浮点数x
int类型的指数exp | 支持 | +| [scalbnl](#scalbnl) | 计算$x * FLT\_RADIX^{exp}$的long double类型值 | long double类型的浮点数x
int类型的指数exp | 支持 | +| [significand](#significand) | 用于分离浮点数x的尾数部分,返回double类型 | double类型的浮点数x | 支持 | +| [significandf](#significandf) | 用于分离浮点数x的尾数部分,返回double类型 | double类型的浮点数x | 支持 | +| [sin](#sin) | 计算参数x的正弦值,参数应为弧度值,返回double类型 | double类型的浮点数x | 支持 | +| [sinf](#sinf) | 计算参数x的正弦值,参数应为弧度值,返回float类型 | float类型的浮点数x | 支持 | +| [sinl](#sinl) | 计算参数x的正弦值,参数应为弧度值,返回long double类型 | long double类型的浮点数x | 支持 | +| [sincos](#sincos) | 同时计算参数x的正弦值和余弦值,并将结果存储在*sin和*cos,比单独调用sin和cos效率更高 | double类型的浮点数x
double*类型的浮点数sin
double*类型的浮点数cos | 支持 | +| [sincosf](#sincosf) | 同时计算参数x的正弦值和余弦值,并将结果存储在*sin和*cos,比单独调用sin和cos效率更高 | float类型的浮点数x
float*类型的浮点数sin
float*类型的浮点数cos | 支持 | +| [sincosl](#sincosl) | 同时计算参数x的正弦值和余弦值,并将结果存储在*sin和*cos,比单独调用sin和cos效率更高 | long double类型的浮点数x
long double*类型的浮点数sin
long double*类型的浮点数cos | 支持 | +| [sinh](#sinh) | 计算参数x的双曲正弦值,返回double类型 | double类型的浮点数x | 支持 | +| [sinhf](#sinhf) | 计算参数x的双曲正弦值,返回float类型 | float类型的浮点数x | 支持 | +| [sinhl](#sinhl) | 计算参数x的双曲正弦值,返回long double类型 | long double类型的浮点数x | 支持 | +| [sqrt](#sqrt) | 计算参数x的平方根,返回类型double | double类型的浮点数x | 支持 | +| [sqrtf](#sqrtf) | 计算参数x的平方根,返回类型float | float类型的浮点数x | 支持 | +| [sqrtl](#sqrtl) | 计算参数x的平方根,返回类型long double | long double类型的浮点数x | 支持 | +| [tan](#tan) | 计算参数x的正切值,参数应为弧度值,返回double类型 | double类型的浮点数x | 支持 | +| [tanf](#tanf) | 计算参数x的正切值,参数应为弧度值,返回float类型 | float类型的浮点数x | 支持 | +| [tanl](#tanl) | 计算参数x的正切值,参数应为弧度值,返回long double类型 | long double类型的浮点数x | 支持 | +| [tanh](#tanh) | 计算参数x的双曲正切值,返回double类型 | double类型的浮点数x | 支持 | +| [tanhf](#tanhf) | 计算参数x的双曲正切值,返回float类型 | float类型的浮点数x | 支持 | +| [tanhl](#tanhl) | 计算参数x的双曲正切值,返回long double类型 | long double类型的浮点数x | 支持 | +| [tgamma](#tgamma) | 计算参数x的伽马函数,返回double类型 | double类型的浮点数x | 支持 | +| [tgammaf](#tgammaf) | 计算参数x的伽马函数,返回float类型 | float类型的浮点数x | 支持 | +| [tgammal](#tgammal) | 计算参数x的伽马函数,返回long double类型 | long double类型的浮点数x | 支持 | +| [trunc](#trunc) | 截取参数x的整数部分,并将整数部分以浮点形式表示 | double类型的浮点数x | 支持 | +| [truncf](#truncf) | 截取参数x的整数部分,并将整数部分以浮点形式表示 | float类型的浮点数x | 支持 | +| [truncl](#truncl) | 截取参数x的整数部分,并将整数部分以浮点形式表示 | long double类型的浮点数x | 支持 | +| [y0](#y0) | 计算参数x的第二类0阶贝塞尔函数 | double类型的浮点数x | 支持 | +| [y0f](#y0f) | 计算参数x的第二类0阶贝塞尔函数 | float类型的浮点数x | 支持 | +| [y1](#y1) | 计算参数x的第二类1阶贝塞尔函数 | double类型的浮点数x | 支持 | +| [y1f](#y1f) | 计算参数x的第二类1阶贝塞尔函数 | float类型的浮点数x | 支持 | +| [yn](#yn) | 计算参数x的第二类n阶贝塞尔函数 | int类型阶数n
double类型的浮点数x | 支持 | +| [ynf](#ynf) | 计算参数x的第二类n阶贝塞尔函数 | int类型阶数n
float类型的浮点数x | 支持 | + +## 设备驱动 + +### register_driver + +在文件系统中注册一个字符设备驱动程序。 + +**参数**: + +1. 要创建的索引节点的路径path。 +2. file_operations结构体指针fops。 +3. 访问权限mode。 +4. 将与inode关联的私有用户数据priv。 + +**输出**: + +- 0:操作成功。 +- 负数值:操作失败。 + +#### unregister_driver + +从文件系统中删除“path”处的字符驱动程序。 + +**参数**: + +1. 要删除的索引节点的路径path。 + +**输出**: + +- 0:操作成功。 +- -EINVAL:无效的path路径。 +- -EEXIST:path中已存在inode。 +- -ENOMEM:内存不足。 + +#### register_blockdriver + +在文件系统中注册一个块设备驱动程序。 + +**参数**: + +1. 要创建的索引节点的路径path。 +2. block_operations结构体指针bops。 +3. 访问权限mode。 +4. 将与inode关联的私有用户数据priv。 + +**输出**: + +- 0:操作成功。 +- -EINVAL:无效的path路径。 +- -EEXIST:path中已存在inode。 +- -ENOMEM:内存不足。 + +#### unregister_blockdriver + +从文件系统中删除“path”处的块设备驱动程序。 + +**参数**: + +1. 要删除的索引节点的路径path。 + +**输出**: + +- 0:操作成功。 +- -EINVAL:无效的path路径。 +- -EEXIST:path中已存在inode。 +- -ENOMEM:内存不足。 + +## Shell模块 + +### SHELLCMD_ENTRY + +向Shell模块静态注册命令。 + +**参数**: + +1. 命令变量名name。 +2. 命令类型cmdType。 +3. 命令关键字cmdKey。 +4. 处理函数的入参最大个数paraNum。 +5. 命令处理函数回调cmdHook。 + +**输出**:无 + +### osCmdReg + +向Shell模块动态注册命令。 + +**参数**: + +1. 命令类型cmdType。 +2. 命令关键字cmdKey。 +3. 处理函数的入参最大个数paraNum。 +4. 命令处理函数回调cmdHook。 + +**输出**: + +- 0:操作成功。 +- OS_ERRNO_SHELL_NOT_INIT:shell模块未初始化。 +- OS_ERRNO_SHELL_CMDREG_PARA_ERROR:无效的输入参数。 +- OS_ERRNO_SHELL_CMDREG_CMD_ERROR:无效的字符串关键字。 +- OS_ERRNO_SHELL_CMDREG_CMD_EXIST:关键字已存在。 +- OS_ERRNO_SHELL_CMDREG_MEMALLOC_ERROR:内存不足。 diff --git a/docs/zh/embedded/uniproton/uniproton_functions.md b/docs/zh/embedded/uniproton/uniproton_functions.md new file mode 100644 index 0000000..f716755 --- /dev/null +++ b/docs/zh/embedded/uniproton/uniproton_functions.md @@ -0,0 +1,160 @@ +# UniProton 功能设计 + +## 支持任务管理 + +UniProton 是一个单进程支持多线程的操作系统。在 UniProton 中,一个任务表示一个线程。UniProton 中的任务为抢占式调度机制,而非时间片轮转调度方式。高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务挂起或阻塞后才能得到调度。 + +UniProton 的任务一共有32个优先级(0-31),最高优先级为0,最低优先级为31。每个优先级可以创建多个任务。 + +UniProton 任务管理模块提供任务创建、任务删除、任务挂起、任务恢复、任务延时、锁任务调度、解锁任务调度、当前任务ID获取、任务私有数据获取与设置、查询指定任务正在 Pending 的信号量 ID、查询指定任务状态、上下文信息、任务通用信息、任务优先级设定与获取、调整指定优先级的任务调度顺序、注册及取消任务创建钩子、任务删除钩子、任务切换钩子等功能。UniProton 在初始化阶段,默认会创建一个最低优先级的 IDLE 任务,用户在没有处于运行态的任务时,IDLE 任务被运行。 + +## 支持事件管理 + +事件机制可以实现线程之间的通讯。事件通讯只能是事件类型的通讯,无数据传输。 + +UniProton 事件作为任务的扩展,实现任务之间的通讯。每个任务支持32种类型事件(32个 bit 位,每 bit 代表一种事件类型)。 + +UniProton 提供读取本任务事件和写指定任务事件的功能。读事件时可以同时读取多种事件,也可以只读取一种事件,写事件时也可以同时写一种或多种类型事件。 + +## 支持队列管理 + +队列(Queue),又称消息队列,是线程间实现通信的一种方式,实现了数据的存储和传递功能。根据优先级可以将数据写入到队列头或队列尾,但只能从队列的头处读取数据。 + +UniProton 创建队列时,根据用户传入队列长度和消息单元大小来开辟相应的内存空间以供该队列使用。在队列控制块中维护一个头指针 Head 和一个尾指针 Tail 来表示当前队列中数据存储情况。头指针 Head 表示队列中被占用消息的起始地址,尾指针 Tail 表示队列中空闲消息的起始地址。 + +## 支持硬中断管理 + +硬中断是由硬件触发的会改变系统运行轨迹的一个电平信号,硬中断用于通知 CPU 某个硬件事件的发生。硬中断一般分为可屏蔽中断和不可屏蔽中断(NMI)两种。 + +硬中断的优先级高于所有任务,其内部也有不同的优先级,当同时有多个硬中断被触发时,最高优先级的硬中断总是优先得到响应。高优先级硬中断是否能打断正在执行的低优先级硬中断(即中断嵌套),视不同芯片平台而异。 + +出于任务延时、软件定时器等需要,OS 会在初始化阶段,创建1个 Tick 硬中断,其实质是一个周期性的硬件定时器。 + +## 支持内存管理 + +内存管理主要工作是动态的划分并管理用户分配好的大片内存区间。当程序某一部分需要使用内存,可以通过操作系统的内存申请函数索取指定大小内存块,一旦使用完毕,通过内存释放函数归还所占用内存,使之可以重复使用。 + +目前 UniProton 提供了 FSC 内存算法,该算法优缺点及应用场景如下表所示: + +| 内存算法 | 优点 | 缺点 | 应用场景 | +| :----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------ | ------------------------------------ | +| 类型私有 FSC 算法 | 内存控制块信息占用内存较少,支持最小4字节对齐的内存块大小申请;支持相邻内存块的快速分割合并,无内存碎片。 | 内存申请和内存释放的效率较低。 | 能够灵活适应各种产品的场景。 | + +如下简要描述一下FSC内存算法: + +### FSC内存算法 + +#### 核心思想 + +对于申请的内存大小为 uwSize,如果用二进制,则表示为 0b{0}1xxx,{0}表示1前面可能有0个或多个零。无论1后面xxx为何内容,如果将1变成10,xxx 则全部变成0,则总会出现 10yyy > 1xxx(此处yyy表示xxx的对应位全部变成0)。 + +我们可以直接得到最左边的1的下标。下标值或者从高位到低位依次为0-31(BitMap),或者从低位到高位依次为0-31(uwSize)。如果32位寄存器从高位到低位的bit位的下标依次为0-31,则 0x80004000 的最左边1的下标为0。于是我们可以维护一个空闲链表头数组(元素数不超过31),以内存块大小最左边的1的下标做为链表头的数组索引,即将所有最左边的1的下标相同的内存块挂接在同一个空闲链表中。 + +如:索引为2的链表可挂接的空闲块大小为4、5、6、7;索引为N的链表可挂接的空闲块大小为2^N到2^(N+1)-1。 + +![](./figures/FCS.png) + +#### 内存申请 + +当申请 uwSize 大小的内存时,首先利用汇编指令得到最左边的1的下标,假定为n。为确保空闲链表中的第一个空闲内存块满足 uwSize,从索引为 n+1 开始搜索。若 n+1 所属空闲链表不为空,则取该链表中的第一个空闲块。若 n+1 链表为空,则判断 n+2 链表,依次类推,直到找到非空链表或索引达到31。 + +为避免 for 循环逐级判断空闲链表是否为空,定义一个32位的 BitMap 全局变量。若索引n的空闲链表非空,则 BitMap 的下标为n的位置1,否则清0。BitMap 的下标为31的位在初始化时直接置1。于是查找从 n+1 开始的第一个非空闲链表,可以首先将 BitMap 复本的0到n位清零,然后获取复本的最左边的1的下标,若不等于31,即为第一个空闲链表非空的数组索引。 + +所有的空闲块都以双向链表形式,串接在空闲链表中。若从链表中获取的第一个空闲块比较大,即分割出一个 usSiz e的内存块后,剩下的空间至少可做一次最小分配。则将剩余的空闲块调整到对应的空闲链表中。 + + ![](./figures/MemoryApplication.png) + +内存控制头中记录有空闲内存块的大小(包括控制头本身)。内存控制头中有一个复用成员,位于最首部时。当内存块空闲时,作为指向后一个空闲内存块的指针;当内存块占用时,存放魔术字,表示该内存块非空闲。为避免魔术字与指针冲突(与地址值相同),高低4位均为0xf。因为已分配的内存块起始地址需按4字节对齐,所以不存在冲突。 + +#### 内存释放 + +当释放内存时,需要将前后相邻的空闲块进行合并。首先,通过判断控制头中的魔术字,确认地址参数(pAddr)的合法性。通过首地址加偏移值的方式,得到后邻的内存块控制头的起始地址。若后邻内存块是空闲的,则将后邻内存块从所属空闲链表中删除,调整当前内存块的大小。 + +为了使内存释放时能迅速找到前邻的内存块控制头,及判断前邻的内存块是否空闲。内存控制头中增加一个成员,标记前邻的内存块是否空闲。可在内存申请的时,将后邻的该标记设置为占用态(若空闲内存块被分割成两块,前一块为空闲,将当前内存块的该标记设置为空闲态);在内存释放时,将后邻的该标记设置为空闲态。释放当前内存时,若前邻的内存块标记为使用,则不需要合并前邻的内存块;若前邻的内存块标记为空闲,则需要进行合并。若某个内存块为空闲时,则将其后邻控制块的标记设为到本控制块的距离值。 + + ![](./figures/MemoryRelease.png) + +## 支持定时器管理 + +定时器管理是为满足产品定时业务需要,UniProton 提供了软件定时器功能。 + +对于软件定时器,是基于 Tick 实现,所以定时周期必须为 Tick 的整数倍,在 Tick 处理函数中进行软件定时器的超时扫描。 + +目前提供的软件定时器接口,可以完成定时器创建,启动,停止,重启,删除操作。 + +## 支持信号量管理 + +信号量(Semaphore)常用于协助一组互相竞争的任务来访问临界资源,在需要互斥的场合作为临界资源计数使用,根据临界资源使用场景分为核内信号量和核间信号量。 + +信号量对象有一个内部计数器,它支持如下两种操作: + +- 申请(Pend):Pend 操作等待指定的信号量,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其他线程发布该信号量,等待的容忍时间可设定。 + +- 释放(Post):Post 操作发布指定的信号量,若无任务等待该信号量,则直接将计数器加1返回。否则唤醒为此信号量挂起的任务列表中的第一个任务(最早阻塞的)。 + +通常一个信号量的计数值用于对应有效的资源数,表示剩余可被占用的互斥资源数。其值的含义如下有两种情况: + +- 为0值:表示没有积累下来的Post操作,且有可能有在此信号量上阻塞的任务。 + +- 为正值:表示有一个或多个Post下来的发布操作。 + +## 支持异常管理 + +UniProton 中的异常接管属于维测特性,其主要目的是在系统出现异常后,记录尽可能多的异常现场信息,便于后续问题定位。同时提供异常时的钩子函数,便于用户能够在异常发生时做一些用户化的特殊处理。其主要功能是接管内部异常处理或者外部硬件异常。 + +## 支持 CPU 占用率统计 + +UniProton 中的系统 CPU 占用率(CPU Percent)是指周期时间内系统的 CPU 占用率,用于表示系统一段时间内的闲忙程度,也表示 CPU 的负载情况。系统CPU占用率的有效表示范围为 0~10000,其精度为万分比。10000 表示系统满负荷运转。 + +UniProton 中的线程 CPU 占用率指单个线程的 CPU 占用率,用于表示单个线程在一段时间内的闲忙程度。线程 CPU 占用率的有效表示范围为 0~10000,其精度为万分比。10000 表示在一段时间内系统一直在运行该线程。单核系统所有线程(包括中断和空闲任务)的 CPU 之和为 10000。 + +UniProton 的系统级 CPU 占用率依赖于 Tick 模块,通过 Tick 采样 IDLE 任务或 IDLE 软中断计数来实现。 + +## 支持 STM32F407ZGT6 开发板 + +支持开发板主要涉及 OS 内核外围的启动流程和单板驱动,目录结构如下: + +├─apps # 基于 UniProton 实时 OS 编程的 demo 程序。 + +│ └─hello_world # hello_world 示例程序。 + +├─bsp # 提供的板级驱动与 OS 对接。 + +├─build # 提供编译脚本编译出最终镜像。 + +├─config # 配置选项,供用户调整运行时参数。 + +├─include # UniProton 实时部分提供的编程接口 API。 + +└─libs # UniProton 实时部分的静态库,build 目录中的 makefile 示例已经将头文件和静态库的引用准备好,应用可直接使用。 + +## 支持 OpenAMP 混合部署 + +OpenAMP 是一个开源软件框架,旨在通过非对称多处理器的开源解决方案,来标准化异构嵌入式系统中操作环境之间的交互。OpenAMP 包括如下四大组件: + +1. remoteproc:管理从核的生命周期,管理共享内存、通信使用的buffer、vring等资源,初始化rpmsg和virtio。 + +2. rpmsg:实现多核通信的通道,基于virtio实现。 + +3. virtio:通过一套虚拟IO实现主从核的驱动程序通信,是一种半虚拟化技术。 + +4. libmetal:屏蔽操作系统实现细节,提供通用用户API访问设备,处理设备中断、内存请求。 + +## 支持POSIX标准接口 + +[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_apis.md)。 + +## 支持 Shell 命令行 + +UniProton 提供 shell 命令行,它能够以命令行交互的方式访问操作系统的功能或服务:它接受并解析用户输入的命令,并处理操作系统的输出结果。UniProton 的 shell 模块代码适配自开源 ROTS 系统 LiteOS 的 shell 模块。因此与 LiteOS 一致,用户可以新增定制的命令,新增命令需重新编译烧录后才能执行。当前 UniProton 只支持了 help 命令,其他命令将在后续的版本中进行完善。Shell 模块为用户提供下面几个接口。 + +| 接口名 | 描述 | +| :---: | :--: | +| SHELLCMD_ENTRY | 静态注册命令 | +| osCmdReg | 动态注册命令 | + +通常静态注册命令方式一般用于注册系统常用命令,动态注册命令方式一般用于注册用户命令。静态注册命令有5个入参,动态注册命令有4个入参。下面除去第一个入参是静态注册独有的,剩余的四个入参两个注册命令是一致的。接口详细信息可以查看[UniProton接口说明](./uniproton_apis.md)。 -- Gitee From 732a3143414bd0d315d9e9e5d57dade5d620c281 Mon Sep 17 00:00:00 2001 From: hemiao Date: Fri, 18 Jul 2025 17:16:11 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3markdownlint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../installation_and_running.md | 1 - .../openEuler_embedded/quick_build_guide.md | 12 +++++----- docs/zh/embedded/uniproton/uniproton_apis.md | 24 +++++++++++-------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/docs/zh/embedded/openEuler_embedded/installation_and_running.md b/docs/zh/embedded/openEuler_embedded/installation_and_running.md index 1ed5e97..f395542 100644 --- a/docs/zh/embedded/openEuler_embedded/installation_and_running.md +++ b/docs/zh/embedded/openEuler_embedded/installation_and_running.md @@ -65,7 +65,6 @@ qemu-system-aarch64 --version >由于标准根文件系统镜像进行了安全加固,因此第一次启动时,需要为登录用户名root设置密码,且密码强度有相应要求: > >1. 至少8个字符。 - > >2. 必须包含数字,字母和特殊字符。 > > @#$%^&*+|\\=~`!?,.:;-_'"(){}[]/>< diff --git a/docs/zh/embedded/openEuler_embedded/quick_build_guide.md b/docs/zh/embedded/openEuler_embedded/quick_build_guide.md index ab24e77..c2f52cd 100644 --- a/docs/zh/embedded/openEuler_embedded/quick_build_guide.md +++ b/docs/zh/embedded/openEuler_embedded/quick_build_guide.md @@ -49,11 +49,11 @@ yum -y install tar cmake gperf sqlite-devel chrpath gcc-c++ patch rpm-build flex 目前我们提供了对arm32位和aarch64位两种架构的工具链支持,通过如下方式可以获得: - - 下载rpm包: `wget https://repo.openeuler.org/openEuler-22.03-LTS/EPOL/main/x86_64/Packages/gcc-cross-1.0-0.oe2203.x86_64.rpm` - - 解压rpm包: `rpm2cpio gcc-cross-1.0-0.oe2203.x86_64.rpm | cpio -id` - - 解压后可以看到当前路径下会有tmp目录,编译链存放于该目录下 - - ARM 32位工具链: openeuler_gcc_arm32le.tar.xz - - ARM 64位工具链: openeuler_gcc_arm64le.tar.xz + - 下载rpm包: `wget https://repo.openeuler.org/openEuler-22.03-LTS/EPOL/main/x86_64/Packages/gcc-cross-1.0-0.oe2203.x86_64.rpm` + - 解压rpm包: `rpm2cpio gcc-cross-1.0-0.oe2203.x86_64.rpm | cpio -id` + - 解压后可以看到当前路径下会有tmp目录,编译链存放于该目录下 + - ARM 32位工具链: openeuler_gcc_arm32le.tar.xz + - ARM 64位工具链: openeuler_gcc_arm64le.tar.xz ### 已安装好工具的构建容器 @@ -71,7 +71,7 @@ openEuler Embedded的构建过程中会使用到大量的各式各样的主机 openEuler Embedded整个构建工程的文件布局如下,假设openeuler\_embedded为顶层目录: -><顶层目录openeuler_embedded> +>\<顶层目录openeuler_embedded> >├── src 源代码目录,包含所有软件包代码、内核代码和Yocto构建代码 >├── build openEuler Embedded的构建目录,生成的各种镜像放在此目录下 diff --git a/docs/zh/embedded/uniproton/uniproton_apis.md b/docs/zh/embedded/uniproton/uniproton_apis.md index c628b91..4de2c83 100644 --- a/docs/zh/embedded/uniproton/uniproton_apis.md +++ b/docs/zh/embedded/uniproton/uniproton_apis.md @@ -3100,6 +3100,7 @@ imaxdiv()函数将计算intmax_t型除法的商和余数。如果余数或商不 #### wcstol wcstol()将宽字符串转换为long型正数。输入字符串分解为三部分。 + 1. 初始的(可能为空的)空白宽字符代码序列(由iswspace()指定)。 2. long型整数,进制的类型由base入参决定。 3. 由一个或多个无法识别的宽字符代码组成的最终宽字符串。 @@ -3111,6 +3112,7 @@ wcstol()将宽字符串转换为long型正数。输入字符串分解为三部 #### wcstod wcstod()将宽字符串转换为double型浮点数。输入字符串分解为三部分。 + 1. 初始的(可能为空的)空白宽字符代码序列(由iswspace()指定)。 2. double型浮点数、无穷大或者NaN。 3. 由一个或多个无法识别的宽字符代码组成的最终宽字符串。 @@ -3185,7 +3187,8 @@ imaxabs()函数计算并返回intmax_t型的绝对值。 #### strtol -strtol()函数转换字符串到long型数值。这将nptr所指向的字符串的初始部分转换为long类型的表示形式。首先,它们将输入字符串分解为三部分: +strtol()函数转换字符串到long型数值。这将nptr所指向的字符串的初始部分转换为long类型的表示形式。首先,它们将输入字符串分解为三部分。 + 1. 一个初始的、可能为空的空白字符序列(由isspace()函数判断)。 2. long型整数,进制的类型由base入参决定。 3. 由一个或多个不可识别字符组成的最后字符串,包括输入字符串的终止NUL字符。 @@ -3197,6 +3200,7 @@ strtol()函数转换字符串到long型数值。这将nptr所指向的字符串 #### strtod strtod()函数将字符串转换为double型。输入字符串分解为三部分。 + 1. 初始的(可能为空的)空白字符代码序列(由isspace()指定)。 2. double型浮点数、无穷大或者NaN。 3. 由一个或多个无法识别的字符代码组成的最终字符串。 @@ -3446,7 +3450,7 @@ errno: 暂不支持 -####shmdt +#### shmdt 暂不支持 @@ -3776,7 +3780,7 @@ tss_set() 函数应将线程特定的 value 与通过先前调用 tss_create() | [ftime](#ftime) | 支持 | | [timegm](#timegm) | 支持 | -#### pthread_getattr_default_np +### pthread_getattr_default_np pthread_getattr_default_np() 函数初始化attr引用的线程属性对象,使其包含用于创建线程的默认属性。 @@ -3787,7 +3791,7 @@ pthread_getattr_default_np() 函数初始化attr引用的线程属性对象, - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_setattr_default_np +### pthread_setattr_default_np pthread_setattr_default_np() 函数用于设置创建新线程的默认属性,即当使用NULL的第二个参数调用pthread_create时使用的属性。 @@ -3798,7 +3802,7 @@ pthread_setattr_default_np() 函数用于设置创建新线程的默认属性, - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_getattr_np +### pthread_getattr_np pthread_getattr_np() 函数初始化attr引用的线程属性对象,使其包含描述正在运行的线程线程的实际属性值。 @@ -3812,7 +3816,7 @@ pthread_getattr_np() 函数初始化attr引用的线程属性对象,使其包 - 0:操作成功。 - 非0值:操作失败。 -#### pthread_getname_np +### pthread_getname_np pthread_getname_np() 函数可用于检索线程的名称。thread参数指定要检索其名称的线程。 @@ -3827,7 +3831,7 @@ pthread_getname_np() 函数可用于检索线程的名称。thread参数指定 - 0:操作成功。 - EINVAL:指针未初始化。 -#### pthread_setname_np +### pthread_setname_np pthread_setname_np() 函数可用于设置线程的名称。 @@ -3858,7 +3862,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 - EINVAL:指针未初始化。 - ETIMEDOUT:阻塞超时。 -#### pthread_tryjoin_np +### pthread_tryjoin_np 类似pthread_join,但如果线程尚未终止,将立即返回EBUSY。 @@ -3873,7 +3877,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 - EINVAL:指针未初始化。 - EBUSY:调用时线程尚未终止。 -#### ftime +### ftime 取得当前的时间和日期,由一个timeb结构体返回。 @@ -3883,7 +3887,7 @@ pthread_setname_np() 函数可用于设置线程的名称。 **输出**:无 -#### timegm +### timegm 将tm结构体表示的时间转换为自一个标准时间点以来的时间,不受本地时区的影响。 -- Gitee From e1ce4d625f36db04d7e1cbca70c7a058d872ac12 Mon Sep 17 00:00:00 2001 From: hemiao Date: Fri, 18 Jul 2025 17:20:27 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3markdownlint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../embedded/openEuler_embedded/installation_and_running.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/embedded/openEuler_embedded/installation_and_running.md b/docs/zh/embedded/openEuler_embedded/installation_and_running.md index f395542..4eb92b3 100644 --- a/docs/zh/embedded/openEuler_embedded/installation_and_running.md +++ b/docs/zh/embedded/openEuler_embedded/installation_and_running.md @@ -64,8 +64,8 @@ qemu-system-aarch64 --version > >由于标准根文件系统镜像进行了安全加固,因此第一次启动时,需要为登录用户名root设置密码,且密码强度有相应要求: > - >1. 至少8个字符。 - >2. 必须包含数字,字母和特殊字符。 + >- 至少8个字符。 + >- 必须包含数字,字母和特殊字符。 > > @#$%^&*+|\\=~`!?,.:;-_'"(){}[]/>< > -- Gitee