diff --git a/README_zh.md b/README_zh.md
index f344abd3f132416e19231d76d744e18202a4d905..ef105269aa5ed3da3d22f1dc1e588f6a43ae6c76 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -4,9 +4,11 @@
本次发布仅提供基础功能,可参考docs目录下的文档、Sample下的示例进行试用,如遇到问题反馈到HiSpark社区解决。
+
+
## 目录
-```
+```shell
├── docs
├── os
│ └── OpenHarmony SS928V100和SS927V100移植适配OpenHarmony 5.1补丁,包含内核适配、XTS认证、图形和媒体增强特性
@@ -37,6 +39,44 @@
+## 代码下载
+
+下载主仓
+
+```shell
+git clone https://gitee.com/HiSpark/pegasus.git
+```
+
+pegasus仓下有两个子仓,分别是ss928v100_clang和ss928v100_gcc,可以根据需要下载某一个或者全部下载。
+
+例如:
+
+- 下载ss928v100_clang子仓
+
+ ```shell
+ cd pegasus
+ git submodule init
+ git submodule update platform/ss928v100_clang
+ ```
+
+- 下载ss928v100_gcc子仓
+
+ ```shell
+ cd pegasus
+ git submodule init
+ git submodule update platform/ss928v100_gcc
+ ```
+
+- 下载全部两个子仓
+
+ ```shell
+ cd pegasus
+ git submodule init
+ git submodule update platform/ss928v100_clang platform/ss928v100_gcc
+ ```
+
+
+
## 许可说明
- platform\ss928v100_xxx\smp\a55_linux\mpp\out\lib,os\OpenHarmony\middleware里面为上海海思的自研库,遵循上海海思的LICENSE,这个目录下有LICENSE文件,LICENSE文件中可以看到版权信息:
diff --git "a/docs/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227.md" "b/docs/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227.md"
index 1939f1e38f2d555d1b39179978cce09a7c450ebd..abe5119b3993389fb6a0add6d64307d395f51b30 100644
--- "a/docs/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227.md"
+++ "b/docs/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227/OpenHarmony Small\347\211\210\346\234\254\344\275\277\347\224\250\346\214\207\345\215\227.md"
@@ -175,9 +175,6 @@ SS927V100/SS928V100 OpenHarmony版本基于5.1.0 Release版本开发。
>- 该OpenHarmony版本主要适配SS927V100/SS928V100 芯片,涉及多个OpenHarmony原生仓的修改,解决编译、功能问题。
>- 鸿蒙版本的uboot是直接使用各芯片SDK版本的uboot,所以对各芯片的各类介质Uboot可以在原SDK版本按相关文档进行编译。
>- 鸿蒙版本默认使用的是toybox,不支持vi,当客户需要使用vi时,可以切换为busybox。
->- 在SS927V100/SS928V100板子上跑busybox有两类方法。
-> 第一种方法由SDK版本包编译出busybox二进制执行文件,拷贝到板端/bin目录下直接使用;
-> 第二种方法把ohos的toybox修改为busybox,并集成到ohos文件系统内。 本文档的各芯片“busybox的使用说明”章节描述的是第二种方法的。
>- 在SS927V100/SS928V100板子上配置IP和mount指令可参考如下指令:
> ```
> ifconfig eth0 150.1.xx.x netmask 255.255.248.0
@@ -440,13 +437,22 @@ ln -s /bin/bash /bin/sh
通过以下步骤配置SS928V100和SS927V100 OpenHarmony版本的编译目录。
-1. 从HiSpark社区下载SS928V100和SS927V100移植适配Openharmony5.1补丁,路径为SS928V100仓下:os/OpenHarmony得到middleware.、patch\_build.sh、patch.tar目录文件。
-2. 提前下载好OpenHarmony 5.1代码压缩包文件code-v5.1.0-Release.tar.gz文件。可按如下2种方法配置,任选其一即可得到ohos目录以及middleware目录。
+1. 下载HiSpark社区Pegasus仓代码,由于ss928v100\_clang和ss928v100\_gcc为Pegasus的子仓,而OpenHarmony使用llvm-calng工具链的SDK,估此步骤下载得到Pegasus和ss928v100\_clang代码目录。
+
+ ```
+ git clone https://gitee.com/HiSpark/pegasus.git
+ cd pegasus
+ git submodule init
+ git submodule update platform/ss928v100_clang
+ ```
+
+2. 从HiSpark社区下载SS928V100和SS927V100移植适配Openharmony5.1补丁,路径为Pegasus仓下:os/OpenHarmony得到middleware.、patch\_build.sh、patch目录文件。
+3. 提前下载好OpenHarmony 5.1代码压缩包文件code-v5.1.0-Release.tar.gz文件。可按如下2种方法配置,任选其一即可得到ohos目录以及middleware目录。
- 此方法用于指定脚本读取/path/to/code-v5.1.0-Release.tar.gz的解压路径。执行./patch\_build.sh --path=/path/to
- 将code-v5.1.0-Release.tar.gz文件拷贝至./patch\_build.sh同级目录,执行./patch\_build.sh命令;执行完成后会删除当前目录下的code-v5.1.0-Release.tar.gz
-3. 从HiSpark社区下载sdk包,路径为SS928V100仓下的:platform/ss928v100\_clang。
-4. 将ss928v100\_clang目录改名为sdk,将sdk放置在和ohos同级目录
+4. 从HiSpark社区下载clang的sdk包,路径为Pegasus仓下的子仓:platform/ss928v100\_clang。
+5. 将ss928v100\_clang目录改名为sdk,将sdk放置在和ohos同级目录
- 编译uboot/kernel或驱动ko会依赖部分开源软件,需要从各个开源软件的官方源提供的路径进行下载,需要根据指导从各个软件的官方链接下手动下载,具体如下:
- linux:目录为sdk/open\_source/linux,需要按照sdk/open\_source/linux/readme.txt指导从https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.6.68.tar.gz 下载,将源码压缩包放置于sdk/open\_source/linux目录下。
- mbedtls:目录为sdk/open\_source/mbedtls,需要按照sdk/open\_source/mbedtls/readme.txt指导从https://github.com/ARMmbed/mbedtls/archive/refs/tags/v2.16.10.tar.gz 下载,将源码压缩包放置于sdk/open\_source/mbedtls目录下。
@@ -471,11 +477,38 @@ ln -s /bin/bash /bin/sh
SDK包中提供内核驱动源码和Sample源码,可以通过源码进行编译。在编译前,需要配置编译工具链,将编译工具链路径加入到环境变量。
-1. 将clang编译工具链加入到环境变量,执行:export PATH=/path/to/toolchains:$PATH
+- 将clang编译工具链加入到环境变量,执行:export PATH=/path/to/toolchains:$PATH
+
+ 例如,clang所在的路径为/path/to/pegasus/os/OpenHarmony/ohos/prebuilts/clang/ohos/linux-x86\_64/llvm/bin
+
+ ```
+ export PATH=/path/to/pegasus/os/OpenHarmony/ohos/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATH
+ ```
+
+ 检查clang配置环境变量是否生效。
+
+ ```
+ which clang
+ ```
+
+- 将SYSROOT\_PATH导入环境变量,此处配置仅用于编译SDK sample,配置方法如下。
+
+1. 配置之前清先执行ohos编译,编译生成依赖的sysroot。
-例如,clang所在的路径为/path/to/llvm\_clang/bin,则执行:export PATH=/path/to/llvm\_clang/bin:$PATH
+ > **说明:**
+ >使用llvm-clang工具链来编译SDK sample时,会依赖ohos编译后的产物:out/hispark\_ss928v100/ipcamera\_hispark\_ss928v100\_linux/sysroot,因此需要提前进行ohos编译。
+
+2. 假设工具链的sysroot路径为/path/to/pegasus/os/OpenHarmony/ohos/out/hispark\_ss928v100/ipcamera\_hispark\_ss928v100\_linux/sysroot,将工具链的sysroot设置到环境变量SYSROOT\_PATH。
-2. 将工具链的sysroot设置到环境变量SYSROOT\_PATH,假设工具链的sysroot路径为/path/to/llvm\_clang/sysroot,执行:export SYSROOT\_PATH=/path/to/llvm\_clang/sysroot
+ ```
+ export SYSROOT_PATH=/path/to/pegasus/os/OpenHarmony/ohos/out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/sysroot
+ ```
+
+3. 检查SYSROOT\_PATH配置是否生效。
+
+ ```
+ echo $SYSROOT_PATH
+ ```
## 版本编译
@@ -488,10 +521,10 @@ SDK包中提供内核驱动源码和Sample源码,可以通过源码进行编
1. 进入SS928V100 OpenHarmony代码根目录ohos(如果是其他解决方案目录层级,请参考解决方案编译指导)。
-1. 执行./build.sh --product-name=ipcamera\_hispark\_ss928v100\_linux --ccache --no-prebuilt-sdk编译命令,成功之后显示。
+1. 执行如下编译命令,成功之后显示=====build successful=====
```
- =====build successful=====
+ ./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk
```
> **说明:**
diff --git a/os/OpenHarmony/README_zh.md b/os/OpenHarmony/README_zh.md
new file mode 100644
index 0000000000000000000000000000000000000000..8e5b87372d8254d3314ba1c2220333e52c6e3b16
--- /dev/null
+++ b/os/OpenHarmony/README_zh.md
@@ -0,0 +1,26 @@
+## 版本描述
+
+本文档基于OpenHarmony 5.1.0 Release版本适配SS928V100/SS927V100芯片补丁包:
+1. 支持OpenHarmony5.1.0 Small型系统运行在SS928V100/SS927V100芯片上
+2. 支持Linux 6.6.86内核
+3. 继承OpenHarmony源生llvm-clang编译工具链
+4. 支持L1设备带屏和不带屏的XTS兼容性测试
+5. 支持继承OpenHarmony图形、媒体和增强特性开发,满足运行媒体和图形的Sample功能
+6. 支持运行SS928V100的SDK源生Sample
+
+## 快速入手
+
+### 目录介绍
+```
+os/OpenHarmony
+├─middleware 媒体中间件
+├─patch OpenHarmony移植适配的补丁目录,包括Kernel、媒体和图形等子系统
+├─README_zh.md
+└─patch_build.sh 应用在OpenHarmony 5.1.0 Release版本包上的补丁源码的shell脚本
+```
+### 文档使用简介
+| **文档路径** | **用途介绍** |
+|--|--|
+|docs/OpenHarmony Small版本使用指南/OpenHarmony Small版本使用指南.md | SS928V100/SS927V100上运行OpenHarmony Small系统,rootfs打包文件系统,配置代码开发环境、编译、烧写;鸿蒙内核选项修改;XTS测试说明;媒体功能使用;图形功能使用 |
+| docs/OpenHarmony内核适配SS928V100 SDK 内核6.6特性指导文档/OpenHarmony内核适配SS928V100 SDK 内核6.6特性指导文档.md | 指导将SS928V100 SDK的内核补丁和OpenHarmony内核源码合并适配 |
+| docs/小型系统SS928V100芯片移植案例/小型系统SS928V100芯片移植案例.md | SS928V100移植SS928V100案例,主要包括芯片解决方案集成:产品配置添加,内核移植适配、编译,XTS认证,图形增强特性,媒体增强特性的适配案例总结 |
diff --git a/os/OpenHarmony/middleware/common/include/h8/ot_mw_type.h b/os/OpenHarmony/middleware/common/include/h8/ot_mw_type.h
deleted file mode 100755
index e63538bb88319a8a2c9d04dc86ed80d597d74fd5..0000000000000000000000000000000000000000
--- a/os/OpenHarmony/middleware/common/include/h8/ot_mw_type.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2025 HiSilicon (Shanghai) Technologies Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __OT_MW_TYPE_H__
-#define __OT_MW_TYPE_H__
-
-#ifdef __KERNEL__
-#include
-#else
-
-#include
-#endif
-
-#include "ot_type.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif /* __cplusplus */
-
-typedef td_uchar TD_UCHAR;
-typedef td_u8 TD_U8;
-typedef td_u16 TD_U16;
-typedef td_u32 TD_U32;
-typedef td_ulong TD_UL;
-typedef td_ulong TD_ULONG;
-typedef uintptr_t TD_UINTPTR_T;
-
-typedef td_void TD_VOID;
-typedef td_char TD_CHAR;
-typedef td_s8 TD_S8;
-typedef td_s16 TD_S16;
-typedef td_s32 TD_S32;
-typedef td_slong TD_SL;
-
-typedef td_float TD_FLOAT;
-typedef td_double TD_DOUBLE;
-
-#ifndef _M_IX86
- typedef td_u64 TD_U64;
- typedef td_s64 TD_S64;
-#else
- typedef unsigned __int64 TD_U64;
- typedef __int64 TD_S64;
-#endif
-
-typedef td_ulong TD_SIZE_T;
-typedef td_ulong TD_LENGTH_T;
-typedef td_phys_addr_t TD_PHYS_ADDR_T;
-
-typedef td_handle TD_HANDLE;
-typedef td_bool TD_BOOL;
-
-/*----------------------------------------------*
- * const defination *
- *----------------------------------------------*/
-#ifndef NULL
- #define NULL 0L
-#endif
-
-
-#ifndef TD_UNUSED
-#define TD_UNUSED(x) ((x) = (x))
-#endif
-
-#define TD_MW_INVALID_HANDLE (TD_HANDLE)(-1)
-
-typedef td_void *TD_MW_PTR;
-
-#ifndef TD_NULL_PTR
-#define TD_NULL_PTR 0L
-#endif
-
-#ifdef __cplusplus
-#if __cplusplus
-}
-#endif
-#endif /* __cplusplus */
-
-#endif /* __OT_MW_TYPE_H__ */
diff --git a/os/OpenHarmony/middleware/common/include/h9/ot_mw_type.h b/os/OpenHarmony/middleware/common/include/h9/ot_mw_type.h
deleted file mode 100755
index ae9feef21ebfbf3540daf5f3b4ea17c0bfa229b1..0000000000000000000000000000000000000000
--- a/os/OpenHarmony/middleware/common/include/h9/ot_mw_type.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2025 HiSilicon (Shanghai) Technologies Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __OT_MW_TYPE_H__
-#define __OT_MW_TYPE_H__
-
-#ifdef __KERNEL__
-#include
-#else
-
-#include
-#endif
-
-#include "ot_type.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif /* __cplusplus */
-
-typedef td_uchar TD_UCHAR;
-typedef td_u8 TD_U8;
-typedef td_u16 TD_U16;
-typedef td_u32 TD_U32;
-typedef td_ulong TD_UL;
-typedef td_ulong TD_ULONG;
-typedef uintptr_t TD_UINTPTR_T;
-
-typedef td_void TD_VOID;
-typedef td_char TD_CHAR;
-typedef td_s8 TD_S8;
-typedef td_s16 TD_S16;
-typedef td_s32 TD_S32;
-typedef td_slong TD_SL;
-
-typedef td_float TD_FLOAT;
-typedef td_double TD_DOUBLE;
-
-#ifndef _M_IX86
- typedef td_u64 TD_U64;
- typedef td_s64 TD_S64;
-#else
- typedef unsigned __int64 TD_U64;
- typedef __int64 TD_S64;
-#endif
-
-typedef td_ulong TD_SIZE_T;
-typedef td_ulong TD_LENGTH_T;
-typedef td_phys_addr_t TD_PHYS_ADDR_T;
-
-typedef td_handle TD_HANDLE;
-typedef td_bool TD_BOOL;
-
-/*----------------------------------------------*
- * const defination *
- *----------------------------------------------*/
-#ifndef NULL
- #define NULL 0L
-#endif
-
-#ifndef TD_UNUSED
-#define TD_UNUSED(x) ((x) = (x))
-#endif
-
-#define TD_MW_INVALID_HANDLE (TD_HANDLE)(-1)
-
-typedef td_void *TD_MW_PTR;
-
-#ifndef TD_NULL_PTR
-#define TD_NULL_PTR 0L
-#endif
-
-#ifdef __cplusplus
-#if __cplusplus
-}
-#endif
-#endif /* __cplusplus */
-
-#endif /* __OT_MW_TYPE_H__ */
diff --git a/os/OpenHarmony/middleware/common/include/ot_mw_type.h b/os/OpenHarmony/middleware/common/include/ot_mw_type.h
deleted file mode 120000
index 3692cd0b267f054172b10c54ea6801e096c89ec6..0000000000000000000000000000000000000000
--- a/os/OpenHarmony/middleware/common/include/ot_mw_type.h
+++ /dev/null
@@ -1 +0,0 @@
-./h8/ot_mw_type.h
\ No newline at end of file
diff --git a/os/OpenHarmony/middleware/common/include/ot_mw_type.h b/os/OpenHarmony/middleware/common/include/ot_mw_type.h
new file mode 100755
index 0000000000000000000000000000000000000000..e63538bb88319a8a2c9d04dc86ed80d597d74fd5
--- /dev/null
+++ b/os/OpenHarmony/middleware/common/include/ot_mw_type.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2025 HiSilicon (Shanghai) Technologies Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __OT_MW_TYPE_H__
+#define __OT_MW_TYPE_H__
+
+#ifdef __KERNEL__
+#include
+#else
+
+#include
+#endif
+
+#include "ot_type.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif /* __cplusplus */
+
+typedef td_uchar TD_UCHAR;
+typedef td_u8 TD_U8;
+typedef td_u16 TD_U16;
+typedef td_u32 TD_U32;
+typedef td_ulong TD_UL;
+typedef td_ulong TD_ULONG;
+typedef uintptr_t TD_UINTPTR_T;
+
+typedef td_void TD_VOID;
+typedef td_char TD_CHAR;
+typedef td_s8 TD_S8;
+typedef td_s16 TD_S16;
+typedef td_s32 TD_S32;
+typedef td_slong TD_SL;
+
+typedef td_float TD_FLOAT;
+typedef td_double TD_DOUBLE;
+
+#ifndef _M_IX86
+ typedef td_u64 TD_U64;
+ typedef td_s64 TD_S64;
+#else
+ typedef unsigned __int64 TD_U64;
+ typedef __int64 TD_S64;
+#endif
+
+typedef td_ulong TD_SIZE_T;
+typedef td_ulong TD_LENGTH_T;
+typedef td_phys_addr_t TD_PHYS_ADDR_T;
+
+typedef td_handle TD_HANDLE;
+typedef td_bool TD_BOOL;
+
+/*----------------------------------------------*
+ * const defination *
+ *----------------------------------------------*/
+#ifndef NULL
+ #define NULL 0L
+#endif
+
+
+#ifndef TD_UNUSED
+#define TD_UNUSED(x) ((x) = (x))
+#endif
+
+#define TD_MW_INVALID_HANDLE (TD_HANDLE)(-1)
+
+typedef td_void *TD_MW_PTR;
+
+#ifndef TD_NULL_PTR
+#define TD_NULL_PTR 0L
+#endif
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif /* __cplusplus */
+
+#endif /* __OT_MW_TYPE_H__ */
diff --git a/platform/readme.md b/platform/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..d3b69b6c4d851ee649a27749fc848dce8f2a11fa
--- /dev/null
+++ b/platform/readme.md
@@ -0,0 +1,10 @@
+本目录为`SDK`软件相关文件,包括`lib`库,驱动源码,`sample`源码等。
+
+- 支持`ss928v100`
+
+- 支持`clang`和`gcc`两种工具链,分别对应`ss928v100_clang`和`ss928v100_gcc`
+
+ | | 编译器 | 运行时库 |
+ | ----------------- | ------------ | ----------------- |
+ | `ss928v100_clang` | `llvm 15.04` | `musl libc 1.2.5` |
+ | `ss928v100_gcc` | `gcc 12.3.0` | `glibc 2.38` |
\ No newline at end of file
diff --git a/platform/ss928v100_clang b/platform/ss928v100_clang
index 0c0b969a470c57bc401aa6035ce9710a2ebb4805..98b4c6c4ac88ab78a4a720a005cfecc43315b2e5 160000
--- a/platform/ss928v100_clang
+++ b/platform/ss928v100_clang
@@ -1 +1 @@
-Subproject commit 0c0b969a470c57bc401aa6035ce9710a2ebb4805
+Subproject commit 98b4c6c4ac88ab78a4a720a005cfecc43315b2e5
diff --git a/platform/ss928v100_gcc b/platform/ss928v100_gcc
index a0cea644518178616e00fa410afb6a9982699ecf..c27dd7ae03dea079ef452029d08164060a430832 160000
--- a/platform/ss928v100_gcc
+++ b/platform/ss928v100_gcc
@@ -1 +1 @@
-Subproject commit a0cea644518178616e00fa410afb6a9982699ecf
+Subproject commit c27dd7ae03dea079ef452029d08164060a430832