前言¶
概述
本文档基于OpenHarmony 5.1.0 Release版本适配SS928V100/SS927V100,支持OpenHarmony Small型系统运行媒体、图形基本功能,支持XTS认证。
说明:
本文以SS928V100为例,未有特殊说明,SS927V100与SS928V100内容一致。
在SS928V100和SS927V100上运行OpenHarmony依赖SS928V100_SDK版本包。
产品版本
与本文档相对应的产品版本如下。
产品名称 |
产品版本 |
|---|---|
SS928 |
V100 |
SS927 |
V100 |
符号约定
在本文中可能出现下列标志,它们所代表的含义如下。
符号 |
说明 |
|---|---|
|
表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。 |
|
表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。 |
|
表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。 |
|
用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “须知”不涉及人身伤害。 |
|
对正文中重点信息的补充说明。 “说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。 |
读者对象
本文档(本指南)主要适用于以下工程师:
技术支持工程师
软件开发工程师
修订记录
修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。
文档版本 |
发布日期 |
修改说明 |
|---|---|---|
00B02 |
2025-11-15 |
第2次临时版本发布。 “2.2.1 ohos编译”、“2.2.3 SDK sample编译”章节涉及修改。 |
00B01 |
2025-09-15 |
第1次临时版本发布。 |
版本介绍¶
OpenHarmony版本¶
SS927V100/SS928V100 OpenHarmony版本基于5.1.0 Release版本开发。
OpenHarmony 5.1.0社区发布地址:
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v5.1.0-release.md
OpenHarmony社区漏洞发布地址:
https://gitee.com/openharmony/security/blob/master/zh/security-disclosure/README.md
OpenHarmony Small版系统源码移植修改说明¶
为减小发布包大小,裁剪非必要的软件模块,主要裁剪的软件如表1所示。如果产品开发需要引入,请从社区OpenHarmony 5.1.0 Release版本中同步,放到对应目录即可。
表 1 软件裁剪
软件模块
路径
vk-gl-cts
third_party/vk-gl-cts
libabigail
third_party/libabigail
skia
third_party/skia
openmax
third_party/openmax
spirv-tools
third_party/spirv-tools
libphonenumber
third_party/libphonenumber
完成SS928V100和SS927V100的代码仓适配,如:vendor/hisilicon、device/soc/hisilicon、device/board/hisilicon
完成Linux6.6内核升级,内核升级需要融合芯片SDK kernel特性和OpenHarmony内核特性。
基于OpenHarmony Small型系统XTS最小集系统的Config.json文件范围适配OpenHarmony 的子系统,满足通过所有XTS用例。
完成SS928V100和SS927V100的继承OpenHarmony图形、媒体和增强特性开发,满足媒体和图形Sample功能。
说明:
该OpenHarmony版本主要适配SS927V100/SS928V100 ,涉及多个OpenHarmony原生仓的修改,解决编译、功能问题。
鸿蒙版本的uboot是直接使用各芯片SDK版本的uboot,所以对各芯片的各类介质Uboot可以在原SDK版本按相关文档进行编译。
鸿蒙版本默认使用的是toybox,不支持vi,当客户需要使用vi时,可以切换为busybox。
在SS927V100/SS928V100板子上配置IP和mount指令可参考如下指令:
ifconfig eth0 150.1.xx.x netmask 255.255.248.0 route add default gw 150.1.48.1 echo 0 9999999 > /proc/sys/net/ipv4/ping_group_range telnetd & mount -t nfs -o nolock,addr=150.1.xx.x 150.1.xx.x:/home/pub /tmp
在rootfs中打包自定义文件或目录¶
说明:
本章节所有代码中加粗部分为文件中新增内容。
在rootfs中打包自定义文件时,可根据实际业务场景需求选择在“在rootfs中新增目录打包文件”或者“往rootfs现有目录下打包文件”章节指导应用。
在rootfs中新增目录打包文件¶
修改ohos\vendor\hisilicon\hispark_ss928v100_linux\fs.yml。
- fs_dir_name: rootfs fs_dirs: - .... - source_dir: sbin target_dir: sbin - source_dir: usr/bin target_dir: usr/bin - source_dir: usr/sbin target_dir: usr/sbin - source_dir: data target_dir: storage/data - target_dir: proc - target_dir: mnt - source_dir: xxx target_dir: xxx
说明:
此过程会进行rootfs内容的拷贝,将source_dir下内容拷贝到target_dir,然后制作文件系统。source_dir是out(out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux)目标文件目录。
target_dir是文件系统下对应的目录,会创建rootfs/xxx文件目录。
为实现拷贝目标文件到out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/xxx目录下,在ohos\vendor\hisilicon\hispark_ss928v100_linux\init_configs\BUILD.gn文件可以修改为如下。
... copy("copy_xxx") { sources = [ "xxx/xxx.sh" ] outputs = [ "$root_out_dir/xxx/{{source_file_part}}" ] }
最终xxx.sh可以放到rootfs/xxx目录下。
再修改外面一层的ohos\vendor\hisilicon\hispark_ss928v100_linux\BUILD.gn,增加copy_xxx为依赖。
图 1 调用copy_xxx修改后图

