提交 68345de1 编写于 作者: D duangavin123

update 导入OpenHarmony工程

Signed-off-by: Nduangavin123 <duanxichao@huawei.com>
上级 cafed38a
......@@ -97,7 +97,7 @@ OpenHarmony也提供了一系列可选的系统组件,方便设备开发者按
</td>
<td class="cellrowborder" valign="top" width="35.61356135613561%" headers="mcps1.2.4.1.2 "><p id="p458073721519"><a name="p458073721519"></a><a name="p458073721519"></a>开发参考</p>
</td>
<td class="cellrowborder" valign="top" width="35.91359135913591%" headers="mcps1.2.4.1.3 "><a name="ul175808372155"></a><a name="ul175808372155"></a><ul id="ul175808372155"><li><a href="https://device.harmonyos.com/cn/docs/develop/apiref/js-framework-file-0000000000611396" target="_blank" rel="noopener noreferrer">API参考</a></li></ul>
<td class="cellrowborder" valign="top" width="35.91359135913591%" headers="mcps1.2.4.1.3 "><a name="ul175808372155"></a><a name="ul175808372155"></a><ul id="ul175808372155"><li><a href="https://device.harmonyos.com/cn/docs/develop/apiref/js-framework-file-0000000000611396" target="_blank" rel="noopener noreferrer">API参考</a></li><li><a href="faqs/readme.md" target="_blank" rel="noopener noreferrer">常见问题</a></li></ul>
</td>
</tr>
</tbody>
......@@ -167,7 +167,7 @@ OpenHarmony也提供了一系列可选的系统组件,方便设备开发者按
</td>
<td class="cellrowborder" valign="top" width="36.053605360536054%" headers="mcps1.2.4.1.2 "><p id="p670135335116"><a name="p670135335116"></a><a name="p670135335116"></a>开发参考</p>
</td>
<td class="cellrowborder" valign="top" width="36.07360736073608%" headers="mcps1.2.4.1.3 "><a name="ul177016538519"></a><a name="ul177016538519"></a><ul id="ul177016538519"><li><a href="https://device.harmonyos.com/cn/docs/develop/apiref/js-framework-file-0000000000611396" target="_blank" rel="noopener noreferrer">API参考</a></li></ul>
<td class="cellrowborder" valign="top" width="36.07360736073608%" headers="mcps1.2.4.1.3 "><a name="ul177016538519"></a><a name="ul177016538519"></a><ul id="ul177016538519"><li><a href="https://device.harmonyos.com/cn/docs/develop/apiref/js-framework-file-0000000000611396" target="_blank" rel="noopener noreferrer">API参考</a></li><li><a href="faqs/readme.md" target="_blank" rel="noopener noreferrer">常见问题</a></li></ul>
</td>
</tr>
</tbody>
......
# 编译构建子系统常见问题<a name="ZH-CN_TOPIC_0000001215530845"></a>
- [轻量和小型系统](#section78686441462)
- [编译构建过程中,提示“usr/sbin/ninja: invalid option -- w”](#section67961431372)
- [编译构建过程中,提示“/usr/bin/ld: cannot find -lncurses”](#section199631617371)
- [编译构建过程中,提示“line 77: mcopy: command not found”](#section937435175)
- [编译构建过程中,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”](#section1115535018713)
- [编译构建过程中,提示“No module named 'Crypto'”](#section17982573813)
- [编译构建过程中,提示“xx.sh : xx unexpected operator”](#section53663205819)
- [编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”](#section1917790845)
- [编译构建过程中,提示找不到“-lgcc”](#section141771701647)
- [编译构建过程中,提示找不到“python”](#section51781202415)
- [编译构建过程中,提示找不到“python3”](#section1917950148)
## 轻量和小型系统<a name="section78686441462"></a>
### 编译构建过程中,提示“usr/sbin/ninja: invalid option -- w”<a name="section67961431372"></a>
- **现象描述:**
编译失败,提示“usr/sbin/ninja: invalid option -- w”。
- **可能原因:**
编译环境中ninja版本太低,不支持--w选项。
- **解决办法:**
卸载环境中ninja和gn,按照[获取工具](../get-code/gettools-ide.md)。
### 编译构建过程中,提示“/usr/bin/ld: cannot find -lncurses”<a name="section199631617371"></a>
- **现象描述:**
编译失败,提示“/usr/bin/ld: cannot find -lncurses”。
- **可能原因:**
编译环境ncurses库缺失。
- **解决办法:**
```
sudo apt-get install lib32ncurses5-dev
```
### 编译构建过程中,提示“line 77: mcopy: command not found”<a name="section937435175"></a>
- **现象描述:**
​编译失败,提示“line 77: mcopy: command not found”。
- **可能原因:**
编译环境未安装mcopy。
- **解决办法:**
```
​sudo apt-get install dosfstools mtools
```
### 编译构建过程中,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”<a name="section1115535018713"></a>
- **现象描述:**
编译失败,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”。
-**可能原因:**
当前用户对riscv编译器路径下的文件访问权限不够。
-**解决办法:**
查询gcc\_riscv32所在目录。
```
which riscv32-unknown-elf-gcc
```
使用chmod命令修改目录权限为755。
### 编译构建过程中,提示“No module named 'Crypto'”<a name="section17982573813"></a>
- **现象描述:**
编译失败,提示“No module named 'Crypto'”。
- **可能原因:**
python3未安装Crypto。
- **解决办法:**
1. 查询Python版本号。
```
python3 --version
```
2. 需使用python3.7以上版本,然后安装pycryptodome。
```
sudo pip3 install pycryptodome
```
### 编译构建过程中,提示“xx.sh : xx unexpected operator”<a name="section53663205819"></a>
- **现象描述:**
编译失败:“xx.sh \[: xx unexpected operator”。
- **可能原因:**
编译环境shell不是bash。
- **解决办法:**
```
sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
```
### 编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”<a name="section1917790845"></a>
- **现象描述**
编译构建过程中出现以下错误:
```
Could not find a version that satisfies the requirement six>=1.9.0
```
- **可能原因**
环境中未安装合适的“six”。
- **解决办法**
方法1:通过命令“pip3 install six”,在线安装。
方法2:离线安装
通过网页[https://pypi.org/project/six/\#files](https://pypi.org/project/six/#files),下载安装包。
![](figures/download-six.png)
将源码放置在Linux服务器中,并安装“pip3 install six-1.14.0-py2.py3-none-any.whl”。
完成上述安装后,重新构建。
### 编译构建过程中,提示找不到“-lgcc”<a name="section141771701647"></a>
- **现象描述**
编译构建过程中出现以下错误:
```
riscv32-unknown-elf-ld: cannot find -lgcc
```
- **可能原因**
交叉编译器gcc\_riscv32的PATH添加错误,如下,在"bin"后多添加了一个“/”,应该删除。
```
~/gcc_riscv32/bin/:/data/toolchain/
```
- **解决办法**
重新修改gcc\_riscv32的PATH,将多余的“/”删除。
```
~/gcc_riscv32/bin:/data/toolchain/
```
### 编译构建过程中,提示找不到“python”<a name="section51781202415"></a>
- **现象描述**
编译构建过程中出现以下错误:
```
-bash: /usr/bin/python: No such file or directory
```
- **可能原因**1
没有装python。
- **解决办法**
请按照[安装Python环境](../quickstart/quickstart-lite-env-setup-linux.md)
- **可能原因2**
![](figures/reason-no-python-soft-link.png)
- **解决办法**
usr/bin目录下没有python软链接,请运行以下命令添加软链接:
```
# cd /usr/bin/
# which python3
# ln -s /usr/local/bin/python3 python
# python --version
```
例:
![](figures/solution-add-soft-link.png)
### 编译构建过程中,提示找不到“python3”<a name="section1917950148"></a>
- **现象描述**
![](figures/11.png)
- **可能原因**
没有装python3。
- **解决办法**
请按照[安装python](../quick-start/quickstart-lite-env-setup-linux.md)。
# 烧录常见问题<a name="ZH-CN_TOPIC_0000001170009518"></a>
- [轻量和小型系统](#section278314413530)
- [烧写选择串口后提示失败](#section18988185615914)
- [烧写失败](#section1370982513317)
- [串口无回显](#section183421944953)
- [Windows电脑与单板网络连接失败](#section1215410450215)
## 轻量和小型系统<a name="section278314413530"></a>
### 烧写选择串口后提示失败<a name="section18988185615914"></a>
- **现象描述**
点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。
![](figures/Failed-to-open-the-serial-port.png)
- **可能原因**
串口已经被占用。
- **解决办法**
1. 按图依次选择下拉框,查找带有serial-xx的终端
![](figures/hi3516-checking-whether-the-serial-port-is-used.png)
2. 点击标号中的垃圾桶图标,关闭串口。
![](figures/hi3516-disabling-the-terminal-using-the-serial-port.png)
3. 重新点击烧写,选择串口并开始烧写程序
![](figures/hi3516-restarting-burning.png)
### 烧写失败<a name="section1370982513317"></a>
- **现象描述**
点击烧写并选择串口后,出现无法烧写的情况。
- **可能原因**
安装IDE插件DevEco后未重启。
- **解决方法**
重启IDE。
### 串口无回显<a name="section183421944953"></a>
- **现象描述**
串口显示已连接,重启单板后,回车无任何回显。
- **可能原因1**
串口连接错误。
- **解决办法**
修改串口号。
请查看设备管理器,确认连接单板的串口与终端中连接串口是否一致,若不一致,请按镜像运行修改串口号。
- **可能原因2**
单板U-boot被损坏。
- **解决办法**
烧写U-boot。
若上述步骤依旧无法连接串口,可能由于单板U-boot损坏,按下述步骤烧写U-boot。
1. 获取引导文件U-boot。
>![](../public_sys-resources/icon-notice.gif) **须知:**
>单板的U-boot文件请在开源包中获取:
>Hi3516DV300:device\\hisilicon\\hispark\_taurus\\sdk\_liteos\\uboot\\out\\boot\\u-boot-hi3516dv300.bin
>Hi3518EV300:device\\hisilicon\\hispark\_aries\\sdk\_liteos\\uboot\\out\\boot\\u-boot-hi3518ev300.bin
2. 根据USB烧写步骤烧写U-boot文件。
按照[Hi3516系列USB烧写步骤](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_upload-0000001052148681)/[Hi3518系列USB烧写步骤](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3518_upload-0000001057313128)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。
3. 烧写完成后,登录串口如下图所示。
**图 1** U-boot烧写完成串口显示图<a name="zh-cn_topic_0000001128470856_zh-cn_topic_0000001053466255_fig155914681910"></a>
![](figures/U-boot烧写完成串口显示图.png "U-boot烧写完成串口显示图")
### Windows电脑与单板网络连接失败<a name="section1215410450215"></a>
- **现象描述**
点击烧写并选择串口后,无法获取文件。
**图 2** 网络不通,Hi3516单板无法获取文件<a name="zh-cn_topic_0000001128470856_fig135261439195819"></a>
![](figures/网络不通-Hi3516单板无法获取文件.png "网络不通-Hi3516单板无法获取文件")
- **可能原因**
单板网络与Windows电脑不联通。
Windows电脑防火墙未允许Visual Studio Code联网。
- **解决方法**
1. 检查网线是否连接。
2. 点击Windows防火墙。
![](figures/hi3516-network-and-firewall-setting.png)
3. 点击“允许应用通过防火墙”。
![](figures/hi3516-firewall-and-network-protection.png)
4. 查找Visual Studio Code应用。
![](figures/hi3516-selecting-the-visual-studio-code-application.png)
5. 勾选Visual Studio Code的专用和公用网络的访问权限。
![](figures/hi3516-allowing-the-visual-studio-code-application-to-access-the-network.png)
# 环境搭建常见问题<a name="ZH-CN_TOPIC_0000001215650793"></a>
- [轻量和小型系统](#section1742119306399)
- [安装hb过程中,出现乱码、段错误](#section36351051193919)
- [安装hb过程中,提示"cannot import 'sysconfig' from 'distutils'"](#section48221013144011)
- [安装hb过程中,提示"module 'platform' has no attribute 'linux\_distribution'"](#section10307193044111)
- [安装hb过程中,提示"Could not find a version that satisfies the requirement ohos-build"](#section8692735427)
- [安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”](#section870082884217)
- [安装python3过程中,提示“-bash: make: command not found”](#section198707170455)
- [安装python3过程中,提示“zlib not available”](#section85401445204518)
- [安装python3过程中,提示“No module named '\_ctypes'”](#section12202694460)
- [安装 kconfiglib时,遇到lsb\_release错误](#section5803174135115)
- [Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt\_pkg”](#section510820516515)
## 轻量和小型系统<a name="section1742119306399"></a>
### 安装hb过程中,出现乱码、段错误<a name="section36351051193919"></a>
- **现象描述**
执行“python3 -m pip install --user ohos-build”出现乱码、段错误(segmentation fault)。
- **可能原因**
pip版本过低。
- **解决办法**
执行如下命令升级pip。
```
python3 -m pip install -U pip
```
### 安装hb过程中,提示"cannot import 'sysconfig' from 'distutils'"<a name="section48221013144011"></a>
- **现象描述**
执行“python3 -m pip install --user ohos-build”提示"cannot import 'sysconfig' from 'distutils'"。
- **可能原因**
缺少distutils模块。
- **解决办法**
执行如下命令安装。
```
sudo apt-get install python3.8-distutils
```
### 安装hb过程中,提示"module 'platform' has no attribute 'linux\_distribution'"<a name="section10307193044111"></a>
- **现象描述**
执行“python3 -m pip install --user ohos-build”提示"module 'platform' has no attribute 'linux\_distribution'"。
- **可能原因**
python3 pip安装兼容性问题。
- **解决办法**
执行如下命令重新安装pip。
```
sudo apt remove python3-pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
```
### 安装hb过程中,提示"Could not find a version that satisfies the requirement ohos-build"<a name="section8692735427"></a>
- **现象描述**
执行“python3 -m pip install --user ohos-build”提示"Could not find a version that satisfies the requirement ohos-build"
- **可能原因**
可能是网络环境较差导致的安装失败。
- **解决办法**
1. 请检查网络连接是否正常。如果网络有问题,请修复网络问题后重新安装。
2. 若网络正常,请尝试指定临时pypi源的方式安装:
```
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ohos-build
```
### 安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”<a name="section870082884217"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
configure: error: no acceptable C compiler found in $PATH. See 'config.log' for more details
```
- **可能原因**
环境中未安装“gcc”。
- **解决办法**
1、通过命令“apt-get install gcc”在线安装。
2、完成后,重新安装python3。
### 安装python3过程中,提示“-bash: make: command not found”<a name="section198707170455"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
-bash: make: command not found
```
- **可能原因**
环境中未安装“make”。
- **解决办法**
1、通过命令“apt-get install make”在线安装。
2、完成后,重新安装python3。
### 安装python3过程中,提示“zlib not available”<a name="section85401445204518"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
zipimport.ZipImportError: can't decompress data; zlib not available
```
- **可能原因**
环境中未安装“zlib”。
- **解决办法**
方法1:通过命令“apt-get install zlib”在线安装。
方法2:如果软件源中没有该软件,请从“www.zlib.net”下载版本代码,并离线安装。
![](figures/download-zlib.png)
完成下载后,通过以下命令安装:
```
# tar xvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11
# ./configure
# make && make install
```
完成后,重新安装python3。
### 安装python3过程中,提示“No module named '\_ctypes'”<a name="section12202694460"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
ModuleNotFoundError:No module named ‘_ctypes’
```
- **可能原因**
环境中未安装“libffi”和“libffi-devel”。
- **解决办法**
1、通过命令“apt-get install libffi\* -y”,在线安装。
2、完成后,重新安装python3。
### 安装 kconfiglib时,遇到lsb\_release错误<a name="section5803174135115"></a>
- **现象描述**
安装kconfiglib过程中遇到如下错误打印:
```
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
```
- **可能原因**
lsb\_release模块基于的python版本与现有python版本不一致
- **解决办法**
执行"find / -name lsb\_release",找到lsb\_release位置并删除,如:"sudo rm -rf /usr/bin/lsb\_release"
### Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt\_pkg”<a name="section510820516515"></a>
- **现象描述**
Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt\_pkg"
- **可能原因**
python3 apt安装兼容性问题。
- **解决办法**
执行如下命令重新安装python3-apt。
```
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
```
# 启动恢复常见问题<a name="ZH-CN_TOPIC_0000001215449321"></a>
- [系统启动过程中打印“parse failed!”错误后停止启动](#section835662214302)
- [系统启动过程未结束就自动重启,如此反复持续](#section3857921143117)
- [参数正确的情况下调用SetParameter/GetParameter返回失败](#section548818116328)
## 系统启动过程中打印“parse failed!”错误后停止启动<a name="section835662214302"></a>
**现象描述**
系统启动过程中,打印“\[Init\] InitReadCfg, parse failed! please check file /etc/init.cfg format.”错误,启动过程停止,如下图所示:
**图 1** 运行报错图<a name="zh-cn_topic_0000001063231870_fig15217111545118"></a>
![](figures/运行报错图.png "运行报错图")
**可能原因**
修改init.cfg文件时,漏掉或多加了逗号或括号等,导致init.cfg文件的json格式被破坏。
**解决办法**
仔细检查init.cfg文件,确保其格式符合json格式要求。
## 系统启动过程未结束就自动重启,如此反复持续<a name="section3857921143117"></a>
**现象描述**
镜像烧写完成后系统启动,启动过程未完成即自动重新启动,如此反复持续。
**可能原因**
被init启动的服务都有一个叫做“importance”的属性(详见[第2章表3](../nottoctopics/zh-cn_topic_0000001062722441.md#table14737791471)[第2章表3](../subsystems/subsys-boot-init.md)描述)。
- 当该属性为0时,表示若当前服务进程退出,init不需要重启单板。
- 当该属性为1时,表示若当前服务进程退出,init需要重启单板。
因此出现上述现象的可能原因:有“importance”属性为1的服务在每次启动的过程中都会退出(可能是进程崩溃或出错自动退出),导致init进程自动重启单板。
**解决办法**
1. 需要通过日志确认崩溃或报错退出的服务,并解决其崩溃/报错的问题,然后重新烧写镜像即可。
2. 也可以将崩溃/报错退出的服务的“importance”属性改为0,然后重新烧写镜像,这样即使其退出,init也不会重启单板。
## 参数正确的情况下调用SetParameter/GetParameter返回失败<a name="section548818116328"></a>
**现象描述**
在各参数正确的情况下调用SetParameter/GetParameter返回失败。
**可能原因**
程序对SetParameter/GetParameter这两个接口做了权限校验,在各参数正确的情况下调用SetParameter/GetParameter返回操作失败,很有可能是调用者的uid大于1000,没有调用权限。
**解决办法**
无需处理
# 内核常见问题<a name="ZH-CN_TOPIC_0000001169850498"></a>
- [基础内核](#section263912372168)
- [LiteOS-A和LiteOS-M内核对外API的差异](#section447571122918)
- [如何分析线程栈溢出](#section8623141711293)
- [文件系统](#section098519592162)
- [Hi3516开源板以写的模式打开同一个文件失败(LiteOS-A)](#section517972255311)
- [LiteOS内核已支持哪些硬件平台](#section868413518533)
- [LiteOS内核已支持哪几款芯片架构](#section1131661465417)
- [三方组件](#section971818231178)
- [OpenHarmony已支持哪些三方组件](#section74138185411)
- [在OpenHarmony上使用OpenSSL,出现秘钥长度校验不正确](#section10564614135516)
- [setsockopt是否支持SO\_RCVBUF和SO\_SNDBUF选项](#section2093373215556)
- [编译链接](#section10955302179)
- [Arm Linux开发的应用程序,OpenHarmony如何在LiteOS-A上运行](#section1164175713557)
- [OpenHarmony在什么系统下编译,使用什么编译器](#section132287223567)
- [LiteOS-M上使用单独编译成静态库的三方组件,出现三方组件中的全局变量值不正确,或调用三方组件的函数后系统卡死](#section15189154225619)
- [LiteOS-A生成目标可执行文件时,提示 use VFP register arguments,xxx.o does not](#section193571012578)
- [clock\_gettime接口获取的时间打印不对](#section8973152015717)
## 基础内核<a name="section263912372168"></a>
### LiteOS-A和LiteOS-M内核对外API的差异<a name="section447571122918"></a>
基础内核API存在差异,但是LiteOS-A提供标准POSIX接口,LiteOS-M提供标准POSIX和CMSIS接口。如果要支持跨平台,三方适配建议使用POSIX等标准接口。
### 如何分析线程栈溢出<a name="section8623141711293"></a>
**问题现象**
系统异常,提示CURRENT task xxx stack overflow!
**解决措施**
1. 创建xxx线程的时候成倍加大栈空间,多次尝试如果问题不复现,则说明任务栈不够,需要调整;
2. 如果成倍加大线程栈,问题依旧复现,则排查xxx线程中是否定义超大数组,或者流程是否存在递归调用;
3. 确认无前述问题,则需要排查是否存在踩内存的情况。
## 文件系统<a name="section098519592162"></a>
### Hi3516开源板以写的模式打开同一个文件失败(LiteOS-A)<a name="section517972255311"></a>
Hi3516开源板使用FAT文件系统,不允许该操作。
### LiteOS内核已支持哪些硬件平台<a name="section868413518533"></a>
开源版本LiteOS-A已支持Hi3516/Hi3518开发板;LiteOS-M已支持Hi3861开发板、STM32F103、野火挑战者STM32F429IGTb、Nucleo\_f767zi等,详细查看kernel/liteos\_m目录下的README\_zh.md文件。
### LiteOS内核已支持哪几款芯片架构<a name="section1131661465417"></a>
LiteOS-M已支持risc-v、Cortex-m3\\m4\\m7\\m33、arm9,待支持c-sky、xtensa;LiteOS-A已支持armv7-a,待支持armv8-a,请关注开源社区更新。
## 三方组件<a name="section971818231178"></a>
### OpenHarmony已支持哪些三方组件<a name="section74138185411"></a>
已提供mbedtls、lwip等开源组件和三方库,可以直接使用;另外提供标准的POSIX接口,可以自行适配。
### 在OpenHarmony上使用OpenSSL,出现秘钥长度校验不正确<a name="section10564614135516"></a>
OpenSSL编译选项中要注意架构类型(ARM,X86等)和系统位数(32、64位)是否选择正确。
### setsockopt是否支持SO\_RCVBUF和SO\_SNDBUF选项<a name="section2093373215556"></a>
不支持。
## 编译链接<a name="section10955302179"></a>
### Arm Linux开发的应用程序,OpenHarmony如何在LiteOS-A上运行<a name="section1164175713557"></a>
需要用开源版本提供的交叉编译器重新编译应用程序,才可以运行。
### OpenHarmony在什么系统下编译,使用什么编译器<a name="section132287223567"></a>
LiteOS-A在linux环境进行编译,使用LLVM编译器;LiteOS-M在Linux或Windows环境进行编译,使用IAR、Keil、GCC等编译工具。
### LiteOS-M上使用单独编译成静态库的三方组件,出现三方组件中的全局变量值不正确,或调用三方组件的函数后系统卡死<a name="section15189154225619"></a>
检查三方组件编译选项中是否有-fPIE -fpie -fPIC -fpic等地址无关编译选项,如果有,则去掉,重新编译成库使用。
### LiteOS-A生成目标可执行文件时,提示 use VFP register arguments,xxx.o does not<a name="section193571012578"></a>
请确认xxx.o编译时是否添加-mfloat-abi=xxx -mcpu=xxx -mfpu=xxx编译选项,若没有,则需要添加。
### clock\_gettime接口获取的时间打印不对<a name="section8973152015717"></a>
struct timespec结构中tv\_sec为time\_t,而time\_t为long long类型,打印控制符为%lld,请确认实际打印控制符是否正确。
# 常见问题概述<a name="ZH-CN_TOPIC_0000001169691604"></a>
- [环境搭建](#section93289248249)
- [轻量和小型系统](#section197234983111)
- [编译构建子系统](#section18826114693810)
- [轻量和小型系统](#section693410399)
- [烧录](#section6556741113712)
- [轻量和小型系统](#section1029933713812)
- [内核](#section13741125564211)
- [基础内核](#section1723365191114)
- [文件系统](#section14523145918136)
- [芯片适配](#section141541939159)
- [三方组件](#section4988163321816)
- [编译链接](#section080219574225)
- [移植](#section129331824154313)
- [启动恢复](#section83501764443)
- [系统服务](#section19567132114455)
- [公共基础库](#section3214181711465)
- [视觉应用常见问题](#section295651815466)
- [hdc](#section178081876506)
常见问题主要用于帮助开发者解决在开发过程中经常出现的一类问题问题。当前提供了如下常见问题供开发者进行查询。
## 环境搭建<a name="section93289248249"></a>
### 轻量和小型系统<a name="section197234983111"></a>
- [安装hb过程中出现乱码、段错误](faqs-environment-building.md#section36351051193919)
- [安装hb过程中,提示"cannot import 'sysconfig' from 'distutils'"](faqs-environment-building.md#section48221013144011)
- [安装hb过程中,提示"module 'platform' has no attribute 'linux\_distribution'"](faqs-environment-building.md#section8692735427)
- [安装hb过程中,提示"Could not find a version that satisfies the requirement ohos-build"](faqs-environment-building.md#section8692735427)
- [安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”](faqs-environment-building.md#section870082884217)
- [安装python3过程中,提示“-bash: make: command not found”](faqs-environment-building.md#section198707170455)
- [安装python3过程中,提示“zlib not available”](faqs-environment-building.md#section85401445204518)
- [安装python3过程中,提示“No module named '\_ctypes'”](faqs-environment-building.md#section12202694460)
- [安装 kconfiglib时,遇到lsb\_release错误](faqs-environment-building.md#section5803174135115)
- [Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt\_pkg”](faqs-environment-building.md#section510820516515)
## 编译构建子系统<a name="section18826114693810"></a>
### 轻量和小型系统<a name="section693410399"></a>
- [编译构建过程中,提示“usr/sbin/ninja: invalid option -- w”](faqs-building.md#section67961431372)
- [编译构建过程中,提示“/usr/bin/ld: cannot find -lncurses”](faqs-building.md#section199631617371)
- [编译构建过程中,提示“line 77: mcopy: command not found”](faqs-building.md#section937435175)
- [编译构建过程中,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”](faqs-building.md#section1115535018713)
- [编译构建过程中,提示“No module named 'Crypto'”](faqs-building.md#section17982573813)
- [编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”](faqs-building.md#section1917790845)
- [编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”](faqs-building.md#section1917790845)
- [编译构建过程中,提示找不到“-lgcc”](faqs-building.md#section141771701647)
- [编译构建过程中,提示找不到“python”](faqs-building.md#section51781202415)
- [编译构建过程中,提示找不到“python3”](faqs-building.md#section1917950148)
## 烧录<a name="section6556741113712"></a>
### 轻量和小型系统<a name="section1029933713812"></a>
- [烧写选择串口后提示失败](faqs-burning.md#section18988185615914)
- [烧写失败](faqs-burning.md#section1370982513317)
- [串口无回显](faqs-burning.md#section183421944953)
- [Windows电脑与单板网络连接失败](faqs-burning.md#section1215410450215)
## 内核<a name="section13741125564211"></a>
### 基础内核<a name="section1723365191114"></a>
- [LiteOS-A和LiteOS-M内核对外API的差异](faqs-kernel.md#section147031836183210)
- [如何分析线程栈溢出](faqs-kernel.md#section0683151131613)
### 文件系统<a name="section14523145918136"></a>
- [Hi3516开源板以写的模式打开同一个文件失败(LiteOS-A)](faqs-kernel.md#section517972255311)
### 芯片适配<a name="section141541939159"></a>
- [LiteOS内核已支持哪些硬件平台](faqs-kernel.md#section868413518533)
- [LiteOS内核已支持哪几款芯片架构](faqs-kernel.md#section1131661465417)
### 三方组件<a name="section4988163321816"></a>
- [HarmonyOS已支持哪些三方组件](faqs-kernel.md#section74138185411)[OpenHarmony已支持哪些三方组件](faqs-kernel.md#section74138185411)
- [在HarmonyOS上使用OpenSSL,出现秘钥长度校验不正确](faqs-kernel.md#section10564614135516)[在OpenHarmony上使用OpenSSL,出现秘钥长度校验不正确](faqs-kernel.md#section10564614135516)
- [setsockopt是否支持SO\_RCVBUF和SO\_SNDBUF选项](faqs-kernel.md#section2093373215556)
### 编译链接<a name="section080219574225"></a>
- [Arm Linux开发的应用程序,如何在LiteOS-A上运行](faqs-kernel.md#section1164175713557)
- [HarmonyOS在什么系统下编译,使用什么编译器](faqs-kernel.md#section132287223567)[OpenHarmony在什么系统下编译,使用什么编译器](faqs-kernel.md#section132287223567)
- [LiteOS-M上使用单独编译成静态库的三方组件,出现三方组件中的全局变量值不正确,或调用三方组件的函数后系统卡死](faqs-kernel.md#section15189154225619)
- [LiteOS-A生成目标可执行文件,提示 use VFP register arguments,xxx.o does not](faqs-kernel.md#section193571012578)
- [clock\_gettime接口获取的时间打印不对](faqs-kernel.md#section8973152015717)
## 移植<a name="section129331824154313"></a>
- [如何将用户的堆内存挂载进内核](faqs-transplant.md#section21471536184914)
## 启动恢复<a name="section83501764443"></a>
- [系统启动过程中打印“parse failed!”错误后停止启动](faqs-init.md#section835662214302)
- [系统启动过程未结束就自动重启,如此反复持续](faqs-init.md#section3857921143117)
- [参数正确的情况下调用SetParameter/GetParameter返回失败](faqs-init.md#section548818116328)
## 系统服务<a name="section19567132114455"></a>
### 公共基础库<a name="section3214181711465"></a>
- [LiteOS-A内核\(Hi3516、Hi3518平台\)KV存储路径设置错误,导致KV存储运行失败](faqs-system-using.md#section16520347131511)
### 视觉应用常见问题<a name="section295651815466"></a>
- [是否存在一个全局变量,所有的页面都可以访问?](faqs-system-using.md#section187297991718)
- [如何获取dom中的元素](faqs-system-using.md#section1833493719175)
- [如何在页面间传值?](faqs-system-using.md#section184283812183)
- [list如何滚动到某个item?](faqs-system-using.md#section11897734131811)
- [text支持多行吗?](faqs-system-using.md#section5872656121814)
- [为什么控件不显示?](faqs-system-using.md#section7397125317107)
- [如何实现页面滑动?](faqs-system-using.md#section338794422010)
- [Left、Top为什么不生效?](faqs-system-using.md#section2597193611217)
- [动态绑定为什么不生效?](faqs-system-using.md#section6939050172115)
- [如何实现相对定位和绝对定位?](faqs-system-using.md#section5547311192215)
- [如何控制控件的显示与隐藏?](faqs-system-using.md#section16107113352213)
- [使用Margin时,有什么注意事项?](faqs-system-using.md#section1524910142314)
- [使用事件订阅时,有什么注意事项?](faqs-system-using.md#section1537132012231)
- [使用动态绑定时,有什么注意事项?](faqs-system-using.md#section96561452236)
- [swiper loop属性如何生效?](faqs-system-using.md#section690166112414)
- [使用数组时,有什么注意事项?](faqs-system-using.md#section1554552822414)
### hdc<a name="section178081876506"></a>
- [hdc\_std连接不到设备](faqs-system-using.md#section1965012223257)
- [hdc\_std运行不了](faqs-system-using.md#section1157575212515)
# 系统应用常见问题<a name="ZH-CN_TOPIC_0000001169690992"></a>
- [公共基础库常见问题](#section639433461512)
- [1.LiteOS-A内核\(Hi3516、Hi3518平台\)KV存储路径设置错误,导致KV存储运行失败](#section16520347131511)
- [视觉应用常见问题](#section787718474161)
- [是否存在一个全局变量,所有的页面都可以访问?](#section187297991718)
- [如何获取dom中的元素](#section1833493719175)
- [如何在页面间传值?](#section184283812183)
- [list如何滚动到某个item?](#section11897734131811)
- [text支持多行吗?](#section5872656121814)
- [为什么控件不显示?](#section7397125317107)
- [如何实现页面滑动?](#section338794422010)
- [Left、Top为什么不生效?](#section2597193611217)
- [动态绑定为什么不生效?](#section6939050172115)
- [如何实现相对定位和绝对定位?](#section5547311192215)
- [如何控制控件的显示与隐藏?](#section16107113352213)
- [使用Margin时,有什么注意事项?](#section1524910142314)
- [使用事件订阅时,有什么注意事项?](#section1537132012231)
- [使用动态绑定时,有什么注意事项?](#section96561452236)
- [swiper loop属性如何生效?](#section690166112414)
- [使用数组时,有什么注意事项?](#section1554552822414)
- [hdc类问题](#section412357182518)
- [hdc\_std连接不到设备](#section1965012223257)
- [hdc\_std运行不了](#section1157575212515)
## 公共基础库常见问题<a name="section639433461512"></a>
### 1.LiteOS-A内核\(Hi3516、Hi3518平台\)KV存储路径设置错误,导致KV存储运行失败<a name="section16520347131511"></a>
**现象描述**
LiteOS-A内核\(Hi3516、Hi3518平台\)直接调用KV存储提供的接口,各参数正常的情况下,编译可执行程序运行失败。
**可能原因**
直接运行编译出的可执行文件,没有将程序基于AbilityKit转换成应用,不能由BMS在应用安装时正确设置应用数据存储路径,导致KV存储运行失败。
**解决办法**
显示调用KV存储的UtilsSetEnv接口,设置数据存储路径。
```
UtilsSetEnv("/storage/com.huawei.kv");
```
## 视觉应用常见问题<a name="section787718474161"></a>
### 是否存在一个全局变量,所有的页面都可以访问?<a name="section187297991718"></a>
当前框架中不存在所有Page都可以访问的全局变量。
### 如何获取dom中的元素<a name="section1833493719175"></a>
如何获取dom中的元素?
通过ref属性获取dom中的元素,详细示例如下图所示;获取的元素只能使用它的方法,不能改变属性。
```
<!--index.hml-->
<div class="container">
<!--指定组件的ref属性为animator-->
<image-animator class="image-player" ref="ainmator" images="{{images}}" duration="1s" onclick="handleClick"></image-animator>
</div>
/* index.js */
export default {
data: {
images:[
{src:"common/frame1.png"},
{src:"common/frame2.png"},
{src:"common/frame3.png"}
]
},
handleClick(){
//通过$refs属性获取对应的组件,在hml中,组件的ref属性要设置为animator
const animator = this.$refs.animator;
const state = animator.getState();
if(state == "paused"){
animator.resume();
}else if(state == "stopped"){
animator.start();
}else{
animator.pause();
}
}
}
```
### 如何在页面间传值?<a name="section184283812183"></a>
通过router.replace方法中的params参数来传递,参考代码如下:
第一个页面传递数据:
```
router.replace({
uri:'pages/detail/detail', //要跳转的页面uri
params:{transferData:this.data} //传递的数据,数据个数和名称开发者自己定义,
});
```
第二个界面接受数据:
```
onInit(){
const data = this.transferData; //在onInit函数中接受传递的数据
}
```
### list如何滚动到某个item?<a name="section11897734131811"></a>
通过list的scrollTo方法滚动到指定的item,参数是目标item的index。Index参数可以通过scrollend事件获取或者开发者指定。
### text支持多行吗?<a name="section5872656121814"></a>
text支持多行。通过回车键换行或者是不设置text的高度属性,由控件自动根据内容换行。
### 为什么控件不显示?<a name="section7397125317107"></a>
**现象描述**
开发者在hml文件中添加的控件无法显示
**可能原因**
- 未设置width和height值;
- 样式设置错误。
**处理步骤**
\(1\)检查是否设置width和height值,组件必须显式设置width和height值;
\(2\)检查组件的样式设置是否正确。
### 如何实现页面滑动?<a name="section338794422010"></a>
实现页面滑动目前有三种方式:scroll(根组件大小超过屏幕的大小即自动实现scroll效果)、list、swiper。开发者可以参考开发文档查看三者的区别,并加以使用。
### Left、Top为什么不生效?<a name="section2597193611217"></a>
除根节点外,Left、Top配合Stack组件使用才有效果。
### 动态绑定为什么不生效?<a name="section6939050172115"></a>
在进行绑定时,必须先将要绑定的对象或者对象的属性进行定义,不能先绑定后定义
### 如何实现相对定位和绝对定位?<a name="section5547311192215"></a>
使用div、stack(top left属性)来实现相对和绝对定位。
### 如何控制控件的显示与隐藏?<a name="section16107113352213"></a>
通过display、show和if来控制控件的显示与隐藏。区别在于:if为false时,组件会从VDOM中移除,而show仅是渲染时不可见,组件依然存在于VDOM中。
### 使用Margin时,有什么注意事项?<a name="section1524910142314"></a>
Stack组件不支持其子组件设置margin属性。
### 使用事件订阅时,有什么注意事项?<a name="section1537132012231"></a>
在应用运行期间只存在一个page,所以router.replace跳转是先销毁前一个页面,然后在新创建一个界面。因此,如果涉及到事件订阅的页面,每次页面创建时要进行事件订阅,跳转离开界面前取消事件订阅。
### 使用动态绑定时,有什么注意事项?<a name="section96561452236"></a>
过多的动态绑定会消耗较多的内存,若非业务需要,尽量不要使用太多的动态绑定。
### swiper loop属性如何生效?<a name="section690166112414"></a>
去掉第一个组件或者去掉最后一个组件,剩余的长度大于swiper长度,loop生效。
### 使用数组时,有什么注意事项?<a name="section1554552822414"></a>
数组元素不宜过多,尽量避免对大数组进行频繁操作。
## hdc类问题<a name="section412357182518"></a>
### hdc\_std连接不到设备<a name="section1965012223257"></a>
- **现象描述**
执行 "hdc\_std list targets"命令后结果为:\[Empty\]
- **解决方法**
1. 设备没有被识别:
在设备管理器中查看是否有hdc设备,在通用串行总线设备中会有“HDC Device”信息。如果没有,hdc无法连接。此时需要插拔设备,或者烧写最新的镜像。
2. hdc\_std工作异常:
可以执行"hdc kill"或者"hdc start -r"杀掉hdc服务或者重启hdc服务,然后再执行hdc list targets查看是否已经可以获取设备信息。
3. hdc\_std与设备不匹配:
如果设备烧写的是最新镜像,hdc\_std也需要使用最新版本。由于hdc\_std会持续更新,请从开源仓developtools\_hdc\_standard中获取,具体位置在该开源仓的prebuilt目录。
### hdc\_std运行不了<a name="section1157575212515"></a>
- **现象描述**
点击hdc\_std.exe文件无法运行。
- **解决方法**
hdc\_std.exe不需要安装,直接放到磁盘上就能使用,也可以添加到环境变量中。通过打开cmd执行hdc\_std命令直接使用。
# 移植常见问题<a name="ZH-CN_TOPIC_0000001215769367"></a>
- [如何将用户的堆内存挂载进内核](#section21471536184914)
## 如何将用户的堆内存挂载进内核<a name="section21471536184914"></a>
- 内核堆内存配置的相关宏如下,用户可根据实际情况,在target\_config.h中配置:
**表 1** 内核堆内存配置相关宏
<a name="zh-cn_topic_0000001153683024_table04172020563"></a>
<table><thead align="left"><tr id="zh-cn_topic_0000001153683024_row5462035616"><th class="cellrowborder" valign="top" width="39.12%" id="mcps1.2.3.1.1"><p id="zh-cn_topic_0000001153683024_p1456204569"><a name="zh-cn_topic_0000001153683024_p1456204569"></a><a name="zh-cn_topic_0000001153683024_p1456204569"></a>宏名称</p>
</th>
<th class="cellrowborder" valign="top" width="60.88%" id="mcps1.2.3.1.2"><p id="zh-cn_topic_0000001153683024_p19502005618"><a name="zh-cn_topic_0000001153683024_p19502005618"></a><a name="zh-cn_topic_0000001153683024_p19502005618"></a>描述</p>
</th>
</tr>
</thead>
<tbody><tr id="zh-cn_topic_0000001153683024_row14522018560"><td class="cellrowborder" valign="top" width="39.12%" headers="mcps1.2.3.1.1 "><p id="zh-cn_topic_0000001153683024_p35112025620"><a name="zh-cn_topic_0000001153683024_p35112025620"></a><a name="zh-cn_topic_0000001153683024_p35112025620"></a>LOSCFG_SYS_EXTERNAL_HEAP</p>
</td>
<td class="cellrowborder" valign="top" width="60.88%" headers="mcps1.2.3.1.2 "><p id="zh-cn_topic_0000001153683024_p5127138175710"><a name="zh-cn_topic_0000001153683024_p5127138175710"></a><a name="zh-cn_topic_0000001153683024_p5127138175710"></a>这个宏决定系统是使用内核的内部堆内存还是用户的堆内存,默认为0(即使用内部的堆内存),大小为0x10000;如果用户需要基于外部的堆内存,那么可以将该宏设置为1。</p>
</td>
</tr>
<tr id="zh-cn_topic_0000001153683024_row20514209567"><td class="cellrowborder" valign="top" width="39.12%" headers="mcps1.2.3.1.1 "><p id="zh-cn_topic_0000001153683024_p5532017563"><a name="zh-cn_topic_0000001153683024_p5532017563"></a><a name="zh-cn_topic_0000001153683024_p5532017563"></a>LOSCFG_SYS_HEAP_ADDR</p>
</td>
<td class="cellrowborder" valign="top" width="60.88%" headers="mcps1.2.3.1.2 "><p id="zh-cn_topic_0000001153683024_p65520125619"><a name="zh-cn_topic_0000001153683024_p65520125619"></a><a name="zh-cn_topic_0000001153683024_p65520125619"></a>内核堆内存的起始地址。</p>
</td>
</tr>
<tr id="zh-cn_topic_0000001153683024_row15302929115615"><td class="cellrowborder" valign="top" width="39.12%" headers="mcps1.2.3.1.1 "><p id="zh-cn_topic_0000001153683024_p113021529145612"><a name="zh-cn_topic_0000001153683024_p113021529145612"></a><a name="zh-cn_topic_0000001153683024_p113021529145612"></a>LOSCFG_SYS_HEAP_SIZE</p>
</td>
<td class="cellrowborder" valign="top" width="60.88%" headers="mcps1.2.3.1.2 "><p id="zh-cn_topic_0000001153683024_p1030252965619"><a name="zh-cn_topic_0000001153683024_p1030252965619"></a><a name="zh-cn_topic_0000001153683024_p1030252965619"></a>内核堆内存的大小,即LOSCFG_SYS_HEAP_ADDR指定的内存块大小。</p>
</td>
</tr>
</tbody>
</table>
- 注意事项:
指定的堆内存范围务必保证没有其他模块使用,避免踩内存,破坏堆内存功能。
# FAQs
- [常见问题概述](faqs-overview.md)
- [环境搭建常见问题](faqs-environment-building.md)
- [编译构建子系统常见问题](faqs-building.md)
- [烧录常见问题](faqs-burning.md)
- [内核常见问题](faqs-kernel.md)
- [移植常见问题](faqs-transplant.md)
- [启动恢复常见问题](faqs-init.md)
- [系统应用常见问题](faqs-system-using.md)
......@@ -49,6 +49,9 @@
- [开发指导](subsys-application-framework-guide.md)
- [开发实例](subsys-application-framework-demo.md)
- [OTA升级](subsys-ota-guide.md)
- [电话服务](subsys-tel.md)
- [电话服务概述](subsys-tel-overview.md)
- [电话服务开发指导](subsys-tel-guide.md)
- [安全](subsys-security.md)
- [概述](subsys-security-overview.md)
- [应用验签开发指导](subsys-security-sigverify.md)
......
......@@ -18,12 +18,12 @@
- [新增产品解决方案](#section1097623294220)
- [常见问题](#section19909721104319)
- [ninja版本问题导致编译失败](#section138233464318)
- [ncurses库缺失导致编译失败](#section151033911442)
- [未安装mcopy导致编译失败](#section19811838104418)
- [权限问题导致编译失败](#section03111118451)
- [未安装Crypto导致编译失败](#section69981127125013)
- [编译环境为shell导致编译失败](#section967617530505)
- [编译构建过程中,提示“usr/sbin/ninja: invalid option -- w”](#section138233464318)
- [编译构建过程中,提示“/usr/bin/ld: cannot find -lncurses”](#section151033911442)
- [编译构建过程中,提示“line 77: mcopy: command not found”](#section19811838104418)
- [编译构建过程中,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”](#section03111118451)
- [编译构建过程中,提示“No module named 'Crypto'”](#section69981127125013)
- [编译构建过程中,提示“xx.sh : xx unexpected operator”](#section967617530505)
## 概述<a name="section10958256161119"></a>
......@@ -37,7 +37,7 @@
### 基本概念<a name="section1732301411128"></a>
在使用编译构建子系统前,应了解如下基本概念:
在使用编译构建子系统前,应了解如下基本概念:s
- 子系统
......@@ -66,7 +66,7 @@
```
build/lite
├── components # 组件描述文件
├── figures # readme中的图片
├── figure # readme中的图片
├── hb # hb pip安装包源码
├── make_rootfs # 文件系统镜像制作脚本
├── config # 编译配置项
......@@ -97,7 +97,7 @@ build/lite
为了实现芯片解决方案、产品解决方案与OpenHarmony是解耦的、可插拔的,组件、芯片解决方案和产品解决方案的路径、目录树和配置需遵循一定的规则,具体如下:
### **组件**<a name="section142532518308"></a>
### 组件<a name="section142532518308"></a>
组件源码路径命名规则为:**\{领域\}/\{子系统\}/\{组件\}**,组件目录树规则如下:
......@@ -206,7 +206,7 @@ component
}
```
### **芯片解决方案**<a name="section121501451143710"></a>
### 芯片解决方案<a name="section121501451143710"></a>
- 芯片解决方案是指基于某款开发板的完整解决方案,包含驱动、设备侧接口适配、开发板sdk等。
- 芯片解决方案是一个特殊的组件,源码路径规则为:**device/\{芯片解决方案厂商\}/\{开发板\}**
......@@ -244,7 +244,7 @@ board_cxx_flags: 开发板配置的cpp文件编译选项。
board_ld_flags: 开发板配置的链接选项。
```
### **产品解决方案**<a name="section134549283435"></a>
### 产品解决方案<a name="section134549283435"></a>
产品解决方案为基于开发板的完整产品,主要包含产品对OS的适配、组件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:**vendor/\{产品解决方案厂商\}/\{产品名称\}**_。_产品解决方案也是一个特殊的组件。
......@@ -880,7 +880,7 @@ optional arguments:
## 常见问题<a name="section19909721104319"></a>
### ninja版本问题导致编译失败<a name="section138233464318"></a>
### 编译构建过程中,提示“usr/sbin/ninja: invalid option -- w”<a name="section138233464318"></a>
- **现象描述:**
......@@ -892,10 +892,10 @@ optional arguments:
- **解决办法:**
卸载环境中ninja和gn,按照HarmonyOS官网[获取工具](../get-code/gettools-ide.md)。
卸载环境中ninja和gn,按照[获取工具](../get-code/gettools-ide.md)。
### ncurses库缺失导致编译失败<a name="section151033911442"></a>
### 编译构建过程中,提示“/usr/bin/ld: cannot find -lncurses”<a name="section151033911442"></a>
- **现象描述:**
......@@ -912,7 +912,7 @@ optional arguments:
```
### 未安装mcopy导致编译失败<a name="section19811838104418"></a>
### 编译构建过程中,提示“line 77: mcopy: command not found”<a name="section19811838104418"></a>
- **现象描述:**
......@@ -929,7 +929,7 @@ optional arguments:
```
### 权限问题导致编译失败<a name="section03111118451"></a>
### 编译构建过程中,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”<a name="section03111118451"></a>
- **现象描述:**
......@@ -950,7 +950,7 @@ optional arguments:
使用chmod命令修改目录权限为755。
### 未安装Crypto导致编译失败<a name="section69981127125013"></a>
### 编译构建过程中,提示“No module named 'Crypto'”<a name="section69981127125013"></a>
- **现象描述:**
......@@ -975,7 +975,7 @@ optional arguments:
### 编译环境为shell导致编译失败<a name="section967617530505"></a>
### 编译构建过程中,提示“xx.sh : xx unexpected operator”<a name="section967617530505"></a>
- **现象描述:**
......
此差异已折叠。
# 电话服务概述<a name="ZH-CN_TOPIC_0000001164469232"></a>
- [概述](#section184mcpsimp)
- [基本概念](#section187mcpsimp)
- [运作机制](#section194mcpsimp)
- [约束与限制](#section205mcpsimp)
## 概述<a name="section184mcpsimp"></a>
本指南简要介绍了Modem厂商库的集成、初始化、业务请求响应和事件上报的方法,并通过通话业务的具体开发实例呈现厂商库的适配开发过程,供不同Modem芯片的开发者参考,从而帮助其高效地实现电话相关业务功能的开发。
## 基本概念<a name="section187mcpsimp"></a>
- Telephony Service:电话服务子系统核心服务层。主要功能是初始化RIL管理类、SIM卡和搜网模块;获取RIL Adapter服务,通过注册回调服务,实现与RIL Adapter的通信功能;通过发布订阅,来实现与通话、短信等功能模块之间的通信。
- RIL Adapter:电话服务子系统RIL适配层。该层主要包括厂商库加载,业务接口实现。用于屏蔽不同Modem厂商的硬件差异,为上层提供统一的接口,通过注册HDF服务与上层接口通信。
- HDF:硬件驱动框架(Hardware Driver Foundation)。用于提供统一外设访问能力和驱动开发、管理框架。
- hdc\_std:OpenHarmony设备连接器(OpenHarmony Device Connector)。是OpenHarmony为开发人员提供的用于设备连接调试的命令行工具。
## 运作机制<a name="section194mcpsimp"></a>
**图 1** RIL Adapter模块架构图<a name="fig196mcpsimp"></a>
![](figure/ril-adapter模块架构图.png)
RIL Adapter模块架构如图1所示,内部主要分为hril\_hdf、hril和vendorlib三层。
- hril\_hdf:RIL Adapter的唯一入口,主要负责Modem厂商库的加载。其中,modem\_adapter实现了单一固件对不同Modem的适配。
其实现机制为:在加载Modem厂商库之前,从kernel获取Modem的设备型号,根据此型号加载对应的Modem厂商库。
- hril:OpenHarmony无线接口层(OpenHarmony Radio Interface Layer)。与Telephony Service交互的接口实现部分,实现了Telephony Service和vendorlib通信的功能,包括SIM卡、搜网、蜂窝数据、蜂窝通话和短彩信等。
- vendorlib:Modem厂商库文件。不同的Modem厂商根据RIL Adapter提供的标准化接口或ID,进行Modem厂商库的开发(vendorlib由Modem厂商提供)。
hril\_hdf执行后,将动态加载vendorlib,vendorlib可以从hril\_hdf中获取处理响应和上报的函数指针,该过程结束后,hril\_hdf才可通过vendorlib与Modem通信。
## 约束与限制<a name="section205mcpsimp"></a>
**规格限制:**
需要设备厂商至少支持一个Modem,如果不支持任何Modem,无需实现厂商库接口。
# 电话服务<a name="ZH-CN_TOPIC_0000001111321920"></a>
- **[电话服务概述](subsys-tel-overview.md)**
- **[电话服务开发指导](subsys-tel-guide.md)**
# 子系统<a name="ZH-CN_TOPIC_0000001135844124"></a>
- **[编译构建](subsys-build.md)**
- **[分布式远程启动](subsys-remote-start.md)**
- **[图形图像](subsys-graphics.md)**
- **[媒体](subsys-multimedia.md)**
- **[公共基础](subsys-utils.md)**
- **[AI框架](subsys-aiframework.md)**
- **[Sensor服务](subsys-sensor.md)**
- **[用户程序框架](subsys-application-framework.md)**
- **[OTA升级](subsys-ota-guide.md)**
- **[电话服务](subsys-tel.md)**
- **[安全](subsys-security.md)**
- **[启动恢复](subsys-boot.md)**
- **[测试用例开发指导](subsys-testguide-test.md)**
- **[DFX](subsys-dfx.md)**
- **[研发工具链](subsys-toolchain.md)**
- **[XTS认证用例开发指导](subsys-xts-guide.md)**
......@@ -4,9 +4,9 @@
## **文档目录结构**<a name="section1976124516374"></a>
- [Openharmony概述](OpenHarmony-Overview_zh.md)
- 轻量和小型系统开发指导(参考内存<128MB)
- 设备开发
- [Openharmony概述](OpenHarmony-Overview_zh.md)
- 设备开发
- 轻量和小型系统开发指导(参考内存<128MB)
- overview:[设备开发导读](device-dev/Readme-CN.md)
- quick-start:[快速入门](device-dev/quick-start/Readme-CN.md)(搭建环境、获取源码、编译、烧录等)
- Basic Capability:开发基础能力
......@@ -31,8 +31,7 @@
- [HPM Bundle开发指南](device-dev/bundles/bundles-guide.md)
- [HPM Bundle开发示例](device-dev/bundles/bundles-demo.md)
- 标准系统开发指导(参考内存≥128MB)
- 设备开发
- 标准系统开发指导(参考内存≥128MB)
- overview:[设备开发导读](device-dev/Readme-CN.md)
- quick-start:[快速入门](device-dev/quick-start/quickstart-standard.md)(搭建环境、获取源码、编译、烧录等)
- Basic Capability:开发基础能力
......@@ -54,6 +53,7 @@
- [HPM Bundle开发规范](device-dev/bundles/oem_bundle_standard_des.md)
- [HPM Bundle开发指南](device-dev/bundles/bundles-guide.md)
- [HPM Bundle开发示例](device-dev/bundles/bundles-demo.md)
- [常见问题](device-dev/FAQs/Readme.md)
- 应用开发
......@@ -63,7 +63,6 @@
- media:[媒体](application-dev/media/Readme-CN.md)
- connectivity:[网络与连接](application-dev/connectivity/Readme-CN.md)
- js-reference:[JS参考规范](application-dev/js-reference/Readme-CN.md)
- 许可证及版权信息检查工具:[开源合规审查工具](https://gitee.com/openharmony-sig/tools_oat)
- glossary:[术语](device-dev/glossary/glossary.md)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册