在ohos目录下执行 rm -rf out/,再重新编译 ./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk即可。
图 2 rootfs中新增xxx目录

往rootfs现有目录下打包文件¶
参考ohos\vendor\hisilicon\hispark_ss928v100_linux\init_configs目录实现,拷贝xxx/xxx.sh文件到etc/xxx目录下。
先将要拷贝的文件放到对应目录中xxx/xxx.sh,同时修改ohos\vendor\hisilicon\hispark_ss928v100_linux\init_configs\BUILD.gn。
图 1 新增copy_xxx执行拷贝目标文件至etc/xxx

再修改外面一层的ohos\vendor\hisilicon\hispark_ss928v100_linux\BUILD.gn,增加copy_xxx为依赖。
图 2 调用copy_xxx修改后图

重新编译,则xxx.sh会被打包到rootfs的etc/xxx/xxx.sh。
图 3 目标文件打包到/etc/xxx验证结果

在ohos目录下执行 rm -rf out/,再重新编译./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk即可。
在rootfs中生成软链接¶
如同时想生成yyy的软链接指向xxx.sh,则可修改ohos\vendor\hisilicon\hispark_ss928v100_linux\fs.yml,如下。
fs_symlink:
-
source: libc.so
link_name: ${fs_dir}/lib/ld-musl-aarch64.so.1
-
source: mksh
link_name: ${fs_dir}/bin/sh
-
source: ./
link_name: ${fs_dir}/usr/lib/a7_softfp_neon-vfpv4
-
source: mksh
link_name: ${fs_dir}/bin/shell
-
source: xxx.sh
link_name: ${fs_dir}/xxx/yyy
在ohos目录下执行 rm -rf out/,再重新编译./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk即可。
基于shell脚本整目录拷贝到rootfs中¶
在ohos\vendor\hisilicon\hispark_ss928v100_linux目录中,新建图1所示的rootfs目录。
图 1 源码中新增rootfs目录

然后给上述新增的目录授予权限,执行如下命令。
chmod -R 777 rootfs新增ohos\vendor\hisilicon\hispark_ss928v100_linux\BUILD.gn文件内容如下加粗部分。
# Copyright (C) 2020 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved. group("hispark_ss928v100_linux") { deps = [ "hals/utils/sys_param:vendor.para", "init_configs", "init_configs:init_fstab", "init_configs:init_initd", "init_configs:copy_xxx", ":copy_binary", ] } import("//build/lite/config/component/lite_component.gni") build_ext_component("copy_binary") { exec_path = rebase_path(".", root_build_dir) outdir = rebase_path("$root_out_dir") command = "./copy_binary_files.sh ${outdir}" }
此新增脚本含义:调用build_ext_component执行command对应的命令。
新增copy_binary_files.sh脚本到当前目录ohos\vendor\hisilicon\hispark_ss928v100_linux\中,内容如下。
#! /bin/sh echo "--------------------- copy binary files to rootfs folder, current folder is $PWD ---------------------" mkdir -p $1/rootfs_binary_files cp -Rf ./rootfs/bin/* $1/rootfs_binary_files
此脚本作用:将上面新增的源目录rootfs/bin/*所有文件和目录拷贝到out/.../.../rootfs_binary_files(本例中:out/hispark_ss928v100_linux/ipcamera_hispark_ss928v100_linux/rootfs_binary_files)目录中。备注:脚本可以自己根据业务情况调整和修改。
授予上述copy_binary_files.sh脚本执行权限,执行如下命令。
chmod 777 copy_binary_files.sh将rootfs_binary_files拷贝到rootfs中,还需要修改ohos\vendor\hisilicon\hispark_ss928v100_linux\fs.yml文件。
- fs_dir_name: rootfs fs_dirs: - source_dir: ${root_path}/out/preloader/${product_name}/system target_dir: system - source_dir: rootfs_binary_files target_dir: bin - source_dir: bin target_dir: bin ignore_files: - Test.bin - TestSuite.bin - query.bin - cve - checksum is_strip: TRUE
如需要拷贝到自定义目录中,可根据在rootfs中新增目录打包文件修改。
在ohos目录下执行 rm -rf out/,再重新编译 ./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk即可。
开发环境¶
OpenHarmony 5.1社区代码压缩包下载地址。
网页下载地址:https://repo.huaweicloud.com/openharmony/os/5.1.0-Release/code-v5.1.0-Release.tar.gz
linux服务器下载的命令:
curl -# https://repo.huaweicloud.com/openharmony/os/5.1.0-Release/code-v5.1.0-Release.tar.gz -O code-v5.1.0-Release.tar.gz -k
搭建OpenHarmony开发环境¶
搭建OpenHarmony Small型系统编译环境¶
图 1 OpenHarmony Small型系统开发环境

Ubuntu配置OpenHarmony开发环境,请参考OpenHarmony社区文档。
OpenHarmony官方社区参考地址
https://docs.openharmony.cn/pages/v5.1/zh-cn/OpenHarmony-Overview_zh.md
OpenHarmony编译构建指导
https://docs.openharmony.cn/pages/v5.1/zh-cn/device-dev/subsystems/subsys-build-all.md
编译环境目前主要支持Ubuntu18.04和Ubuntu20.04(Ubuntu22.04暂不支持)。推荐使用“apt-get和pip3 install命令安装”,如图2所示。
图 2 apt-get和pip3 install命令安装

如果出现图3问题"Your system shell isn't bash...",请执行如下命令。
ln -s /bin/bash /bin/sh
图 3 构建镜像不支持dash命令报错

搭建代码开发环境¶
通过以下步骤配置SS928V100和SS927V100 OpenHarmony版本的编译目录。
下载HiSpark社区Pegasus仓代码,由于ss928v100_clang和ss928v100_gcc为Pegasus的子仓,而OpenHarmony使用LLVM-Clang工具链的SDK,估此步骤下载得到Pegasus和ss928v100_clang代码目录。
git clone https://gitee.com/HiSpark/pegasus.git cd pegasus git submodule init git submodule update platform/ss928v100_clang
从HiSpark社区下载SS928V100和SS927V100的移植适配OpenHarmony5.1补丁,路径为Pegasus仓下:os/OpenHarmony得到middleware.、patch_build.sh、patch目录文件。
提前下载好开源鸿蒙的OpenHarmony-v5.1.0-release代码压缩包文件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
从HiSpark社区下载clang的sdk包,路径为Pegasus仓下的子仓:platform/ss928v100_clang。
将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.86.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目录下。
trusted-firmware-a:目录为sdk/open_source/trusted-firmware-a,需要按照sdk/open_source/trusted-firmware-a/readme.txt指导从https://github.com/ARM-software/arm-trusted-firmware/archive/v2.2.tar.gz 下载,将源码压缩包放置于sdk/open_source/trusted-firmware-a目录下。
u-boot:目录为sdk/open_source/u-boot,需要按照sdk/open_source/u-boot/readme.txt指导从https://ftp.denx.de/pub/u-boot/u-boot-2020.01.tar.bz2 下载,将源码压缩包放置于sdk/open_source/u-boot目录下。
通过以上步骤操作,得到SS928V100和SS927V100 OpenHarmony版本文件目录如下。
├── ohos
└── sdk
└── middleware
ohos目录是OpenHarmony代码根目录。
sdk目录是SS928V100的SDK源码和二进制库。请从HiSpark社区下载,并将解压出来的目录名称修改为sdk,ohos代码中SDK目录(device/soc/hisilicon/ss928v100/sdk_linux)没有源码,只包含SDK的修改补丁,并创建了软连接指向最外层的sdk目录。
说明: 由于SS927V100和SS928V100相似,因此SS927V100的SDK能复用SS928V100的SDK源码,共用device/soc/hisilicon/ss928v100/sdk_linux目录。
配置SDK编译工具链¶
SDK包中提供内核驱动源码和Sample源码,可以通过源码进行编译。在编译前,需要配置编译工具链,将编译工具链路径加入到环境变量中。
将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配置环境变量是否生效。
command -v clang将SYSROOT_PATH导入环境变量,此处配置仅用于编译SDK sample,配置方法如下。
配置之前请先执行ohos编译,编译生成依赖的sysroot。
说明:
使用LLVM-Clang工具链来编译SDK sample时,会依赖ohos编译后的产物:out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/sysroot,因此需要提前进行ohos编译。假设工具链的sysroot路径为/path/to/pegasus/os/OpenHarmony/ohos/out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/sysroot,将工具链的sysroot设置到环境变量SYSROOT_PATH。
export SYSROOT_PATH=/path/to/pegasus/os/OpenHarmony/ohos/out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/sysroot检查SYSROOT_PATH配置是否生效。
echo $SYSROOT_PATH
版本编译¶
ohos编译¶
基于SS928V100和SS927V100的 OpenHarmony版本编译方式遵循社区编译方式,以SS928V100为例。
进入SS928V100 OpenHarmony代码根目录ohos(如果是其他解决方案目录层级,请参考解决方案编译指导)。
执行如下编译命令,成功之后显示=====build successful=====
./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk
说明:
若要编译SS927V100,执行如下编译命令./build.sh --product-name=ipcamera_hispark_ss927v100_linux --ccache --no-prebuilt-sdk
说明: ohos版本需重编时,可以先rm -rf ./out,再重新执行./build.sh --product-name=ipcamera_hispark_ss928v100_linux --ccache --no-prebuilt-sdk编译指令即可。
uboot编译¶
编译uboot需要进入SDK的osdrv目录,执行如下步骤:
cd sdk/osdrv/
make BOOT_MEDIA=emmc gslboot_build -j 20
编译成功后,生成的uboot文件位于sdk/osdrv/pub/ss928v100_emmc_image_musl目录下。
SDK sample编译¶
进入sdk/smp/a55_linux/mpp/sample,执行:make
编译完成后,各sample可执行文件位于sdk/smp/a55_linux/mpp/sample对应的目录下。
说明: sample中使用了SDK_init和SDK_exit来进行MPP各个模块的初始化和退出。hnr需要使用pqp模块,SDK_init中默认未初始化pqp模块,因此需要单独对hnr的sample进行重编,具体步骤为:
将sdk/smp/a55_linux/mpp/sample/common/sdk_module_init.h头文件中的宏定义INIT_PQP修改为1;
进入hnr目录重编,命令如下。
cd sdk/smp/a55_linux/mpp/sample/hnr make clean make
注意: 在鸿蒙系统下运行SDK sample前需要关闭媒体和图形进程,具体操作方法为: 方法一:
在vendor/hisilicon/hispark_ss928v100_linux/init_configs/init_linux_openharmony.cfg文件中删除 "start media_server", "start wms_server", 2.参考ohos编译重新编译鸿蒙 3.完成单板烧写镜像后,即可运行SDK sample 方法二:
在板端文件/etc/init.cfg中删除如下配置 "start media_server", "start wms_server",
完成单板上电重启后,即可运行SDK sample
版本烧写¶
SS928V100和SS927V100 OpenHarmony版本,编译好的镜像文件在如下目录。
out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux
ohos编译出的out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux目录下默认是EMMC。
参考uboot编译生成boot_image.bin。
通过ToolPlatform加载emmc_burn_table.xml烧写,uboot选择sdk/osdrv/pub/ss928v100_emmc_image_musl/boot_image.bin。ToolPlatform截图信息如图1所示。
图 1 EMMC版本烧写截图

烧写完成后,按照实际介质大小和分区来配置bootargs启动参数;提供内核15M的bootargs如下,供客户参考。
setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused rw rootwait root=/dev/mmcblk0p3 rootfstype=ext4 blkdevparts=mmcblk0:1M(uboot.bin),15M(kernel),96M(rootfs.ext4),-' setenv bootcmd 'mmc read 0 0x50000000 0x800 0x7800; bootm 50000000' sa; re
说明:
mmc读取数值的计算方法:使用程序员计算器,计算过程选择DEC十进制转换、最后结果转换成HEX进制。举例说明0x6800由来,内核镜像size大小15M,mmc每512字节为一个单位,15*1024*1024/512=0x7800 (计算结果转换成HEX进制)。
鸿蒙内核选项修改¶
需要修改鸿蒙Linux内核选项时,以打开“RAM Disk”内核选项为例,可参考如下步骤操作。
先完成ohos目录的编译。
进入ohos/out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/kernel/linux-6.6目录。
输入命令。
#CROSS_COMPILE_DIR为kernel/linux/build/kernel.mk中配置的交叉工具链的路径,参考当前路径如:ohos/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- make ARCH=arm64 CROSS_COMPILE=${CROSS_COMPILE_DIR} menuconfig
选择 “ General setup“(按Enter键)进入子页面。
图 1 General setup

在子页面中选择“Initial RAM filesystem and RAM disk (initramfs/initrd) support”(按空格键进行选择,按下Save键保存)。
图 2 配置Initial RAM filesystem and RAM disk (initramfs/initrd) support

按Exit键返回到“General setup”页面,选择Device Drivers-> Block devices->RAM block device support,如图3所示。
图 3 Block devices页面

确认保存配置后退出即可。
图 4 退出图

在当前目录下将文件拷贝到ohos/kernel/linux/config/linux-6.6/arch/arm64/configs/目录,命令参考:cp .config ~/{XX}/ohos/kernel/linux/config/linux-6.6/arch/arm64/configs/。
进入到ohos/kernel/linux/config/linux-6.6/arch/arm64/configs/目录,将原有的hispark_ss928v100_small_defconfig 删除,将.config拷贝成hispark_ss928v100_small_defconfig该文件。
回到ohos目录下面,将out目录删除,再次重新编译ohos。
XTS测试说明¶
XTS测试套编译需要指定参数--gn-args build_xts=true,参考如下示例。
./build.sh --product-name=ipcamera_hispark_ss928v100_linux --gn-args build_xts=true --ccache --no-prebuilt-sdk编译结束之后会在out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/目录下生成suites文件夹,里面的acts文件即为测试套。
XTS环境搭建与测试请参考OpenHarmony社区兼容性测评服务指导:
https://www.openharmony.cn/certification/document/guid
请参考链接中“兼容性测试执行环境搭建”章节,配置Windows环境,安装必要的软件。SS928V100和SS927V100是小型系统,请参考“小型系统应用兼容性测试指导”章节完成环境搭建和配置。
XTS测试需要的资源文件,请下载社区OpenHarmony 5.1.0 Release 小型系统ACTS资源文件,替换acts\resource目录下的文件。
下载地址:https://www.openharmony.cn/certification/document/xts
图 1 小型系统资源文件

须知:
OH5.0及以前社区下载的resource\tools\query.bin是32位的,无法在64位的设备上使用。客户需要使用自行编译生成的query.bin文件(out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/suites/acts/resource/tools/query.bin)。
OH5.1社区下载resource没有tools目录。
XTS测试套补充说明¶
带屏幕和应用的产品,需要测试ActsAbilityMgrTest和ActsBundleMgrTest。若客户产品需过鸿蒙XTS认证A标,需要测试此两项。
请ohos/test/xts/acts/build_lite/BUILD.gn文件第106行和第107行的代码(删除前面的“#”号)。
重新编译工程后,在acts/testcases/ability目录下生成测试套ActsAbilityMgrTest.bin,在acts/testcases/appexecfwk目录下生成测试套ActsBundleMgrTest.bin。
XTS测试命令说明¶
全量执行命令
run acts单模块执行命令
run -l ActsSamgrTest多模块执行命令
run -l ActsSamgrTest;ActsPMSTest;ActsBootstrapTest;ActsParameterTest
XTS申请测评注意事项¶
请参考《OpenHarmony设备兼容性规范x.x自检表_小型系统 .xlsx》 sheet1表格的规范要求修改配置文件vendor/hisilicon/hispark_ss928v100_linux/hals/utils/sys_param/vendor.para,自行设置产品信息。
OpenHarmony设备兼容性规范自检表下载地址:https://www.openharmony.cn/certification/document/pcs/
图 1 小型系统 PCS5.x 自检表

填写申请测评电子流的时候需要上传PCID.sc文件,请从out目录下获取(out/hispark_ss928v100/ipcamera_hispark_ss928v100_linux/PCID.sc)。
送测时需要执行全量XTS,acts\reports目录下生成的测试报告摘要(summary_report.html)里面必须包含产品信息。
图 2 XTS测试报告描述信息

请按照如下目录准备测评材料。注意提交测评的外观图片要和送测的实物保持一致;且芯片丝印要带有芯片对外传播名称。
图 3 XTS认证送检材料参考目录

硬件单板烧写¶
SS928V100和SS927V100硬件单板烧写KEY0步骤。
进入 U-Boot 命令行,依次执行如下命令
mw 0x10122008 0x6 # 以下四行为设置需要烧写的 key, # 以 key=128'h00010203_04050607_08090a0b_0c0d0e0f 为例 mw 0x1012200C 0x0c0d0e0f mw 0x10122010 0x08090a0b mw 0x10122014 0x04050607 mw 0x10122018 0x00010203 mw 0x10123000 0x2 mw 0x10122004 0x1acce551
警告:
上述烧写命令中 key 的烧写只是一个参数,实际烧写请使用随机数,不可使用示例中的 key。对单板上下电重启,烧写的key0生效(reboot软重启无法生效,需上下电才能生效),再跑XTS用例可看出XTS认证的huks用例都PASS。
配置telnetd无密码连接使用¶
OpenHarmony5.1 toybox的telnetd连接默认需要密码,按如下两种方法配置可正常使用无密码连接。
进入板端执行如下命令可直接修改/etc/passwd文件
sed -i "s#root:x:0:0:::/bin/false#root::0:0::/root/:/bin/sh#g" /etc/passwd通过本地PC上挂载NFS服务器,把板端/etc/passwd拷贝到本地PC上完成修改
修改板端passwd,需先mount本地服务器,把板端/etc/passwd拷贝到本地服务器,对本地passwd文件按图2方式修改,再拷贝回去替换板端/etc/passwd文件。
图 1 修改前:(root:x:0:0:::/bin/false)

图 2 修改后:(root::0:0::/root:/bin/sh)

修改后使用telnet连接无需密码。
媒体功能使用指导¶
在vendor/hisilicon/hispark_ss928v100_linux/config.json文件中,新增子系统。
{ "subsystem": "arkui", "components": [ { "component": "ui_lite", "features":[ "ui_lite_enable_graphic_font_config = true" ] } ] }, { "subsystem": "graphic", "components": [ { "component": "graphic_utils_lite", "features":[] }, { "component": "surface_lite", "features":[] } ] }, { "subsystem": "window", "components": [ { "component": "window_manager_lite", "features":[] } ] }, { "subsystem": "multimedia", "components": [ { "component": "camera_lite", "features":[] }, { "component": "media_lite", "features":[] }, { "component": "audio_lite", "features":[] }, { "component": "media_service", "features":[] } ] },
在vendor/hisilicon/hispark_ss928v100_linux/init_configs/init_linux_openharmony.cfg文件中,新增代码,启动媒体服务如下:
"start media_server",图 1 新增启动服务

在编译版本之前,需要重新编译libsns_hy_s0603.so,因为此库动态加载的时候,会报链接的错误,所以需要修改编译脚本进行重新编译,编译脚本路径如下:
\sdk\smp\a55_linux\mpp\cbb\isp\user\sensor\ss928v100\hy_s0603\Makefile
修改方式如图2所示。
图 2 修改方式

需要新增的链接依赖项:-lot_isp -lsecurec -lss_ae -lss_isp -lss_awb -L$(REL_LIB)
编译完成后libsns_hy_s0603.so 会生成在\sdk\smp\a55_linux\mpp\out\lib目录下面,还原所有修改的链接依赖项,然后可直接进行ohos的版本编译。
另一种解决方式:
如果编译环境上有patchelf工具,可以通过如下命令为libsns_hy_s0603.so添加链接依赖,而不用重新编译:
patchelf --add-needed libss_awb.so libsns_hy_s0603.so
patchelf --add-needed libss_ae.so libsns_hy_s0603.so
patchelf --add-needed libot_mpi_isp.so libsns_hy_s0603.so
patchelf --add-needed libsecurec.so libsns_hy_s0603.so
通过如下命令验证是否成功添加链接依赖:
readelf -d libsns_hy_s0603.so
出现如图显示即OK:

如果有HDMI输出需要的,需要手动打开图形层服务,具体操作如下:
单板执行命令:./bin/wms_server & 打开图形层服务,此命令只需要执行一次,重复执行会导致报错。
须知:
媒体的所有sample都需要按照指定的命令进行退出操作,默认是输入q退出。
预览功能¶
单板上下电,执行/tmp/camera_sample。
图 1 串口显示信息

按提示输入3。
图 2 启动预览服务

预期结果:显示设备上显示Sensor采集的画面。
录制功能¶
单板上下电,执行/tmp/camera_sample。
须知:
录制文件默认保存在单板/userdata/norm/文件夹。如若需要修改录制文件保存的路径,修改applications/sample/camera/media/camera_sample.cpp 218行代码,对应下图中的DEFAULT_SAVE_PATH变量。
按提示输入2。
图 1 启动录制服务

来回移动下sensor的位置,确保录制的图像是动态的,输入s,回车,再输入q,回车,结束录制。
图 2 结束录制

录制的视频保存在如下位置:
图 3 串口显示信息

可以用后续的player_sample播放。
说明:
手动修改系统时间方式,使用date命令:date -u "YYYY-MM-DD HH:mm:ss",例如:date -u "2024-04-10 12:00:00"。具体业务场景建议设备与服务端进行时间校准。
播放功能¶
使用播放Demo,播放视频,命令如下:
/tmp/player_sample /tmp/1970_01_02_202516_00.MP4 如果播放的是aac等码流,命令如下: /tmp/player_sample /tmp/audio_1970-01-01-00-03-36.aac 2
预期结果:显示器画面正常播放录制的视频,单板插上耳机,有正常声音输出
图 1 启动播放功能

采集H264码流功能¶
须知: 媒体子系统提供的Demo仅用于OpenHarmony基础功能测试,商用业务场景需要基于OpenHarmony API自行开发。
sensor切换指导¶
默认sensor是hy_s0603,时序是1080P 60帧,VI采集时是30帧,最终显示的输出是60帧。
同时支持hy_s0603,时序是4K 30帧,VI采集时是30帧,最终显示的输出也是30帧。
若需要从1080P切换为4K,步骤如下:
在foundation/multimedia/media_lite/services目录新增cameradev_hy_s0603_4k30_928.ini,并在该文件中适配4k对应参数。
在foundation/multimedia/media_lite/services/BUILD.gn文件中,将cameradev_hy_s0603_928.ini替换为cameradev_hy_s0603_4k30_928.ini。
图 1 修改sensor配置文件

重新编译,烧写。
音频采集功能¶
单板上下电,如果要测试talkvqe的功能,需要先执行export LD_PRELOAD=/usr/lib/libsecurec.so:/usr/lib/libvqe_hpf.so
预先把需要的so路径加载进来。
执行/tmp/audio_capature_sample。
图 1 配置音频采集参数

按照提示输入参数,当前支持PCM、AAC_LC、G711A、G711U格式。
输入s或S,开始录制,输入p或P,停止录制,输入q或Q,退出录制。
图 2 启动音频采集功能

录制成功的文件保存在/userdata目录,可以使用player_sample播放。
图 3 音频采集文件

图形示例应用使用指导¶
图形子系统提供两个示例应用。包含控件示例应用,和窗口示例应用。控件示例应用主要覆盖图形子系统的控件能力,例如Button、Label、ScrollView等。窗口示例应用主要覆盖窗口管理能力,包含窗口的创建、删除、以及位置设置。
预置条件¶
打开图形子系统,步骤如下:
在vendor/hisilicon/hispark_ss928v100_linux/config.json文件,"subsystems"标签中添加如下代码。
{ "subsystem": "arkui", "components": [ { "component": "ui_lite", "features":[ "ui_lite_enable_graphic_font_config = true" ] } ] }, { "subsystem": "graphic", "components": [ { "component": "graphic_utils_lite", "features":[] }, { "component": "surface_lite", "features":[] } ] }, { "subsystem": "window", "components": [ { "component": "window_manager_lite", "features":[] } ] },
重新编译烧写。
资源路径¶
表1中描述了示例应用依赖的资源文件,以及资源资源文件的目录(路径相对于OpenHarmony根目录)
表 1 资源路径说明
文件名 |
文件路径 |
|---|---|
sample_ui(控件示例应用) |
out\hispark_ss928v100\ipcamera_hispark_ss928v100_linux\dev_tools\bin\ |
sample_window(窗口示例应用) |
out\hispark_ss928v100\ipcamera_hispark_ss928v100_linux\dev_tools\bin\ |
字体资源 |
out\hispark_ss928v100\ipcamera_hispark_ss928v100_linux\data |
图片资源 |
foundation\arkui\ui_lite\tools\qt\simulator\config\images foundation\arkui\ui_lite\ tools\qt\simulator\config\faces foundation\arkui\ui_lite\ tools\qt\simulator\default_resource |
设备端需具备条件¶
连接HDMI显示设备,如显示器、电视。
确认板端能访问到测试需要文件。例如,通过tftp进行网络的挂载,或者使用SD卡。
确认设备驱动gfbg.ko、ot_tde.ko已加载(可在板端使用lsmod命令查看)。
(如需支持鼠标)执行“echo host>/proc/10320000.usb30drd/mode”。
执行"wms_server &",确认wms_server进程正常启动(在板端top命令查看当前运行进程是否存在该进程,且显示器点亮为蓝屏),移动鼠标,如果无鼠标,执行“cat /dev/input/event0”。
实例应用说明¶
sample_window¶
验证步骤
配置网络;
ifconfig eth0 **.***.**.**挂载可执行文件;
mount -t nfs -o addr=**.***.**.**,nolock,tcp **.***.**.**:$ sample_window所在路径 /mnt执行sample_window。
./sample_window
sample_ui¶
配置网络
ifconfig eth0 **.***.**.**挂载资源
mount -t nfs -o addr=**.***.**.**,nolock,tcp **.***.**.**:$资源所在服务器路径 /user/data表1中描述了对应资源文件的板端路径,需要按该表把资源复制到对应板端路径
表 1 资源说明表
文件名
板端路径
line_cj.brk
/user/data
SourceHanSansSC-Regular.otf
/user/data
图片资源
/storage/data
挂载可执行文件
mount -t nfs -o addr=**.***.**.**,nolock,tcp **.***.**.**:$ sample_ui所在路径 /mnt执行sample_ui,显示如图1画面。
./sample_ui图 1 启动画面结果





