未验证 提交 935fd060 编写于 作者: O openharmony_ci 提交者: Gitee

!2939 更新快速入门【需要翻译】

Merge pull request !2939 from duangavin123/OpenHarmony-3.1-Release
# 快速入门 # 快速入门
- 轻量和小型系统快速入门
- [轻量和小型系统入门](quickstart-lite.md) - [轻量与小型系统入门概述](quickstart-ide-lite-overview.md)
- [轻量与小型系统入门概述](quickstart-lite-overview.md) - 准备轻量与小型系统环境
- [搭建轻量与小型系统环境](quickstart-lite-env-setup.md) - [搭建Windows+Ubuntu混合开发环境](quickstart-ide-lite-env-setup-win-ubuntu.md)
- [搭建系统环境概述](quickstart-lite-env-setup-overview.md) - [获取源码](quickstart-ide-lite-sourcecode-acquire.md)
- [开发环境准备](quickstart-lite-env-prepare.md) - [创建源码工程](quickstart-ide-lite-create-project.md)
- [获取源码](quickstart-lite-sourcecode-acquire.md) - 运行“Hello World”
- [使用安装包方式搭建编译环境](quickstart-lite-package-environment.md) - Hi3861开发板
- [使用Docker方式搭建编译环境](quickstart-lite-docker-environment.md) - [编写“Hello World”程序](quickstart-ide-lite-steps-hi3861-application-framework.md)
- [常见问题](quickstart-lite-env-setup-faqs.md) - [编译](quickstart-ide-lite-steps-hi3861-building.md)
- [烧录](quickstart-ide-lite-steps-hi3861-burn.md)
- [运行“Hello World”](quickstart-lite-steps.md) - [联网](quickstart-ide-lite-steps-hi3861-netconfig.md)
- [Hi3861开发板](quickstart-lite-steps-hi3861.md) - [调试验证](quickstart-ide-lite-steps-hi3861-debug.md)
- [安装开发板环境](quickstart-lite-steps-hi3861-setting.md) - [运行](quickstart-ide-lite-steps-hi3816-running.md)
- [新建应用程序](quickstart-lite-steps-hi3861-application-framework.md) - Hi3516开发板
- [编译](quickstart-lite-steps-hi3861-building.md) - [编写“Hello World”程序](quickstart-ide-lite-steps-hi3516-application-framework.md)
- [烧录](quickstart-lite-steps-hi3861-burn.md) - [编译](quickstart-ide-lite-steps-hi3516-building.md)
- [调试验证](quickstart-lite-steps-hi3861-debug.md) - [烧录](quickstart-ide-lite-steps-hi3516-burn.md)
- [运行](quickstart-lite-steps-hi3861-running.md) - [运行](quickstart-ide-lite-steps-hi3516-running.md)
- [常见问题](quickstart-lite-steps-hi3861-faqs.md) - 附录
- 开发板介绍
- [Hi3516开发板](quickstart-lite-steps-hi3516.md) - [Hi3861开发板介绍](quickstart-ide-lite-introduction-hi3861.md)
- [安装开发板环境](quickstart-lite-steps-hi3516-setting.md) - [Hi3516开发板介绍](quickstart-ide-lite-introduction-hi3516.md)
- [新建应用程序](quickstart-lite-steps-hi3516-application-framework.md) - 标准系统快速入门
- [编译](quickstart-lite-steps-hi3516-building.md) - [标准系统入门概述](quickstart-ide-standard-overview.md)
- [烧录](quickstart-lite-steps-hi3516-burn.md) - 准备标准系统环境
- [运行](quickstart-lite-steps-hi3516-running.md) - [搭建Windows+Ubuntu混合开发环境](quickstart-ide-standard-env-setup-win-ubuntu.md)
- [常见问题](quickstart-lite-steps-hi3516-faqs.md) - [获取源码](quickstart-ide-standard-sourcecode-acquire.md)
- [创建源码工程](quickstart-ide-standard-create-project.md)
- [Hi3518开发板](quickstart-lite-steps-hi3518.md) - 运行“Hello World”
- [安装开发板环境](quickstart-lite-steps-hi3518-setting.md) - Hi3516开发板
- [新建应用程序](quickstart-lite-steps-hi3518-application-framework.md) - [编写“Hello World”程序](quickstart-ide-standard-running-hi3516-create.md)
- [编译](quickstart-lite-steps-hi3518-building.md) - [编译](quickstart-ide-standard-running-hi3516-build.md)
- [烧录](quickstart-lite-steps-hi3518-burn.md) - [烧录](quickstart-ide-standard-running-hi3516-burning.md)
- [运行](quickstart-lite-steps-hi3518-running.md) - [运行](quickstart-ide-standard-running-hi3516-running.md)
- [常见问题](quickstart-lite-steps-hi3518-faqs.md) - RK3568开发板
- [编写“Hello World”程序](quickstart-ide-standard-running-rk3568-create.md)
- [附录](quickstart-lite-introduction.md) - [编译](quickstart-ide-standard-running-rk3568-build.md)
- [Hi3861开发板介绍](quickstart-lite-introduction-hi3861.md) - [烧录](quickstart-ide-standard-running-rk3568-burning.md)
- [Hi3516开发板介绍](quickstart-lite-introduction-hi3516.md) - [运行](quickstart-ide-standard-running-rk3568-running.md)
- [Hi3518开发板介绍](quickstart-lite-introduction-hi3518.md) - 附录
- 快速入门(安装包方式)
- [标准系统入门](quickstart-standard.md) - [轻量和小型系统快速入门(安装包方式)](quickstart-docker-lite.md)
- [标准系统入门简介](quickstart-standard-overview.md) - [标准系统快速入门(安装包方式)](quickstart-standard-docker.md)
- [标准系统开发环境准备(仅Hi3516需要)](quickstart-standard-env-setup.md) - 开发板介绍
- [获取源码](quickstart-standard-sourcecode-acquire.md) - [Hi3516开发板介绍](quickstart-ide-standard-board-introduction-hi3516.md)
- [运行“Hello World”](quickstart-standard-running.md) - [RK3568开发板介绍](quickstart-ide-standard-board-introduction-rk3568.md)
- [Hi3516开发板](quickstart-standard-running-hi3516.md)
- [创建应用程序](quickstart-standard-running-hi3516-create.md)
- [编译](quickstart-standard-running-hi3516-build.md)
- [烧录](quickstart-standard-running-hi3516-burn.md)
- [运行](quickstart-standard-running-hi3516-run.md)
- [RK3568开发板](quickstart-standard-running-rk3568.md)
- [创建应用程序](quickstart-standard-running-rk3568-create.md)
- [编译](quickstart-standard-running-rk3568-build.md)
- [烧录](quickstart-standard-running-rk3568-burn.md)
- [运行](quickstart-standard-running-rk3568-run.md)
- [常见问题](quickstart-standard-faqs.md)
- [附录](quickstart-standard-appendix.md)
- [Hi3516开发板介绍](quickstart-standard-appendix-hi3516.md)
- [RK3568开发板介绍](quickstart-standard-appendix-rk3568.md)
\ No newline at end of file
# 轻量和小型系统快速入门-安装包
- **[轻量与小型系统入门概述](quickstart-lite-overview.md)**
- **[搭建轻量与小型系统环境](quickstart-lite-env-setup.md)**
- **[运行“Hello World”](quickstart-lite-steps.md)**
- **[常见问题](quickstart-lite-env-setup-faqs.md)**
- **[附录](quickstart-lite-appendix.md)**
\ No newline at end of file
# 附录
- **[开发板介绍](quickstart-ide-lite-board-introduction.md)**
\ No newline at end of file
# 开发板介绍
- **[Hi3861开发板介绍](quickstart-ide-lite-introduction-hi3861.md)**
- **[Hi3516开发板介绍](quickstart-ide-lite-introduction-hi3516.md)**
\ No newline at end of file
# 创建源码工程
在完成[搭建Windows+Ubuntu混合开发环境](../quick-start/quickstart-ide-lite-env-setup-win-ubuntu.md)[获取源码](../quick-start/quickstart-ide-lite-sourcecode-acquire.md)后,您需要在Windows环境中按照如下步骤创建源码工程。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001171426014](figures/zh-cn_image_0000001171426014.png)
2. 选择要导入的源码目录,点击**Import**打开。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 如果您打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击**Import**
![zh-cn_image_0000001135394334](figures/zh-cn_image_0000001135394334.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。下图以导入wifiiot_hispark_pegasus为例进行说明。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> Hi3861开发板Product选择“wifiiot_hispark_pegasus”。
>
> Hi3516DV300开发板Product选择“ipcamera_hispark_taurus”。
![zh-cn_image_0000001271237241](figures/zh-cn_image_0000001271237241.png)
6. 点击**Open**打开工程或源码。
# 搭建Windows+Ubuntu混合开发环境
通常在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,需要使用Ubuntu的编译环境对源码进行编译。
在以上的设备开发场景中,可以搭建一套Windows+Ubuntu混合开发的环境,其中使用Windows平台的DevEco Device Tool可视化界面进行相关操作,通过远程连接的方式对接Ubuntu下的DevEco Device Tool(可以不安装Visual Studio Code),然后对Ubuntu下的源码进行开发、编译、烧录等操作。
## 系统要求
- Windows系统要求:Windows10 64位系统。
- Ubuntu系统要求:Ubuntu20.04及以上版本,内存推荐16 GB及以上。
- Windows系统和Ubuntu系统的用户名不能包含中文字符。
- Windows和Ubuntu系统上安装的DevEco Device Tool为3.0 Release版本。
## 搭建Ubuntu环境
在Windows+Ubuntu混合开发环境场景中,在Ubuntu系统上可以不用安装Visual Studio Code,这种情况下,Ubuntu环境中就没有DevEco Device Tool的可视化操作界面。如果需要使用到Ubuntu下的DevEco Device Tool可视化操作界面,环境搭建请参考[搭建Ubuntu开发环境](https://device.harmonyos.com/cn/docs/documentation/guide/ide-install-ubuntu-0000001072959308)
1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
```
ls -l /bin/sh
```
![zh-cn_image_0000001226764302](figures/zh-cn_image_0000001226764302.png)
2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。
```
sudo dpkg-reconfigure dash
```
![zh-cn_image_0000001243641075](figures/zh-cn_image_0000001243641075.png)
2. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Linux版本。
3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。
1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.400.zip为软件包名称,请根据实际进行修改。
```
unzip devicetool-linux-tool-3.0.0.400.zip
```
2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
```
chmod u+x devicetool-linux-tool-3.0.0.400.sh
```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
```
sudo ./devicetool-linux-tool-3.0.0.300.sh
```
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png)
## 搭建Windows开发环境
通过Windows系统远程访问Ubuntu环境,需要先在Windows系统中安装DevEco Device Tool,以便使用Windows平台的DevEco Device Tool可视化界面进行相关操作。
1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。
2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
3. 设置DevEco Device Tool的安装路径,建议安装到非系统盘符,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您已安装DevEco Device Tool 3.0 Beta2及以前的版本,则在安装新版本时,会先卸载旧版本,卸载过程中出现如下错误提示时,请点击“Ignore”继续安装,该错误不影响新版本的安装。
>
> ![zh-cn_image_0000001239275843](figures/zh-cn_image_0000001239275843.png)
![zh-cn_image_0000001270076961](figures/zh-cn_image_0000001270076961.png)
4. 根据安装向导提示,勾选要自动安装的软件。
1. 在弹出VSCode installation confirm页面,勾选“Install VScode 1.62.2automatically”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果检测到Visual Studio Code已安装,且版本为1.62及以上,则会跳过该步骤。
![zh-cn_image_0000001237801283](figures/zh-cn_image_0000001237801283.png)
2. 在弹出的Python select page选择“Download from Huawei mirror”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果系统已安装可兼容的Python版本(Python 3.8~3.9版本),可选择“Use one of compatible on your PC”。
![zh-cn_image_0000001193983334](figures/zh-cn_image_0000001193983334.png)
5. 在以下界面点击**Next**,进行软件下载和安装。
![zh-cn_image_0000001239634067](figures/zh-cn_image_0000001239634067.png)
6. 继续等待DevEco Device Tool安装向导自动安装DevEco Device Tool插件,直至安装完成,点击**Finish**,关闭DevEco Device Tool安装向导。
![zh-cn_image_0000001239650137](figures/zh-cn_image_0000001239650137.png)
7. 打开Visual Studio Code,进入DevEco Device Tool工具界面。至此,DevEco Device Tool Windows开发环境安装完成。
![zh-cn_image_0000001225760456](figures/zh-cn_image_0000001225760456.png)
## 配置Windows远程访问Ubuntu环境
### 安装SSH服务并获取远程访问的IP地址
1. 在Ubuntu系统中,打开终端工具,执行如下命令安装SSH服务。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果执行该命令失败,提示openssh-server和openssh-client依赖版本不同,请根据CLI界面提示信息,安装openssh-client相应版本后(例如:sudo apt-get install openssh-client=1:8.2p1-4),再重新执行该命令安装openssh-server。
```
sudo apt-get install openssh-server
```
2. 执行如下命令,启动SSH服务。
```
sudo systemctl start ssh
```
3. 执行如下命令,获取当前用户的IP地址,用于Windows系统远程访问Ubuntu环境。
```
ifconfig
```
![zh-cn_image_0000001215737140](figures/zh-cn_image_0000001215737140.png)
### 安装Remote SSH
1. 打开Windows系统下的Visual Studio Code,点击![zh-cn_image_0000001239080359](figures/zh-cn_image_0000001239080359.png),在插件市场的搜索输入框中输入“remote-ssh”。
![zh-cn_image_0000001193920448](figures/zh-cn_image_0000001193920448.png)
2. 点击Remote-SSH的**Install**按钮,安装Remote-SSH。安装成功后,在**INSTALLED**下可以看到已安装Remote-SSH。
![zh-cn_image_0000001238880335](figures/zh-cn_image_0000001238880335.png)
### 远程连接Ubuntu环境
1. 打开Windows系统的Visual Studio Code,点击![zh-cn_image_0000001238760373](figures/zh-cn_image_0000001238760373.png),在REMOTE EXOPLORER页面点击+按钮。
![zh-cn_image_0000001215878922](figures/zh-cn_image_0000001215878922.png)
2. 在弹出的SSH连接命令输入框中输入“ssh _username_\@_ip_address_”,其中ip_address为要连接的远程计算机的IP地址,username为登录远程计算机的帐号。
![zh-cn_image_0000001215879750](figures/zh-cn_image_0000001215879750.png)
3. 在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
![zh-cn_image_0000001260519729](figures/zh-cn_image_0000001260519729.png)
4. 在SSH TARGETS中,找到远程计算机,点击![zh-cn_image_0000001194080414](figures/zh-cn_image_0000001194080414.png),打开远程计算机。
![zh-cn_image_0000001215720398](figures/zh-cn_image_0000001215720398.png)
5. 在弹出的输入框中,选择**Linux**,然后在选择**Continue**,然后输入登录远程计算机的密码,连接远程计算机 。
![zh-cn_image_0000001215897530](figures/zh-cn_image_0000001215897530.png)
连接成功后,等待在远程计算机.vscode-server文件夹下自动安装插件,安装完成后,根据界面提示在Windows系统下重新加载Visual Studio Code,便可以在Windows的DevEco Device Tool界面进行源码开发、编译、烧录等操作。
### 注册访问Ubuntu环境的公钥
在完成以上操作后,您就可以通过Windows远程连接Ubuntu环境进行开发了,但在使用过程中,需要您频繁的输入远程连接密码来进行连接。为解决该问题,您可以使用SSH公钥来进行设置。
1. 打开Git bash命令行窗口,执行如下命令,生成SSH公钥,请注意,在执行命令过程中,请根据界面提示进行操作。username和ip请填写连接Ubuntu系统时需要的参数。
```
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip
```
![zh-cn_image_0000001271532317](figures/zh-cn_image_0000001271532317.png)
2. 在Visual Studio Code中,点击远程连接的设置按钮,并选择打开config文件。
![zh-cn_image_0000001226034634](figures/zh-cn_image_0000001226034634.png)
3. 在config配置文件中添加SSK Key文件信息,如下图所示,然后保存即可。
![zh-cn_image_0000001270356233](figures/zh-cn_image_0000001270356233.png)
# 准备轻量与小型系统环境
- **[搭建Windows+Ubuntu混合开发环境](quickstart-ide-lite-env-setup-win-ubuntu.md)**
- **[获取源码](quickstart-ide-lite-sourcecode-acquire.md)**
\ No newline at end of file
# Hi3516开发板介绍
## 简介
Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP(Image Signal Processor)、H.265视频压缩编码器,同时集成高性能NNIE引擎,使得Hi3516DV300在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。
**图1** Hi3516单板正面外观图
![zh-cn_image_0000001271234717](figures/zh-cn_image_0000001271234717.png)
## 开发板规格
**表1** Hi3516开发板规格清单
| 规格类型 | 规格清单 |
| -------- | -------- |
| **处理器及内部存储** | -&nbsp;Hi3516DV300芯片<br/>-&nbsp;DDR3&nbsp;1GB<br/>-&nbsp;eMMC4.5,8GB容量 |
| **外部器件** | -&nbsp;以太网口<br/>-&nbsp;音频视频<br/>&nbsp;&nbsp;-&nbsp;1路语音输入<br/>&nbsp;&nbsp;-&nbsp;1路单声道(AC_L)输出,接3W功放(LM4871)<br/>&nbsp;&nbsp;-&nbsp;MicroHDMI(1路HDMI&nbsp;1.4)<br/>-&nbsp;摄像头<br/>&nbsp;&nbsp;-&nbsp;传感器IMX335<br/>&nbsp;&nbsp;-&nbsp;镜头M12,焦距4mm,光圈1.8<br/>-&nbsp;显示屏<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(2.35寸)<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(5.5寸)<br/>-&nbsp;外部器件及接口<br/>&nbsp;&nbsp;-&nbsp;SD卡接口<br/>&nbsp;&nbsp;-&nbsp;JTAG/I2S接口<br/>&nbsp;&nbsp;-&nbsp;ADC接口<br/>&nbsp;&nbsp;-&nbsp;舵机接口<br/>&nbsp;&nbsp;-&nbsp;Grove连接器<br/>&nbsp;&nbsp;-&nbsp;USB2.0(Type&nbsp;C)<br/>&nbsp;&nbsp;-&nbsp;功能按键3个,2个用户自定义按键,1个升级按键<br/>&nbsp;&nbsp;-&nbsp;LED指示灯,绿灯,红灯 |
# Hi3861开发板介绍
## 简介
Hi3861开发板是一片大约2cm\*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持OpenHarmony,并配套提供开放、易用的开发和调试运行环境。
**图1** Hi3861开发板外观图
![zh-cn_image_0000001226634692](figures/zh-cn_image_0000001226634692.png)
另外,Hi3861开发板还可以通过与Hi3861底板连接,扩充自身的外设能力,底板如下图所示。
**图2** Hi3861底板外观图
![zh-cn_image_0000001226794660](figures/zh-cn_image_0000001226794660.png)
- RF电路包括功率放大器PA(Power Amplifier)、低噪声放大器LNA(Low Noise Amplifier)、RF Balun、天线开关以及电源管理等模块;支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。
- Hi3861 WLAN基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。
- Hi3861芯片集成高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括SPI(Synchronous Peripheral Interface)、UART(Universal Asynchronous Receiver &amp; Transmitter)、I2C(The Inter Integrated Circuit)、PWM(Pulse Width Modulation)、GPIO(General Purpose Input/Output)和多路ADC(Analog to Digital Converter),同时支持高速SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达50MHz;芯片内置SRAM(Static Random Access Memory)和Flash,可独立运行,并支持在Flash上运行程序。
- Hi3861芯片适用于智能家电等物联网智能终端领域。
**图3** Hi3861功能框图
![zh-cn_image_0000001271234729](figures/zh-cn_image_0000001271234729.png)
## 资源和约束
Hi3861开发板资源十分有限,整板共2MB FLASH,352KB RAM。在编写业务代码时,需注意资源使用效率。
## 开发板规格
**表1** Hi3861开发板规格清单
| 规格类型 | 规格清单 |
| -------- | -------- |
| 通用规格 | -&nbsp;1×1&nbsp;2.4GHz频段(ch1~ch14)<br/>-&nbsp;PHY支持IEEE&nbsp;802.11b/g/n<br/>-&nbsp;MAC支持IEEE802.11&nbsp;d/e/h/i/k/v/w<br/>-&nbsp;内置PA和LNA,集成TX/RX&nbsp;Switch、Balun等<br/>-&nbsp;支持STA和AP形态,作为AP时最大支持6&nbsp;个STA接入<br/>-&nbsp;支持WFA&nbsp;WPA/WPA2&nbsp;personal、WPS2.0<br/>-&nbsp;支持与BT/BLE芯片共存的2/3/4&nbsp;线PTA方案<br/>-&nbsp;电源电压输入范围:2.3V~3.6V<br/>-&nbsp;IO电源电压支持1.8V和3.3V<br/>-&nbsp;支持RF自校准方案<br/>-&nbsp;低功耗:<br/>&nbsp;&nbsp;-&nbsp;Ultra&nbsp;Deep&nbsp;Sleep模式:5μA\@3.3V<br/>&nbsp;&nbsp;-&nbsp;DTIM1:1.5mA\@3.3V<br/>&nbsp;&nbsp;-&nbsp;DTIM3:0.8mA\@3.3V |
| PHY特性 | -&nbsp;支持IEEE802.11b/g/n单天线所有的数据速率<br/>-&nbsp;支持最大速率:72.2Mbps\@HT20&nbsp;MCS7<br/>-&nbsp;支持标准20MHz带宽和5M/10M窄带宽<br/>-&nbsp;支持STBC<br/>-&nbsp;支持Short-GI |
| MAC特性 | -&nbsp;支持A-MPDU,A-MSDU<br/>-&nbsp;支持Blk-ACK<br/>-&nbsp;支持QoS,满足不同业务服务质量需求 |
| CPU子系统 | -&nbsp;高性能&nbsp;32bit微处理器,最大工作频率160MHz<br/>-&nbsp;内嵌SRAM&nbsp;352KB、ROM&nbsp;288KB<br/>-&nbsp;内嵌&nbsp;2MB&nbsp;Flash |
| 外围接口 | -&nbsp;1个SDIO接口、2个SPI接口、2个I2C接口、3个UART接口、15个GPIO接口、7路ADC输入、6路PWM、1个I2S接口(注:上述接口通过复用实现)<br/>-&nbsp;外部主晶体频率40M或24M |
| 其他信息 | -&nbsp;封装:QFN-32,5mm×5mm<br/>-&nbsp;工作温度:-40℃&nbsp;&nbsp;+85℃ |
## OpenHarmony关键特性
OpenHarmony基于Hi3861平台提供了多种开放能力,提供的关键组件如下表所示。
**表2** OpenHarmony关键组件列表
| 组件名 | 能力介绍 |
| -------- | -------- |
| WLAN服务 | 提供WLAN服务能力。包括:station和hotspot模式的连接、断开、状态查询等。 |
| 模组外设控制 | 提供操作外设的能力。包括:I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。 |
| 分布式软总线 | 在OpenHarmony分布式网络中,提供设备被发现、数据传输的能力。 |
| 设备安全绑定 | 提供在设备互联场景中,数据在设备之间的安全流转的能力。 |
| 基础加解密 | 提供密钥管理、加解密等能力。 |
| 系统服务管理 | 系统服务管理基于面向服务的架构,提供了OpenHarmony统一化的系统服务开发框架。 |
| 启动引导 | 提供系统服务的启动入口标识。在系统服务管理启动时,调用boostrap标识的入口函数,并启动系统服务。 |
| 系统属性 | 提供获取与设置系统属性的能力。 |
| 基础库 | 提供公共基础库能力。包括:文件操作、KV存储管理等。 |
| DFX | 提供DFX能力。包括:流水日志、时间打点等。 |
| XTS | 提供OpenHarmony生态认证测试套件的集合能力。 |
# 轻量与小型系统入门概述
## 简介
OpenHarmony轻量和小型系统适用于内存较小的IOT设备(参考内存≥128KiB)。通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。
考虑到开发者的开发习惯,OpenHarmony为开发者提供了以下两种入门指导:
- IDE方式:完全采用IDE(Deveco Device Tool)进行一站式开发,编译依赖工具的安装及编译、烧录、运行都通过IDE进行操作。
- 安装包方式:通过命令行进行编译依赖工具的下载安装,编译操作也通过命令实现。烧录、运行等操作使用IDE。
OpenHarmony还为开发者提供了[Docker环境](../get-code/gettools-acquire.md),在很大程度上简化了编译前的环境配置,习惯使用安装包方式的开发者也可以选择Docker环境进行编译 。
本文采用Deveco Device Tool进行一站式开发介绍,习惯使用命令行的开发者可参考[轻量和小型系统快速入门(安装包方式)](../quick-start/quickstart-docker-lite.md)
## 开发环境
开发者通常习惯采用Windows+Ubuntu环境进行OpenHarmony开发:
- Windows:用于源码开发、烧录等。
- Ubuntu:用于源码编译。
本文将介绍如何基于Windows+Ubuntu环境进行OpenHarmony的开发。
## 开发板
本文基于以下两款典型开发板进行开发介绍 :Hi3861 WLAN模组、Hi3516DV300。开发板的具体外观和规格可参见[本文附录](../quick-start/quickstart-ide-lite-board-introduction.md),开发者可根据需要自行购买开发板。
## 开发流程
轻量和小型系统快速入门流程如下图所示。
**图1** 轻量和小型系统快速入门开发流程
![zh-cn_image_0000001226634676](figures/zh-cn_image_0000001226634676.png)
# 获取源码
在Ubuntu环境下通过以下步骤拉取OpenHarmony源码。
## 准备工作
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装git客户端和git-lfs。(上述工具已在搭建环境章节安装。如已安装,请忽略)
更新软件源:
```
sudo apt-get update
```
通过以下命令安装:
```
sudo apt-get install git git-lfs
```
4. 配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
5. 执行如下命令安装码云repo工具。
```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
## 获取源码
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> Master主干为开发分支,开发者可通过Master主干获取最新特性。发布分支代码相对比较稳定,开发者可基于发布分支代码进行商用功能开发。
- **OpenHarmony主干代码获取**
方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
方式二:通过repo + https下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- **OpenHarmony发布分支代码获取**
OpenHarmony各个版本发布分支的源码获取方式请参考[Release-Notes](../../release-notes/Readme.md)
### 执行prebuilts
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
# 编写“Hello World”程序
下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。
## 示例目录
示例完整目录如下:
```
applications/sample/hello
│── BUILD.gn
└── src
└── helloworld.c
```
## 开发步骤
请在源码目录中通过以下步骤创建“Hello World”应用程序:
1. 新建目录及源码。
新建**applications/sample/hello/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
int main(int argc, char **argv)
{
printf("\n\n");
printf("\n\t\tHello OHOS!\n");
printf("\n\n\n");
return 0;
}
```
2. 新建编译组织文件。
新建**applications/sample/hello/BUILD.gn**文件,内容如下所示:
```
import("//build/lite/config/component/lite_component.gni")
lite_component("hello-OHOS") {
features = [ ":helloworld" ]
}
executable("helloworld") {
output_name = "helloworld"
sources = [ "src/helloworld.c" ]
}
```
3. 添加新组件。
修改文件**build/lite/components/applications.json**,添加组件hello_world_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"components": [
{
"component": "camera_sample_communication",
"description": "Communication related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/communication"
],
"targets": [
"//applications/sample/camera/communication:sample"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##start##
{
"component": "hello_world_app",
"description": "hello world samples.",
"optional": "true",
"dirs": [
"applications/sample/hello"
],
"targets": [
"//applications/sample/hello:hello-OHOS"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##end##
{
"component": "camera_sample_app",
"description": "Camera related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/launcher",
"applications/sample/camera/cameraApp",
"applications/sample/camera/setting",
"applications/sample/camera/gallery",
"applications/sample/camera/media"
],
```
4. 修改单板配置文件。
修改文件**vendor/hisilicon/hispark_taurus/config.json**,新增hello_world_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"subsystem": "applications",
"components": [
{ "component": "camera_sample_app", "features":[] },
{ "component": "camera_sample_ai", "features":[] },
##start##
{ "component": "hello_world_app", "features":[] },
##end##
{ "component": "camera_screensaver_app", "features":[] }
]
},
```
# 编译
1. 在Projects中,点击**Settings**按钮,进入Hi3516DV300配置界面。
![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001265652869](figures/zh-cn_image_0000001265652869.png)
工具链自动安装完成后如下图所示。
![zh-cn_image_0000001220852754](figures/zh-cn_image_0000001220852754.png)
3. 在“hi3516dv300”配置页签中,设置源码的编译类型**build_type**,默认为“debug“类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001221172710](figures/zh-cn_image_0000001221172710.png)
4. 在“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265772913](figures/zh-cn_image_0000001265772913.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001221012766](figures/zh-cn_image_0000001221012766.png)
编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[Hi3516DV300开发板烧录](https://device.harmonyos.com/cn/docs/documentation/guide/ide-hi3516-upload-0000001052148681)
# 烧录
Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采用USB方式进行烧录。相关操作在Windows环境下进行 。
1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
2. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
3. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001216516128](figures/zh-cn_image_0000001216516128.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
4. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。
- upload_port:选择已查询到的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png)
6. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。
1. 在“hi3516dv300_fastboot”页签,在New Option选项中选择需要修改的项,例如partition_bin(烧录文件路径)、partition_addr(烧录文件起始地址)、partition_length(烧录文件分区长度)等。
![zh-cn_image_0000001198889702](figures/zh-cn_image_0000001198889702.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001243290907](figures/zh-cn_image_0000001243290907.png)
3. 按照相同的方法修改kernel、rootfs和userfs的烧录文件信息。
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击hi3516dv300下的**Upload**按钮,启动烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您是第一次在工作台烧录Hi3516DV300/Hi3518EV300开发板,可能烧录失败,提示“not find the Devices”,然后根据[Hi3516DV300/Hi3518EV300开发板USB驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)进行处理后再重新烧录。
![zh-cn_image_0000001267231481](figures/zh-cn_image_0000001267231481.png)
9. 在终端窗口显示如下提示信息时,按住复位键,插拔USB线,最后松开复位键启动烧录。
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png)
启动烧录后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png)
10. 烧录成功后,请根据镜像运行章节进行操作,启动系统。
# 运行
## 启动系统
在完成Hi3516DV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统。
1. 在Hi3516DV300任务中,点击Configure bootloader(Boot OS)进行配置即可。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> DevEco Device Tool针对Hi3516DV300开发板的BootLoader设置进行了适配,无需开发者手动修改。
![zh-cn_image_0000001226794644](figures/zh-cn_image_0000001226794644.png)
2. 提示如下图中的重启开发板的提示信息时,重启开发板,然后在控制台输出“SUCCESS”表示设置成功。
![zh-cn_image_0000001227114584](figures/zh-cn_image_0000001227114584.png)
3. 在任务栏点击**Monitor**按钮,启动串口工具。
![zh-cn_image_0000001271234705](figures/zh-cn_image_0000001271234705.png)
4. 当界面打印回显信息,点击Enter按钮,直到界面显示OHOS \#信息,表示系统启动成功。
![zh-cn_image_0000001271594709](figures/zh-cn_image_0000001271594709.png)
## 运行“Hello World”
系统启动成功后,通过以下步骤运行“Hello World”。
1. 在启动界面进入bin目录。
```
cd bin
```
2. 进入bin目录后可以看到helloworld文件,通过以下命令运行helloworld程序。
```
./helloworld
```
界面打印“Hello World!”,程序运行成功。
![zh-cn_image_0000001271354693](figures/zh-cn_image_0000001271354693.png)
## 下一步学习
恭喜您,已完成Hi3516的快速上手!建议您下一步进入[带屏摄像头类产品开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/guide/device-camera.md)的学习 。
# Hi3516开发板
- **[编写“Hello World”程序](quickstart-ide-lite-steps-hi3516-application-framework.md)**
- **[编译](quickstart-ide-lite-steps-hi3516-building.md)**
- **[烧录](quickstart-ide-lite-steps-hi3516-burn.md)**
- **[运行](quickstart-ide-lite-steps-hi3516-running.md)**
\ No newline at end of file
# 运行<a name="ZH-CN_TOPIC_0000001171774076"></a> # 运行
- [运行结果](#section18115713118)
- [下一步学习](#section9712145420182)
## 运行结果<a name="section18115713118"></a> ## 运行结果
示例代码编译、烧录、运行、调测后,重启开发板后将自动在界面输出如下结果: 示例代码编译、烧录、运行、调测后,重启开发板后将自动在界面输出如下结果:
``` ```
ready to OS start ready to OS start
FileSystem mount ok. FileSystem mount ok.
...@@ -14,7 +13,7 @@ wifi init success! ...@@ -14,7 +13,7 @@ wifi init success!
[DEMO] Hello world. [DEMO] Hello world.
``` ```
## 下一步学习<a name="section9712145420182"></a>
恭喜,您已完成Hi3861开发板快速上手!建议您下一步进入[WLAN产品开发](../guide/device-wlan-led-control.md)的学习 。 ## 下一步学习
恭喜,您已完成Hi3861 WLAN模组快速上手!建议您下一步进入[WLAN产品开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/guide/device-wlan.md)的学习 。
# 编写“Hello World”程序
下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。
1. 确定目录结构。
开发者编写业务时,务必先在./applications/sample/wifi-iot/app路径下新建一个目录(或一套目录结构),用于存放业务源码文件。
例如:在app下新增业务my_first_app,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:
```
.
└── applications
└── sample
└── wifi-iot
└── app
└── my_first_app
│── hello_world.c
└── BUILD.gn
```
2. 编写业务代码。
新建./applications/sample/wifi-iot/app/my_first_app下的hello_world.c文件,在hello_world.c中新建业务入口函数HelloWorld,并实现业务逻辑。并在代码最下方,使用OpenHarmony启动恢复模块接口SYS_RUN()启动业务。(SYS_RUN定义在ohos_init.h文件中)
```
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
void HelloWorld(void)
{
printf("[DEMO] Hello world.\n");
}
SYS_RUN(HelloWorld);
```
3. 编写用于将业务构建成静态库的BUILD.gn文件。
新建./applications/sample/wifi-iot/app/my_first_app下的BUILD.gn文件,并完成如下配置。
如步骤1所述,BUILD.gn文件由三部分内容(目标、源文件、头文件路径)构成,需由开发者完成填写。
```
static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
```
- static_library中指定业务模块的编译结果,为静态库文件libmyapp.a,开发者根据实际情况完成填写。
- sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。
- include_dirs中指定source所需要依赖的.h文件路径。
4. 添加新组件。
修改文件**build/lite/components/applications.json**,添加组件hello_world_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"components": [
{
"component": "camera_sample_communication",
"description": "Communication related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/communication"
],
"targets": [
"//applications/sample/camera/communication:sample"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##start##
{
"component": "hello_world_app",
"description": "hello world samples.",
"optional": "true",
"dirs": [
"applications/sample/wifi-iot/app/my_first_app"
],
"targets": [
"//applications/sample/wifi-iot/app/my_first_app:myapp"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_m" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##end##
{
"component": "camera_sample_app",
"description": "Camera related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/launcher",
"applications/sample/camera/cameraApp",
"applications/sample/camera/setting",
"applications/sample/camera/gallery",
"applications/sample/camera/media"
],
```
5. 修改单板配置文件。
修改文件**vendor/hisilicon/hispark_pegasus/config.json**,新增hello_world_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"subsystem": "applications",
"components": [
##start##
{ "component": "hello_world_app", "features":[] },
##end##
{ "component": "wifi_iot_sample_app", "features":[] }
]
},
```
# 编译
1. 在Projects中,点击**Settings**按钮,进入Hi3861配置界面。
![zh-cn_image_0000001265785209](figures/zh-cn_image_0000001265785209.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001221025048](figures/zh-cn_image_0000001221025048.png)
工具链自动安装完成后如下图所示。
![zh-cn_image_0000001221344980](figures/zh-cn_image_0000001221344980.png)
3. 在“hi3861”配置页签中,设置源码的编译类型**build_type**,默认为"debug"类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001265945173](figures/zh-cn_image_0000001265945173.png)
4. 在DevEco Device Tool界面的“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265505181](figures/zh-cn_image_0000001265505181.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001265665157](figures/zh-cn_image_0000001265665157.png)
编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[Hi3861V100开发板烧录](https://device.harmonyos.com/cn/docs/documentation/guide/ide-hi3861-upload-0000001051668683)
# 烧录
Hi3861V100开发板支持串口烧录方式,在Windows下通过以下步骤进行烧录:
1. 请连接好电脑和待烧录开发板,需要连接USB口,具体可参考[Hi3861V100开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md)
2. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
3. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001216274840](figures/zh-cn_image_0000001216274840.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果对应的串口异常,请根据[Hi3861V100开发板串口驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/hi3861-drivers-0000001058153433)安装USB转串口的驱动程序。
4. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198943768](figures/zh-cn_image_0000001198943768.png)
5. 在“hi3861”页签,设置烧录选项,包括upload_port、upload_protocol和upload_partitions。
- upload_port:选择已查询的串口号。
- upload_protocol:选择烧录协议,选择“hiburn-serial”。
- upload_partitions:选择待烧录的文件,默认选择hi3861_app。
![zh-cn_image_0000001243704061](figures/zh-cn_image_0000001243704061.png)
6. 检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。
在“hi3861_app”页签,在New Option选项中选择partition_bin(烧录文件路径),然后设置待烧录文件的地址。
![zh-cn_image_0000001260919759](figures/zh-cn_image_0000001260919759.png)
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。
![zh-cn_image_0000001216440138](figures/zh-cn_image_0000001216440138.png)
9. 启动烧录后,显示如下提示信息时,请按开发板上的RST按钮重启开发板。
![zh-cn_image_0000001198466090](figures/zh-cn_image_0000001198466090.png)
10. 重新上电后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001216761476](figures/zh-cn_image_0000001216761476.png)
# 调试验证
完成烧录及联网之后,用户可根据需要进行调试验证。目前调试验证的方法有以下两种,开发者可以根据具体业务情况选择。
1. 通过printf打印日志
2. 通过asm文件定位panic问题
由于本示例业务简单,采用printf打印日志的调试方式即可。下方将介绍这两种调试手段的使用方法。
## printf打印
代码中增加printf维测,信息会直接打印到串口上。开发者可在业务关键路径或业务异常位置增加日志打印,如下所示:
```
void HelloWorld(void)
{
printf("[DEMO] Hello world.\n");
}
```
## 根据asm文件进行问题定位
系统异常退出时,会在串口上打印异常退出原因调用栈信息,如下文所示。通过解析异常栈信息可以定位异常位置。
```
=======KERNEL PANIC=======
**Call Stack*
Call Stack 0 -- 4860d8 addr:f784c
Call Stack 1 -- 47b2b2 addr:f788c
Call Stack 2 -- 3e562c addr:f789c
Call Stack 3 -- 4101de addr:f78ac
Call Stack 4 -- 3e5f32 addr:f78cc
Call Stack 5 -- 3f78c0 addr:f78ec
Call Stack 6 -- 3f5e24 addr:f78fc
Call Stack end***
```
为解析上述调用栈信息,需要使用到Hi3861_wifiiot_app.asm文件,该文件记录了代码中函数在Flash上的符号地址以及反汇编信息。asm文件会随版本打包一同构建输出,存放在./out/wifiiot/路径下。
1. 将调用栈CallStack信息保存到txt文档中,以便于编辑。(可选)
2. 打开asm文件,并搜索CallStack中的地址,列出对应的函数名信息。通常只需找出前几个栈信息对应的函数,就可明确异常代码方向。
```
Call Stack 0 -- 4860d8 addr:f784c -- WadRecvCB
Call Stack 1 -- 47b2b2 addr:f788c -- wal_sdp_process_rx_data
Call Stack 2 -- 3e562c addr:f789c
Call Stack 3 -- 4101de addr:f78ac
Call Stack 4 -- 3e5f32 addr:f78cc
Call Stack 5 -- 3f78c0 addr:f78ec
Call Stack 6 -- 3f5e24 addr:f78fc
```
3. 根据以上调用栈信息,可以定位WadRecvCB函数中出现了异常。
![zh-cn_image_0000001226634668](figures/zh-cn_image_0000001226634668.png)
4. 完成代码排查及修改。
# 联网
完成版本编译及烧录后,下面开始介绍如何在串口终端上执行AT命令,使Hi3861 WLAN模组联网。
1. 保持Windows工作台和Hi3861 WLAN模组的连接状态,在DevEco工具最下方,点击“DevEco:Serial Monitor”按钮。
**图1** 打开DevEco串口终端示意图
![zh-cn_image_0000001226634700](figures/zh-cn_image_0000001226634700.png)
2. 复位Hi3861 WLAN模组,终端界面显示“ready to OS start”,则启动成功。
**图2** Hi3861 WLAN模组复位成功示意图
![zh-cn_image_0000001271594733](figures/zh-cn_image_0000001271594733.png)
3. 在DevEco的串口终端中,依次执行如下AT命令,启动STA模式,连接指定AP热点,并开启DHCP功能。
```
AT+STARTSTA # 启动STA模式
AT+SCAN # 扫描周边AP
AT+SCANRESULT # 显示扫描结果
AT+CONN="SSID",,2,"PASSWORD" # 连接指定AP,其中SSID/PASSWORD为待连接的热点名称和密码
AT+STASTAT # 查看连接结果
AT+DHCP=wlan0,1 # 通过DHCP向AP请求wlan0的IP地址
```
4. 查看Hi3861 WLAN模组与网关联通是否正常,如下图所示。
```
AT+IFCFG # 查看模组接口IP
AT+PING=X.X.X.X # 检查模组与网关的联通性,其中X.X.X.X需替换为实际的网关地址
```
**图3** Hi3861 WLAN模组联网成功示意图
![zh-cn_image_0000001227114612](figures/zh-cn_image_0000001227114612.png)
# Hi3861开发板
- **[编写“Hello World”程序](quickstart-ide-lite-steps-hi3861-application-framework.md)**
- **[编译](quickstart-ide-lite-steps-hi3861-building.md)**
- **[烧录](quickstart-ide-lite-steps-hi3861-burn.md)**
- **[联网](quickstart-ide-lite-steps-hi3861-netconfig.md)**
- **[调试验证](quickstart-ide-lite-steps-hi3861-debug.md)**
- **[运行](quickstart-ide-lite-steps-hi3816-running.md)**
\ No newline at end of file
# 运行“Hello World”
- **[Hi3861开发板](quickstart-ide-lite-steps-hi3861.md)**
- **[Hi3516开发板](quickstart-ide-lite-steps-hi3516.md)**
\ No newline at end of file
# 轻量和小型系统快速入门-IDE
- **[轻量与小型系统入门概述](quickstart-ide-lite-overview.md)**
- **[准备轻量与小型系统环境](quickstart-ide-lite-env-setup.md)**
- **[创建源码工程](quickstart-ide-lite-create-project.md)**
- **[运行“Hello World”](quickstart-ide-lite-steps.md)**
- **[附录](quickstart-ide-lite-appendix.md)**
\ No newline at end of file
# 附录
- **[开发板介绍](quickstart-ide-standard-board-introduction.md)**
\ No newline at end of file
# Hi3516开发板介绍
## 开发板简介
Hi3516DV300是新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP(Image Signal Processor)、H.265视频压缩编码器、高性能NNIE引擎,在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。
**图1** Hi3516单板正面外观图
![zh-cn_image_0000001227082182](figures/zh-cn_image_0000001227082182.png)
## 开发板规格
**表1** Hi3516开发板规格清单
| 规格类型 | 规格清单 |
| -------- | -------- |
| **处理器及内部存储** | -&nbsp;Hi3516DV300芯片<br/>-&nbsp;DDR3&nbsp;1GB<br/>-&nbsp;eMMC4.5,8GB容量 |
| **外部器件** | -&nbsp;以太网口<br/>-&nbsp;音频视频<br/>&nbsp;&nbsp;-&nbsp;1路语音输入<br/>&nbsp;&nbsp;-&nbsp;1路单声道(AC_L)输出,接3W功放(LM4871)<br/>&nbsp;&nbsp;-&nbsp;MicroHDMI(1路HDMI&nbsp;1.4)<br/>-&nbsp;摄像头<br/>&nbsp;&nbsp;-&nbsp;传感器IMX335<br/>&nbsp;&nbsp;-&nbsp;镜头M12,焦距4mm,光圈1.8<br/>-&nbsp;显示屏<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(2.35寸)<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(5.5寸)<br/>-&nbsp;外部器件及接口<br/>&nbsp;&nbsp;-&nbsp;SD卡接口<br/>&nbsp;&nbsp;-&nbsp;JTAG/I2S接口<br/>&nbsp;&nbsp;-&nbsp;ADC接口<br/>&nbsp;&nbsp;-&nbsp;舵机接口<br/>&nbsp;&nbsp;-&nbsp;Grove连接器<br/>&nbsp;&nbsp;-&nbsp;USB2.0(Type&nbsp;C)<br/>&nbsp;&nbsp;-&nbsp;功能按键3个,2个用户自定义按键,1个升级按键<br/>&nbsp;&nbsp;-&nbsp;LED指示灯,绿灯,红灯 |
# RK3568开发板介绍
## 开发板简介
RK3568开发板基于Rockchip RK3568芯片,集成双核心架构GPU以及高效能NPU;搭载四核64位Cortex-A55处理器,采用22nm先进工艺,主频高达2.0GHz;支持蓝牙、Wi-Fi、音频、视频和摄像头等功能,拥有丰富的扩展接口,支持多种视频输入输出接口;配置双千兆自适应RJ45以太网口,可满足NVR、工业网关等多网口产品需求。
**图1** RK3568开发板正面
![zh-cn_image_0000001271442129](figures/zh-cn_image_0000001271442129.png)
**图2** RK3568开发板背面
![zh-cn_image_0000001271322293](figures/zh-cn_image_0000001271322293.png)
## 开发板规格
**表1** RK3568开发板规格说明
| 规格类型 | 规格清单 |
| -------- | -------- |
| 显示接口 | -&nbsp;1×HDMI2.0(Type-A)接口,支持4K/60fps输出<br/>-&nbsp;2×MIPI接口,支1920\*1080\@60fps输出<br/>-&nbsp;1×eDP接口,支持2K\@60fps输出 |
| 音频接口 | -&nbsp;1×8ch&nbsp;I2S/TDM/PDM<br/>-&nbsp;1×HDMI音频输出<br/>-&nbsp;1×喇叭输出<br/>-&nbsp;1×耳机输出<br/>-&nbsp;1×麦克风,板载音频输入 |
| 以太网 | 2×GMAC(10/100/1000M) |
| 无线网络 | SDIO接口,支持WIFI6&nbsp;5G/2.5G,BT4.2 |
| 摄像头接口 | MIPI-CSI2,1x4-lane/2x2-lane\@2.5Gbps/lane |
| USB | -&nbsp;2×USB2.0&nbsp;Host,Type-A<br/>-&nbsp;1×USB3.0&nbsp;Host,Type-A<br/>-&nbsp;1×USB3.0&nbsp;OTG |
| PCIe | 1×2Lanes&nbsp;PCIe3.0&nbsp;Connector&nbsp;(RC&nbsp;Mode) |
| SATA | 1×SATA3.0&nbsp;Connector |
| SDMMC | 1×Micro&nbsp;SD&nbsp;Card3.0 |
| 按键 | -&nbsp;1×Vol+/Recovery<br/>-&nbsp;1×Reset<br/>-&nbsp;1×Power<br/>-&nbsp;1×Vol-<br/>-&nbsp;1×Mute |
| 调试 | 1×调试串口 |
| RTC | 1×RTC |
| IR | 1×IR |
| 三色灯 | 3×LED |
| G-sensor | 1×G-sensor |
| FAN | 1×Fan |
| 扩展接口 | 20Pin扩展接口包括:<br/>-&nbsp;2×ADC接口<br/>-&nbsp;2×I2C接口<br/>-&nbsp;7×GPIO口(或者3×gpio&nbsp;+&nbsp;4×uart信号)<br/>-&nbsp;3×VCC电源(12V、3.3V、5V) |
| 底板尺寸 | 180mm×130mm |
| PCB规格 | 4&nbsp;层板 |
# 开发板介绍
- **[Hi3516开发板介绍](quickstart-ide-standard-board-introduction-hi3516.md)**
- **[RK3568开发板介绍](quickstart-ide-standard-board-introduction-rk3568.md)**
\ No newline at end of file
# 创建源码工程
在完成[搭建Windows+Ubuntu混合开发环境](../quick-start/quickstart-ide-standard-env-setup-win-ubuntu.md)[获取源码](../quick-start/quickstart-ide-standard-sourcecode-acquire.md)后,您需要在Windows环境中按照如下步骤创建源码工程。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001171426014](figures/zh-cn_image_0000001171426014.png)
2. 选择要导入的源码目录,点击**Import**打开。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
![zh-cn_image_0000001271562277](figures/zh-cn_image_0000001271562277.png)
3. 如果您打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击**Import**
![zh-cn_image_0000001135394334](figures/zh-cn_image_0000001135394334.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。下图以导入Hi3516DV300为例进行展示 。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> Hi3516DV300开发板Product选择“Hi3516DV300”。
>
> RK3568开发板Product选择“rk3568”。
![zh-cn_image_0000001271448821](figures/zh-cn_image_0000001271448821.png)
6. 点击**Open**打开工程或源码。
# 搭建Windows+Ubuntu混合开发环境
通常在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,需要使用Ubuntu的编译环境对源码进行编译。
在以上的设备开发场景中,可以搭建一套Windows+Ubuntu混合开发的环境,其中使用Windows平台的DevEco Device Tool可视化界面进行相关操作,通过远程连接的方式对接Ubuntu下的DevEco Device Tool(可以不安装Visual Studio Code),然后对Ubuntu下的源码进行开发、编译、烧录等操作。
## 系统要求
- Windows系统要求:Windows10 64位系统。
- Ubuntu系统要求:Ubuntu20.04及以上版本,内存推荐16 GB及以上。
- Windows系统和Ubuntu系统的用户名不能包含中文字符。
- Windows和Ubuntu系统上安装的DevEco Device Tool为3.0 Release版本。
## 搭建Ubuntu环境
在Windows+Ubuntu混合开发环境场景中,在Ubuntu系统上可以不用安装Visual Studio Code,这种情况下,Ubuntu环境中就没有DevEco Device Tool的可视化操作界面。如果需要使用到Ubuntu下的DevEco Device Tool可视化操作界面,环境搭建请参考[搭建Ubuntu开发环境](https://device.harmonyos.com/cn/docs/documentation/guide/ide-install-ubuntu-0000001072959308)
1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
```
ls -l /bin/sh
```
![zh-cn_image_0000001226764302](figures/zh-cn_image_0000001226764302.png)
2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。
```
sudo dpkg-reconfigure dash
```
![zh-cn_image_0000001243641075](figures/zh-cn_image_0000001243641075.png)
2. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Linux版本。
3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。
1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.400.zip为软件包名称,请根据实际进行修改。
```
unzip devicetool-linux-tool-3.0.0.400.zip
```
2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
```
chmod u+x devicetool-linux-tool-3.0.0.400.sh
```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
```
sudo ./devicetool-linux-tool-3.0.0.300.sh
```
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png)
## 搭建Windows开发环境
通过Windows系统远程访问Ubuntu环境,需要先在Windows系统中安装DevEco Device Tool,以便使用Windows平台的DevEco Device Tool可视化界面进行相关操作。
1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。
2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
3. 设置DevEco Device Tool的安装路径,建议安装到非系统盘符,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您已安装DevEco Device Tool 3.0 Beta2及以前的版本,则在安装新版本时,会先卸载旧版本,卸载过程中出现如下错误提示时,请点击“Ignore”继续安装,该错误不影响新版本的安装。
>
> ![zh-cn_image_0000001239275843](figures/zh-cn_image_0000001239275843.png)
![zh-cn_image_0000001270076961](figures/zh-cn_image_0000001270076961.png)
4. 根据安装向导提示,勾选要自动安装的软件。
1. 在弹出VSCode installation confirm页面,勾选“Install VScode 1.62.2automatically”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果检测到Visual Studio Code已安装,且版本为1.62及以上,则会跳过该步骤。
![zh-cn_image_0000001237801283](figures/zh-cn_image_0000001237801283.png)
2. 在弹出的Python select page选择“Download from Huawei mirror”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果系统已安装可兼容的Python版本(Python 3.8~3.9版本),可选择“Use one of compatible on your PC”。
![zh-cn_image_0000001193983334](figures/zh-cn_image_0000001193983334.png)
5. 在以下界面点击**Next**,进行软件下载和安装。
![zh-cn_image_0000001239634067](figures/zh-cn_image_0000001239634067.png)
6. 继续等待DevEco Device Tool安装向导自动安装DevEco Device Tool插件,直至安装完成,点击**Finish**,关闭DevEco Device Tool安装向导。
![zh-cn_image_0000001239650137](figures/zh-cn_image_0000001239650137.png)
7. 打开Visual Studio Code,进入DevEco Device Tool工具界面。至此,DevEco Device Tool Windows开发环境安装完成。
![zh-cn_image_0000001225760456](figures/zh-cn_image_0000001225760456.png)
## 配置Windows远程访问Ubuntu环境
### 安装SSH服务并获取远程访问的IP地址
1. 在Ubuntu系统中,打开终端工具,执行如下命令安装SSH服务。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果执行该命令失败,提示openssh-server和openssh-client依赖版本不同,请根据CLI界面提示信息,安装openssh-client相应版本后(例如:sudo apt-get install openssh-client=1:8.2p1-4),再重新执行该命令安装openssh-server。
```
sudo apt-get install openssh-server
```
2. 执行如下命令,启动SSH服务。
```
sudo systemctl start ssh
```
3. 执行如下命令,获取当前用户的IP地址,用于Windows系统远程访问Ubuntu环境。
```
ifconfig
```
![zh-cn_image_0000001215737140](figures/zh-cn_image_0000001215737140.png)
### 安装Remote SSH
1. 打开Windows系统下的Visual Studio Code,点击![zh-cn_image_0000001239080359](figures/zh-cn_image_0000001239080359.png),在插件市场的搜索输入框中输入“remote-ssh”。
![zh-cn_image_0000001193920448](figures/zh-cn_image_0000001193920448.png)
2. 点击Remote-SSH的**Install**按钮,安装Remote-SSH。安装成功后,在**INSTALLED**下可以看到已安装Remote-SSH。
![zh-cn_image_0000001238880335](figures/zh-cn_image_0000001238880335.png)
### 远程连接Ubuntu环境
1. 打开Windows系统的Visual Studio Code,点击![zh-cn_image_0000001238760373](figures/zh-cn_image_0000001238760373.png),在REMOTE EXOPLORER页面点击+按钮。
![zh-cn_image_0000001215878922](figures/zh-cn_image_0000001215878922.png)
2. 在弹出的SSH连接命令输入框中输入“ssh _username_\@_ip_address_”,其中ip_address为要连接的远程计算机的IP地址,username为登录远程计算机的帐号。
![zh-cn_image_0000001215879750](figures/zh-cn_image_0000001215879750.png)
3. 在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
![zh-cn_image_0000001260519729](figures/zh-cn_image_0000001260519729.png)
4. 在SSH TARGETS中,找到远程计算机,点击![zh-cn_image_0000001194080414](figures/zh-cn_image_0000001194080414.png),打开远程计算机。
![zh-cn_image_0000001215720398](figures/zh-cn_image_0000001215720398.png)
5. 在弹出的输入框中,选择**Linux**,然后在选择**Continue**,然后输入登录远程计算机的密码,连接远程计算机 。
![zh-cn_image_0000001215897530](figures/zh-cn_image_0000001215897530.png)
连接成功后,等待在远程计算机.vscode-server文件夹下自动安装插件,安装完成后,根据界面提示在Windows系统下重新加载Visual Studio Code,便可以在Windows的DevEco Device Tool界面进行源码开发、编译、烧录等操作。
### 注册访问Ubuntu环境的公钥
在完成以上操作后,您就可以通过Windows远程连接Ubuntu环境进行开发了,但在使用过程中,需要您频繁的输入远程连接密码来进行连接。为解决该问题,您可以使用SSH公钥来进行设置。
1. 打开Git bash命令行窗口,执行如下命令,生成SSH公钥,请注意,在执行命令过程中,请根据界面提示进行操作。username和ip请填写连接Ubuntu系统时需要的参数。
```
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip
```
![zh-cn_image_0000001271532317](figures/zh-cn_image_0000001271532317.png)
2. 在Visual Studio Code中,点击远程连接的设置按钮,并选择打开config文件。
![zh-cn_image_0000001226034634](figures/zh-cn_image_0000001226034634.png)
3. 在config配置文件中添加SSK Key文件信息,如下图所示,然后保存即可。
![zh-cn_image_0000001270356233](figures/zh-cn_image_0000001270356233.png)
# 准备标准系统环境
- **[搭建Windows+Ubuntu混合开发环境](quickstart-ide-standard-env-setup-win-ubuntu.md)**
- **[获取源码](quickstart-ide-standard-sourcecode-acquire.md)**
\ No newline at end of file
# 标准系统入门概述
## 简介
OpenHarmony标准系统适用于参考内存≥128MiB的设备。通过本文,开发者可以快速熟悉OpenHarmony标准系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。
考虑到开发者的开发习惯,OpenHarmony为开发者提供了以下两种入门指导:
- IDE方式:完全采用IDE(Deveco Device Tool)进行一站式开发,编译依赖工具的安装及编译、烧录、运行都通过IDE进行操作。
- 安装包方式:通过命令行进行编译依赖工具的下载安装,编译操作也通过命令实现。烧录、运行等操作使用IDE。
OpenHarmony还为开发者提供了[Docker环境](../get-code/gettools-acquire.md),在很大程度上简化了编译前的环境配置,习惯使用安装包方式的开发者也可以选择Docker环境进行编译 。
本文采用Deveco Device Tool进行一站式开发介绍,习惯使用命令行的开发者可参考[标准系统快速入门(安装包方式)](../quick-start/quickstart-standard-docker.md)
## 开发环境
开发者通常习惯采用Windows+Ubuntu环境进行OpenHarmony开发:
- Windows:用于源码开发、烧录等。
- Ubuntu:用于源码编译。
本文将介绍如何基于Windows+Ubuntu环境进行OpenHarmony的开发。
## 开发板
本文选取了两款典型开发板:Hi3516DV300、RK3568,并基于上述两款开发板进行开发介绍。开发板的具体外观和规格可参见[本文附录](../quick-start/quickstart-standard-board-introduction.md),开发者可根据需要自行购买开发板。
## 开发流程
标准系统快速入门流程如下图所示:
**图1** 标准系统快速入门开发流程
![zh-cn_image_0000001271562257](figures/zh-cn_image_0000001271562257.png)
# 编译
1. 在Projects中,点击**Settings**按钮,进入Hi3516DV300配置界面。
![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001227277128](figures/zh-cn_image_0000001227277128.png)
工具链自动安装完成后如下图所示。
![zh-cn_image_0000001227757036](figures/zh-cn_image_0000001227757036.png)
3. 在“hi3516dv300”配置页签中,设置源码的编译类型**build_type**,默认为“debug“类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001221172710](figures/zh-cn_image_0000001221172710.png)
4. 在“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265772913](figures/zh-cn_image_0000001265772913.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001221012766](figures/zh-cn_image_0000001221012766.png)
编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[Hi3516DV300开发板烧录](https://device.harmonyos.com/cn/docs/documentation/guide/ide-hi3516-upload-0000001052148681)
# 烧录
在Windows下采用USB烧录方式进行Hi3516DV300的烧录。
1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
2. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
3. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001216516128](figures/zh-cn_image_0000001216516128.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
4. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。
- upload_port:选择已查询到的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png)
6. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。
1. 在“hi3516dv300_fastboot”页签,在New Option选项中选择需要修改的项,例如partition_bin(烧录文件路径)、partition_addr(烧录文件起始地址)、partition_length(烧录文件分区长度)等。
![zh-cn_image_0000001198889702](figures/zh-cn_image_0000001198889702.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001243290907](figures/zh-cn_image_0000001243290907.png)
3. 按照相同的方法修改kernel、rootfs和userfs的烧录文件信息。
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击hi3516dv300下的**Upload**按钮,启动烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您是第一次在工作台烧录Hi3516DV300/Hi3518EV300开发板,可能烧录失败,提示“not find the Devices”,然后根据[Hi3516DV300/Hi3518EV300开发板USB驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)进行处理后再重新烧录。
![zh-cn_image_0000001267231481](figures/zh-cn_image_0000001267231481.png)
9. 在终端窗口显示如下提示信息时,按住复位键,插拔USB线,最后松开复位键启动烧录。
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png)
启动烧录后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png)
10. 烧录成功后,请根据镜像运行章节进行操作,启动系统。
# 编写“Hello World”程序
下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。
## 示例目录
示例完整目录如下。
```
applications/sample/hello
│── BUILD.gn
│── include
│ └── helloworld.h
│── src
│ └── helloworld.c
├── bundle.json
build
└── subsystem_config.json
productdefine/common
└── products
└── Hi3516DV300.json
```
## 开发步骤
请在源码目录中通过以下步骤创建“Hello World”应用程序:
1. 创建目录,编写业务代码。
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OHOS)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv)
{
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n\n");
printf("\n\t\tHello World!\n");
printf("\n\n");
}
```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
```
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // HELLOWORLD_H
```
2. 新建编译组织文件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示:
```
import("//build/ohos.gni") # 导入编译模板
ohos_executable("helloworld") { # 可执行模块
sources = [ # 模块源码
"src/helloworld.c"
]
include_dirs = [ # 模块依赖头文件目录
"include"
]
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内部依赖
part_name = "hello" # 所属部件名称,必选
install_enable = true # 是否默认安装(缺省默认不安装),可选
}
```
2. 新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
```
{
"name": "@ohos/hello",
"description": "Hello world example.",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "applications/sample/hello"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hello",
"subsystem": "sample",
"syscap": [],
"features": [],
"adapted_system_type": [ "mini", "small", "standard" ],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": []
}
}
}
```
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
3. 修改子系统配置文件。
在build/subsystem_config.json中添加新建的子系统的配置。
```
"sample": {
"path": "applications/sample/hello",
"name": "sample"
},
```
4. 修改产品配置文件。
在productdefine\common\products\Hi3516DV300.json中添加对应的hello部件,直接添加到原有部件后即可。
```
"usb:usb_manager_native":{},
"applications:prebuilt_hap":{},
"sample:hello":{},
"wpa_supplicant-2.9:wpa_supplicant-2.9":{},
```
# 运行
## 启动系统
烧录完成后通过以下步骤启动系统:
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 初次烧写标准系统,需要完成以下配置,后续烧写或者启动,可以跳过以下操作。
1. 在DevEco Device Tool中,点击Monitor,打开串口工具。
![zh-cn_image_0000001227082162](figures/zh-cn_image_0000001227082162.png)
2. 重启开发板,在倒计时结束前,按任意键进入系统。
![zh-cn_image_0000001271202289](figures/zh-cn_image_0000001271202289.gif)
3. 通过以下两条命令设置启动参数。
```
setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)';
```
```
setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000'
```
![zh-cn_image_0000001271562269](figures/zh-cn_image_0000001271562269.png)
4. 保存参数设置。
```
save
```
![zh-cn_image_0000001226762210](figures/zh-cn_image_0000001226762210.png)
5. 重启开发板,完成系统启动。
```
reset
```
![zh-cn_image_0000001226602238](figures/zh-cn_image_0000001226602238.png)
## 运行“Hello World”
设备启动后打开串口工具,在任意目录下输入命令helloworld后回车,界面打印“Hello World!”,程序运行成功。
![zh-cn_image_0000001271322277](figures/zh-cn_image_0000001271322277.png)
## 下一步
恭喜!您已经完成了OpenHarmony标准系统的快速入门,接下来可[开发一个小示例](../guide/device-clock-guide.md),进一步熟悉OpenHarmony的开发。
# Hi3516开发板
- **[编写“Hello World”程序](quickstart-ide-standard-running-hi3516-create.md)**
- **[编译](quickstart-ide-standard-running-hi3516-build.md)**
- **[烧录](quickstart-ide-standard-running-hi3516-burning.md)**
- **[运行](quickstart-ide-standard-running-hi3516-running.md)**
\ No newline at end of file
# 编译
1. 在Projects中,点击**Settings**按钮,进入HH-SCDY200配置界面。
![zh-cn_image_0000001221036768](figures/zh-cn_image_0000001221036768.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001221356692](figures/zh-cn_image_0000001221356692.png)
工具链自动安装完成后如下图所示。
![zh-cn_image_0000001265676877](figures/zh-cn_image_0000001265676877.png)
3. 在“hh_scdy200”配置页签中,设置源码的编译类型**build_type**,默认为"debug类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001265956897](figures/zh-cn_image_0000001265956897.png)
4. 在DevEco Device Tool界面的“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265516901](figures/zh-cn_image_0000001265516901.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001222361042](figures/zh-cn_image_0000001222361042.png)
编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[RK3568开发板烧录](https://device.harmonyos.com/cn/docs/documentation/guide/ide-rk3568-upload-0000001239220669)
# 烧录
1. [下载](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows/DriverAssitant_v5.1.1.zip)并安装驱动DriverInstall.exe,双击DriverInstall.exe打开安装程序,点击“驱动安装”按钮,按提示安装USB驱动。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果已经安装旧版本的烧写工具,请先点击"驱动卸载"按钮卸载驱动,然后再点击"驱动安装"按钮安装驱动。
2. 请连接好电脑和待烧录开发板,连接USB接口。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 打开DevEco Device Tool,在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001239661509](figures/zh-cn_image_0000001239661509.png)
5. 在“hh_scdy200”页签,设置烧录选项,包括upload_partitions和upload_protocol。
- upload_partitions:选择待烧录的文件。
- upload_protocol:选择烧录协议,固定选择“upgrade”。
![zh-cn_image_0000001194504874](figures/zh-cn_image_0000001194504874.png)
6. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:loader、parameter、uboot、boot_linux、system、vendor和userdata。
1. 在“hh_scdy200_loader”页签,在New Option选项中选择需要修改的项,例如partition_bin(烧录文件路径)、partition_addr(烧录文件起始地址)、partition_length(烧录文件分区长度)等。
![zh-cn_image_0000001224173270](figures/zh-cn_image_0000001224173270.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001268653461](figures/zh-cn_image_0000001268653461.png)
3. 按照相同的方法修改parameter、uboot、boot_linux、system、vendor和userdata的烧录文件信息。
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击工程的Open按钮,打开工程文件,点击![zh-cn_image_0000001239221905](figures/zh-cn_image_0000001239221905.png)图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击hh_scdy200下的**Upload**按钮,启动烧录。
![zh-cn_image_0000001194821710](figures/zh-cn_image_0000001194821710.png)
9. 等待开发板烧录完成,当屏幕提示如下信息时,表示烧录成功。
![zh-cn_image_0000001194984912](figures/zh-cn_image_0000001194984912.png)
# 编写“Hello World”程序
下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。
## 示例目录
示例完整目录如下。
```
applications/sample/hello
│── BUILD.gn
│── include
│ └── helloworld.h
│── src
│ └── helloworld.c
├── bundle.json
build
└── subsystem_config.json
productdefine/common
└── products
└── rk3568.json
```
## 开发步骤
请在源码目录中通过以下步骤创建“Hello World”应用程序:
1. 创建目录,编写业务代码。
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OHOS)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv)
{
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n\n");
printf("\n\t\tHello World!\n");
printf("\n\n");
}
```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
```
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // HELLOWORLD_H
```
2. 新建编译组织文件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示:
```
import("//build/ohos.gni") # 导入编译模板
ohos_executable("helloworld") { # 可执行模块
sources = [ # 模块源码
"src/helloworld.c"
]
include_dirs = [ # 模块依赖头文件目录
"include"
]
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内部依赖
part_name = "hello" # 所属部件名称,必选
install_enable = true # 是否默认安装(缺省默认不安装),可选
}
```
2. 新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
```
{
"name": "@ohos/hello",
"description": "Hello world example.",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "applications/sample/hello"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hello",
"subsystem": "sample",
"syscap": [],
"features": [],
"adapted_system_type": [ "mini", "small", "standard" ],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": []
}
}
}
```
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
3. 修改子系统配置文件。
在build/subsystem_config.json中添加新建的子系统的配置。
```
"sample": {
"path": "applications/sample/hello",
"name": "sample"
},
```
4. 修改产品配置文件。
在productdefine\common\products\rk3568.json中添加对应的hello部件,直接添加到原有部件后即可。
```
"usb:usb_manager_native":{},
"applications:prebuilt_hap":{},
"sample:hello":{},
"wpa_supplicant-2.9:wpa_supplicant-2.9":{},
```
# 运行
## 启动系统
镜像烧录完成重启开发板后,系统将会自动启动。开发板附带的屏幕呈现以下界面,表明系统已运行成功。
**图1** 系统启动效果图
![zh-cn_image_0000001226762222](figures/zh-cn_image_0000001226762222.jpg)
## 运行“Hello World”
1. 设备启动后打开串口工具(以putty为例),波特率设置为1500000,连接设备。
![zh-cn_image_0000001226602250](figures/zh-cn_image_0000001226602250.png)
2. 打开串口后,在任意目录(以设备根目录为例)下输入命令helloworld后回车,界面打印“Hello World!”,程序运行成功。
![zh-cn_image_0000001226922154](figures/zh-cn_image_0000001226922154.png)
# RK3568开发板
- **[编写“Hello World”程序](quickstart-ide-standard-running-rk3568-create.md)**
- **[编译](quickstart-ide-standard-running-rk3568-build.md)**
- **[烧录](quickstart-ide-standard-running-rk3568-burning.md)**
- **[运行](quickstart-ide-standard-running-rk3568-running.md)**
\ No newline at end of file
# 运行“Hello World”
- **[Hi3516开发板](quickstart-ide-standard-running-hi3516.md)**
- **[RK3568开发板](quickstart-ide-standard-running-rk3568.md)**
\ No newline at end of file
# 获取源码
在Ubuntu环境下通过以下步骤拉取OpenHarmony源码。
## 前提条件
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装git客户端和git-lfs。(上述工具已在搭建环境章节安装。如已安装,请忽略)
更新软件源:
```
sudo apt-get update
```
通过以下命令安装:
```
sudo apt-get install git git-lfs
```
4. 配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
5. 安装码云repo工具,可以执行如下命令。
```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
## 获取方式
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> Master主干为开发分支,开发者可通过Master主干获取最新特性。发布分支代码相对比较稳定,开发者可基于发布分支代码进行商用功能开发。
- **OpenHarmony主干代码获取**
方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
方式二:通过repo + https下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- **OpenHarmony发布分支代码获取**
OpenHarmony各个版本发布分支的源码获取方式请参考[Release-Notes](../../release-notes/Readme.md)
### 执行prebuilts
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
# 附录
- **[开发板介绍](quickstart-lite-board-introduction.md)**
- **[参考信息](quickstart-lite-reference.md)**
\ No newline at end of file
# 开发板介绍
- **[Hi3861开发板介绍](quickstart-lite-introduction-hi3861.md)**
- **[Hi3516开发板介绍](quickstart-lite-introduction-hi3516.md)**
\ No newline at end of file
# 使用Docker方式搭建编译环境<a name="ZH-CN_TOPIC_0000001171455558"></a>
- [安装Docker](#section7337134183512)
- [获取Docker环境](#section15666113905015)
使用安装包方式搭建Ubuntu编译环境步骤如下:
1. 安装Docker
2. 获取Docker环境:
想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/subsys-build-mini-lite.md)
## 安装Docker<a name="section7337134183512"></a>
- 请参考[官方指导](https://docs.docker.com/engine/install/)
## 获取Docker环境<a name="section15666113905015"></a>
>![](../public_sys-resources/icon-note.gif) **说明:**
>不同的源码版本要匹配使用对应版本的Docker环境,本文以Master主干代码为例进行说明。
OpenHarmony的Docker镜像托管在[HuaweiCloud SWR](https://console.huaweicloud.com/swr/?region=cn-south-1#/app/warehouse/warehouseMangeDetail/goldensir/openharmony-docker/openharmony-docker?type=ownImage)上。开发者可以通过该镜像在很大程度上简化编译前的环境配置。下文将介绍具体使用步骤。
1. 获取Docker镜像。
```
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
```
2. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。
```
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
```
# 开发环境准备<a name="ZH-CN_TOPIC_0000001193328250"></a>
- [系统要求](#zh-cn_topic_0000001072959308_section1865184385215)
- [安装DevEco Device Tool](#zh-cn_topic_0000001072959308_section86587531620)
DevEco Device Tool Ubuntu版本支持OpenHarmony源码开发、编译、烧录的一站式开发环境,因此,本章节为您介绍在Ubuntu环境下,如何搭建一套完整的可视化开发环境。
## 系统要求<a name="zh-cn_topic_0000001072959308_section1865184385215"></a>
- Ubuntu18及以上版本,内存推荐16 GB及以上。
- 系统的用户名不能含有中文字符。
- 只能使用普通用户角色搭建开发环境。
## 安装DevEco Device Tool<a name="zh-cn_topic_0000001072959308_section86587531620"></a>
DevEco Device Tool基于Visual Studio Code进行扩展,在Visual Studio Code上以插件方式运行,Visual Studio Code版本为1.60及以上。同时,DevEco Device Tool还依赖Python工具,并要求Python为3.8\~3.9版本。
在安装过程中,DevEco Device Tool会自动检查Visual Studio Code和Python,如果检测到Visual Studio Code、Python未安装或版本不符合要求,安装程序会自动安装Visual Studio Code和Python。
1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
```
ls -l /bin/sh
```
![](figures/zh-cn_image_0000001194078294.png)
2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。
```
sudo dpkg-reconfigure dash
```
![](figures/zh-cn_image_0000001238878219.png)
2. 下载[DevEco Device Tool 3.0 Beta2](https://device.harmonyos.com/cn/ide#download_beta)Linux版本,下载时,请先使用华为开发者帐号进行登录后下载。如未注册华为开发者账号,请先[注册](https://developer.huawei.com/consumer/cn/doc/start/registration-and-verification-0000001053628148)
3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。
1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.200.zip为软件包名称,请根据实际进行修改。
```
unzip devicetool-linux-tool-3.0.0.300.zip
```
2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。
```
chmod u+x devicetool-linux-tool-3.0.0.300.sh
```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。
>![](../public_sys-resources/icon-note.gif) **说明:**
>安装过程中,会自动检查Visual Studio Code和Python是否安装,且版本符合要求,其中Visual Studio Code为1.60及以上版本,Python为3.8\~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
```
sudo ./devicetool-linux-tool-3.0.0.300.sh -- --install-plugins
```
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![](figures/zh-cn_image_0000001239348791.png)
5. 安装完成后,在Ubuntu左下角的![](figures/zh-cn_image_0000001075566984.png)中,启动Visual Studio Code。
6. 启动Visual Studio Code,DevEco Device Tool运行依赖C/C++、CodeLLDB插件,请点击Visual Studio Code左侧的![](figures/button.png)按钮,分别搜索和安装C/C++、CodeLLDB插件。
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果在插件市场安装C/C++和CodeLLDB插件不成功,可手动下载插件后进行安装,具体请参考:[离线安装C/C++和CodeLLDB插件](https://device.harmonyos.com/cn/docs/documentation/guide/offline_plugin_install-0000001074376846)。
![](figures/deveco-device-tool-install-sucessful.png)
7. 重启Visual Studio Code,点击![](figures/zh-cn_image_0000001239226427.png)进入DevEco Device Tool工具界面。至此,DevEco Device Tool Ubuntu开发环境安装完成。![](figures/zh-cn_image_0000001194668634.png)
# 常见问题<a name="ZH-CN_TOPIC_0000001216935337"></a> # 常见问题
- [hb 安装过程中出现乱码、段错误](#section411894616119)
- [hb 安装过程中提示"cannot import 'sysconfig' from 'distutils'"](#section629417571626)
- [hb 安装过程中提示"module 'platform' has no attribute 'linux\_distribution'"](#section10871523332)
- [hb 安装过程中提示"Could not find a version that satisfies the requirement ohos-build"](#section47351657163213)
- [Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt\_pkg”](#section159891252236)
## hb 安装过程中出现乱码、段错误<a name="section411894616119"></a>
- **现象描述** - **[hb安装异常](quickstart-lite-faq-hb.md)**
执行“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="section629417571626"></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="section10871523332"></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="section47351657163213"></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
```
## Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt\_pkg”<a name="section159891252236"></a>
- **现象描述**
Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt\_pkg"
- **可能原因**
python3 apt安装兼容性问题。
- **解决办法**
执行如下命令重新安装python3-apt。
```
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
```
- **[编译异常](quickstart-lite-faq-compose.md)**
- **[烧录异常](quickstart-lite-faq-burning.md)**
\ No newline at end of file
# 搭建系统环境概述<a name="ZH-CN_TOPIC_0000001217013851"></a>
OpenHarmony可以使用DevEco Device Tool进行开发、编译、烧录、调测等。
当前DevEco Device Tool发布了Windows和Ubuntu两个版本,本文以Ubuntu版本进行相应开发介绍。
# 搭建轻量与小型系统环境<a name="ZH-CN_TOPIC_0000001216535391"></a> # 搭建轻量与小型系统环境
- **[搭建系统环境概述](quickstart-lite-env-setup-overview.md)**
- **[开发环境准备](quickstart-lite-env-prepare.md)** ## 系统要求
- **[获取源码](quickstart-lite-sourcecode-acquire.md)** - Windows系统要求:Windows10 64位系统。
- **[使用安装包方式搭建编译环境](quickstart-lite-package-environment.md)** - Ubuntu系统要求:Ubuntu18.04及以上版本,内存推荐16 GB及以上。
- **[使用Docker方式搭建编译环境](quickstart-lite-docker-environment.md)** - Windows系统和Ubuntu系统的用户名不能包含中文字符。
- **[常见问题](quickstart-lite-env-setup-faqs.md)** - Windows和Ubuntu上安装的DevEco Device Tool为3.0 Release版本。
## 安装必要的库和工具
编译OpenHarmony需要一些库和工具,可以通过以下步骤进行安装。
相应操作在Ubuntu环境中进行。
1. 使用如下apt-get命令安装后续操作所需的库和工具:
```
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales
```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中:
>
> - Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
>
> - Java要求java8及以上版本,此处以java8为例。
2. 将python 3.8设置为默认python版本。
查看python 3.8的位置:
```
which python3.8
```
将python和python3切换为python3.8:
```
sudo update-alternatives --install /usr/bin/python python {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
sudo update-alternatives --install /usr/bin/python3 python3 {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
```
## 安装DevEco Device Tool
通过Windows系统远程访问Ubuntu环境进行烧录等操作,需要先在Windows和Ubuntu下分别安装DevEco Device Tool。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> DevEco Device Tool是OpenHarmony的一站式开发工具,支持源码开发、编译、烧录,调测等,本文主要用其远端连接Ubuntu环境进行烧录和运行。
### 安装Window版本DevEco Device Tool
1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。
2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
3. 设置DevEco Device Tool的安装路径,建议安装到非系统盘符,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您已安装DevEco Device Tool 3.0 Beta2及以前的版本,则在安装新版本时,会先卸载旧版本,卸载过程中出现如下错误提示时,请点击“Ignore”继续安装,该错误不影响新版本的安装。
>
> ![zh-cn_image_0000001239275843](figures/zh-cn_image_0000001239275843.png)
![zh-cn_image_0000001270076961](figures/zh-cn_image_0000001270076961.png)
4. 根据安装向导提示,勾选要自动安装的软件。
1. 在弹出VSCode installation confirm页面,勾选“Install VScode 1.62.2automatically”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果检测到Visual Studio Code已安装,且版本为1.62及以上,则会跳过该步骤。
![zh-cn_image_0000001237801283](figures/zh-cn_image_0000001237801283.png)
2. 在弹出的Python select page选择“Download from Huawei mirror”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果系统已安装可兼容的Python版本(Python 3.8~3.9版本),可选择“Use one of compatible on your PC”。
![zh-cn_image_0000001193983334](figures/zh-cn_image_0000001193983334.png)
5. 在以下界面点击**Next**,进行软件下载和安装。
![zh-cn_image_0000001239634067](figures/zh-cn_image_0000001239634067.png)
6. 继续等待DevEco Device Tool安装向导自动安装DevEco Device Tool插件,直至安装完成,点击**Finish**,关闭DevEco Device Tool安装向导。
![zh-cn_image_0000001239650137](figures/zh-cn_image_0000001239650137.png)
7. 打开Visual Studio Code,进入DevEco Device Tool工具界面。至此,DevEco Device Tool Windows开发环境安装完成。
![zh-cn_image_0000001225760456](figures/zh-cn_image_0000001225760456.png)
### 安装Ubuntu版本DevEco Device Tool
1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
```
ls -l /bin/sh
```
![zh-cn_image_0000001226764302](figures/zh-cn_image_0000001226764302.png)
2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。
```
sudo dpkg-reconfigure dash
```
![zh-cn_image_0000001243641075](figures/zh-cn_image_0000001243641075.png)
2. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Linux版本。
3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。
1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.400.zip为软件包名称,请根据实际进行修改。
```
unzip devicetool-linux-tool-3.0.0.400.zip
```
2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
```
chmod u+x devicetool-linux-tool-3.0.0.400.sh
```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
```
sudo ./devicetool-linux-tool-3.0.0.300.sh
```
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png)
## 配置Windows远程访问Ubuntu环境
### 安装SSH服务并获取远程访问的IP地址
1. 在Ubuntu系统中,打开终端工具,执行如下命令安装SSH服务。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果执行该命令失败,提示openssh-server和openssh-client依赖版本不同,请根据CLI界面提示信息,安装openssh-client相应版本后(例如:sudo apt-get install openssh-client=1:8.2p1-4),再重新执行该命令安装openssh-server。
```
sudo apt-get install openssh-server
```
2. 执行如下命令,启动SSH服务。
```
sudo systemctl start ssh
```
3. 执行如下命令,获取当前用户的IP地址,用于Windows系统远程访问Ubuntu环境。
```
ifconfig
```
![zh-cn_image_0000001215737140](figures/zh-cn_image_0000001215737140.png)
### 安装Remote SSH
1. 打开Windows系统下的Visual Studio Code,点击![zh-cn_image_0000001239080359](figures/zh-cn_image_0000001239080359.png),在插件市场的搜索输入框中输入“remote-ssh”。
![zh-cn_image_0000001193920448](figures/zh-cn_image_0000001193920448.png)
2. 点击Remote-SSH的**Install**按钮,安装Remote-SSH。安装成功后,在**INSTALLED**下可以看到已安装Remote-SSH。
![zh-cn_image_0000001238880335](figures/zh-cn_image_0000001238880335.png)
### 远程连接Ubuntu环境
1. 打开Windows系统的Visual Studio Code,点击![zh-cn_image_0000001238760373](figures/zh-cn_image_0000001238760373.png),在REMOTE EXOPLORER页面点击+按钮。
![zh-cn_image_0000001215878922](figures/zh-cn_image_0000001215878922.png)
2. 在弹出的SSH连接命令输入框中输入“ssh _username_\@_ip_address_”,其中ip_address为要连接的远程计算机的IP地址,username为登录远程计算机的帐号。
![zh-cn_image_0000001215879750](figures/zh-cn_image_0000001215879750.png)
3. 在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
![zh-cn_image_0000001260519729](figures/zh-cn_image_0000001260519729.png)
4. 在SSH TARGETS中,找到远程计算机,点击![zh-cn_image_0000001194080414](figures/zh-cn_image_0000001194080414.png),打开远程计算机。
![zh-cn_image_0000001215720398](figures/zh-cn_image_0000001215720398.png)
5. 在弹出的输入框中,选择**Linux**,然后在选择**Continue**,然后输入登录远程计算机的密码,连接远程计算机 。
![zh-cn_image_0000001215897530](figures/zh-cn_image_0000001215897530.png)
连接成功后,等待在远程计算机.vscode-server文件夹下自动安装插件,安装完成后,根据界面提示在Windows系统下重新加载Visual Studio Code,便可以在Windows的DevEco Device Tool界面进行源码开发、编译、烧录等操作。
### 注册访问Ubuntu环境的公钥
在完成以上操作后,您就可以通过Windows远程连接Ubuntu环境进行开发了,但在使用过程中,需要您频繁的输入远程连接密码来进行连接。为解决该问题,您可以使用SSH公钥来进行设置。
1. 打开Git bash命令行窗口,执行如下命令,生成SSH公钥,请注意,在执行命令过程中,请根据界面提示进行操作。username和ip请填写连接Ubuntu系统时需要的参数。
```
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip
```
![zh-cn_image_0000001271532317](figures/zh-cn_image_0000001271532317.png)
2. 在Visual Studio Code中,点击远程连接的设置按钮,并选择打开config文件。
![zh-cn_image_0000001226034634](figures/zh-cn_image_0000001226034634.png)
3. 在config配置文件中添加SSK Key文件信息,如下图所示,然后保存即可。
![zh-cn_image_0000001270356233](figures/zh-cn_image_0000001270356233.png)
## 获取源码
在Ubuntu环境下通过以下步骤拉取OpenHarmony源码。
### 准备工作
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装git客户端和git-lfs。(上述工具已在安装必要的库和工具小节安装。如已安装,请忽略)
更新软件源:
```
sudo apt-get update
```
通过以下命令安装:
```
sudo apt-get install git git-lfs
```
4. 配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
5. 执行如下命令安装码云repo工具。
```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
### 获取源码
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> Master主干为开发分支,开发者可通过Master主干获取最新特性。发布分支代码相对比较稳定,开发者可基于发布分支代码进行商用功能开发。
- **OpenHarmony主干代码获取**
方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
方式二:通过repo + https下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- **OpenHarmony发布分支代码获取**
OpenHarmony各个版本发布分支的源码获取方式请参考[Release-Notes](../../release-notes/Readme.md)
### 执行prebuilts
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
## 安装编译工具
想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build.md)
相关操作在Ubuntu环境下进行。
### 安装hb
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如需安装代理,请参考[配置代理](../quick-start/quickstart-lite-reference.md#配置代理)。
1. 运行如下命令安装hb并更新至最新版本
```
pip3 install --user build/lite
```
2. 设置环境变量
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/.local/bin:$PATH
```
执行如下命令更新环境变量。
```
source ~/.bashrc
```
3. 在源码目录执行"hb -h",界面打印以下信息即表示安装成功:
```
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
```
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> - 可采用以下命令卸载hb:
>
> ```
> pip3 uninstall ohos-build
> ```
>
> - 若安装hb的过程中遇到问题,请参见下文[常见问题](../quick-start/quickstart-lite-faq-hb.md)进行解决。
### 安装LLVM(仅OpenHarmony_v1.x分支/标签需要)
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> 如果下载的源码为OpenHarmony_v1.x分支/标签,请按下面的步骤安装9.0.0版本的llvm。
>
> 如果下载的源码为Master及非OpenHarmony_v1.x分支/标签,可直接跳过本小节,hb会自动下载最新的llvm。
1. 打开Linux编译服务器终端。
2. [下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar)
3. 解压LLVM安装包至~/llvm路径下。
```
tar -zxvf llvm.tar -C ~/
```
4. 设置环境变量。
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/llvm/bin:$PATH
```
5. 生效环境变量。
```
source ~/.bashrc
```
# 烧录异常
## 烧写选择串口后提示“Error: Opening COMxx: Access denied”
- **现象描述**
点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。
**图1** 打开串口失败图
![zh-cn_image_0000001226634728](figures/zh-cn_image_0000001226634728.png)
- **可能原因**
串口已经被占用。
- **解决办法**
1. 按图依次选择下拉框,查找带有serial-xx的终端。
**图2** 查找是否存在占用串口的终端
![zh-cn_image_0000001226954644](figures/zh-cn_image_0000001226954644.png)
2. 点击标号中的垃圾桶图标,关闭串口。
**图3** 关闭串口终端
![zh-cn_image_0000001271234761](figures/zh-cn_image_0000001271234761.png)
3. 重新点击烧写,选择串口并开始烧写程序。
**图4** 重新启动烧写任务
![zh-cn_image_0000001271594765](figures/zh-cn_image_0000001271594765.png)
## Windows电脑与单板网络连接失败
- **现象描述**
点击烧写并选择串口后,无法获取文件。
**图5** 网络不通,单板无法获取文件图
![zh-cn_image_0000001271234757](figures/zh-cn_image_0000001271234757.png)
- **可能原因**
单板网络与Windows电脑不联通。
Windows电脑防火墙未允许Visual Studio Code联网。
- **解决方法**
1. 检查网线是否连接。
2. 点击Windows防火墙。
**图6** 网络防火墙设置图
![zh-cn_image_0000001226634732](figures/zh-cn_image_0000001226634732.png)
3. 点击“允许应用通过防火墙”。
**图7** 防火墙和网络保护界面图
![zh-cn_image_0000001271354749](figures/zh-cn_image_0000001271354749.png)
4. 查找Visual Studio Code应用。
**图8** 查找Visual Studio Code应用图
![zh-cn_image_0000001271234765](figures/zh-cn_image_0000001271234765.png)
5. 勾选Visual Studio Code的专用和公用网络的访问权限。
**图9** 允许Visual Studio Code应用访问网络
![zh-cn_image_0000001271474585](figures/zh-cn_image_0000001271474585.png)
## 烧写失败
- **现象描述**
点击烧写并选择串口后,出现无法烧写的情况。
- **可能原因**
安装IDE插件DevEco后未重启。
- **解决方法**
重启IDE。
## (Hi3516)串口无回显
- **现象描述**
串口显示已连接,重启单板后,回车无任何回显。
- **可能原因1**
串口连接错误。
- **解决办法**
修改串口号。
请查看设备管理器,确认连接单板的串口与终端中连接串口是否一致,若不一致,请按[串口访问失败的步骤](#烧写选择串口后提示error-opening-comxx-access-denied)修改串口号。
- **可能原因2**
单板U-boot被损坏。
- **解决办法**
烧写U-boot。
若上述步骤依旧无法连接串口,可能由于单板U-boot损坏,按下述步骤烧写U-boot。
1. 获取引导文件U-boot。
> ![icon-notice.gif](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/documentation/guide/ide-hi3516-upload-0000001052148681)/[Hi3518系列USB烧写步骤](https://device.harmonyos.com/cn/docs/documentation/guide/ide-hi3518-upload-0000001057313128#section93591711580)中描述的烧写方法,选择对应单板的U-boot文件进行烧写。
3. 烧写完成后,登录串口如下图所示。
**图10** U-boot烧写完成串口显示图
![zh-cn_image_0000001271234753](figures/zh-cn_image_0000001271234753.png)
# 编译异常
## Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt_pkg”
- **现象描述**
Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt_pkg"
- **可能原因**
python3 apt安装兼容性问题。
- **解决办法**
执行如下命令重新安装python3-apt。
```
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
```
## 编译构建过程中,提示找不到“python”
- **现象描述**
编译构建过程中出现以下错误:
```
-bash: /usr/bin/python: No such file or directory
```
- **可能原因**1
没有装python。
- **解决办法**
请使用如下命令安装Python,下方以Python3.8为例。
```
sudo apt-get install python3.8
```
- **可能原因2**
usr/bin目录下没有python软链接
![zh-cn_image_0000001271354745](figures/zh-cn_image_0000001271354745.png)
- **解决办法**
请运行以下命令添加软链接:
```
# cd /usr/bin/
# which python3
# ln -s /usr/local/bin/python3 python
# python --version
```
例:
![zh-cn_image_0000001227114636](figures/zh-cn_image_0000001227114636.png)
## 编译构建过程中,提示找不到“python3”
- **现象描述**
![zh-cn_image_0000001227114640](figures/zh-cn_image_0000001227114640.png)
- **可能原因**
没有装python3。
- **解决办法**
请使用如下命令安装Python3。
```
sudo apt-get install python3.8
```
## 安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”
- **现象描述**
安装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”
- **现象描述**
安装python3过程中出现以下错误:
```
-bash: make: command not found
```
- **可能原因**
环境中未安装“make”。
- **解决办法**
1. 通过命令“apt-get install make”在线安装。
2. 完成后,重新安装python3。
## 安装python3过程中,提示“No module named '_ctypes'”
- **现象描述**
安装python3过程中出现以下错误:
```
ModuleNotFoundError:No module named ‘_ctypes’
```
- **可能原因**
环境中未安装“libffi”和“libffi-devel”。
- **解决办法**
1. 通过命令“apt-get install libffi\* -y”,在线安装。
2. 完成后,重新安装python3。
## 编译构建过程中,提示“No module named 'Crypto'”
- **现象描述**
编译构建过程中出现以下错误:
```
ModuleNotFoundError: No module named 'Crypto'
```
- **可能原因**
环境中未安装“Crypto”。
- **解决办法**
方法1:通过命令“pip3 install Crypto”,在线安装。
方法2:离线安装。
通过网页[https://pypi.org/project/pycrypto/#files](https://pypi.org/project/pycrypto/#files),下载源码。
![zh-cn_image_0000001226794696](figures/zh-cn_image_0000001226794696.png)
将源码放置在Linux服务器中,解压,并安装“python3 setup.py install”。
完成上述安装后,重新构建。
## (Hi3861)编译构建过程中,提示“No module named 'ecdsa'”
- **现象描述**
编译构建过程中出现以下错误:
```
ModuleNotFoundError:No module named 'ecdsa'
```
- **可能原因**
环境中未安装“ecdsa”。
- **解决办法**
方法1:通过命令“pip3 install ecdsa”,在线安装。
方法2:离线安装
通过网页[https://pypi.org/project/ecdsa/#files](https://pypi.org/project/ecdsa/#files),下载安装包。
![zh-cn_image_0000001271594753](figures/zh-cn_image_0000001271594753.png)
将安装包放置Linux服务器中,并安装“pip3 install ecdsa-0.15-py2.py3-none-any.whl”。
完成上述安装后,重新构建。
## (Hi3861)编译构建过程中,提示“Could not find a version that satisfies the requirement six&gt;=1.9.0”
- **现象描述**
编译构建过程中出现以下错误:
```
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),下载安装包。
![zh-cn_image_0000001271474573](figures/zh-cn_image_0000001271474573.png)
将源码放置在Linux服务器中,并安装“pip3 install six-1.14.0-py2.py3-none-any.whl”。
完成上述安装后,重新构建。
## (Hi3861)编译构建过程中,提示找不到“-lgcc”
- **现象描述**
编译构建过程中出现以下错误:
```
riscv32-unknown-elf-ld: cannot find -lgcc
```
- **可能原因**
交叉编译器gcc_riscv32的PATH添加错误,如下,在"bin"后多添加了一个“/”,应该删除。
```
~/gcc_riscv32/bin/:/data/toolchain/
```
- **解决办法**
重新修改gcc_riscv32的PATH,将多余的“/”删除。
```
~/gcc_riscv32/bin:/data/toolchain/
```
## (Hi3861)安装kconfiglib时,遇到lsb_release错误
- **现象描述**
安装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"。
# hb安装异常
## hb安装过程中出现乱码、段错误
- **现象描述**
执行“python3 -m pip install --user ohos-build”出现乱码、段错误(segmentation fault)。
- **可能原因**
pip版本过低。
- **解决办法**
执行如下命令升级pip。
```
python3 -m pip install -U pip
```
## hb安装过程中提示"cannot import 'sysconfig' from 'distutils'"
- **现象描述**
执行“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'"
- **现象描述**
执行“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"
- **现象描述**
执行“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
```
# Hi3516开发板介绍<a name="ZH-CN_TOPIC_0000001171934020"></a> # Hi3516开发板介绍
- [简介](#section26131214194212)
- [开发板规格](#section15192203316533)
## 简介<a name="section26131214194212"></a> ## 简介
Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP\(Image Signal Processor\)、H.265视频压缩编码器,同时集成高性能NNIE引擎,使得Hi3516DV300在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。 Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP(Image Signal Processor)、H.265视频压缩编码器,同时集成高性能NNIE引擎,使得Hi3516DV300在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。
**图 1** Hi3516单板正面外观图<a name="fig11402183715219"></a> **图1** Hi3516单板正面外观图
![zh-cn_image_0000001271234773](figures/zh-cn_image_0000001271234773.png)
![](figures/3516正面.png) ## 开发板规格
## 开发板规格<a name="section15192203316533"></a> **表1** Hi3516开发板规格清单
**表 1** Hi3516开发板规格清单
<a name="table31714894311"></a>
<table><thead align="left"><tr id="row10171198194310"><th class="cellrowborder" valign="top" width="14.77%" id="mcps1.2.3.1.1"><p id="a2b235e9ed55f4338886788f140e648a0"><a name="a2b235e9ed55f4338886788f140e648a0"></a><a name="a2b235e9ed55f4338886788f140e648a0"></a>规格类型</p>
</th>
<th class="cellrowborder" valign="top" width="85.22999999999999%" id="mcps1.2.3.1.2"><p id="p9702458104014"><a name="p9702458104014"></a><a name="p9702458104014"></a>规格清单</p>
</th>
</tr>
</thead>
<tbody><tr id="row0171168114311"><td class="cellrowborder" valign="top" width="14.77%" headers="mcps1.2.3.1.1 "><p id="p1698185431418"><a name="p1698185431418"></a><a name="p1698185431418"></a><strong id="b127621861200"><a name="b127621861200"></a><a name="b127621861200"></a>处理器及内部存储</strong></p>
</td>
<td class="cellrowborder" valign="top" width="85.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul1147113537186"></a><a name="ul1147113537186"></a><ul id="ul1147113537186"><li>Hi3516DV300芯片</li><li>DDR3 1GB</li><li>eMMC4.5,8GB容量</li></ul>
</td>
</tr>
<tr id="row21721687435"><td class="cellrowborder" valign="top" width="14.77%" headers="mcps1.2.3.1.1 "><p id="p817216810435"><a name="p817216810435"></a><a name="p817216810435"></a><strong id="b1172016266246"><a name="b1172016266246"></a><a name="b1172016266246"></a>外部器件</strong></p>
</td>
<td class="cellrowborder" valign="top" width="85.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul179543016208"></a><a name="ul179543016208"></a><ul id="ul179543016208"><li>以太网口</li><li>音频视频<a name="ul5941311869"></a><a name="ul5941311869"></a><ul id="ul5941311869"><li>1路语音输入</li><li>1路单声道(AC_L)输出,接3W功放(LM4871)</li><li>MicroHDMI(1路HDMI 1.4)</li></ul>
</li><li>摄像头<a name="ul924263620"></a><a name="ul924263620"></a><ul id="ul924263620"><li>传感器IMX335</li><li>镜头M12,焦距4mm,光圈1.8</li></ul>
</li><li>显示屏<a name="ul101471711667"></a><a name="ul101471711667"></a><ul id="ul101471711667"><li>LCD连接器(2.35寸)</li><li>LCD连接器(5.5寸)</li></ul>
</li><li>外部器件及接口<a name="ul089255556"></a><a name="ul089255556"></a><ul id="ul089255556"><li>SD卡接口</li><li>JTAG/I2S 接口</li><li>ADC接口</li><li>舵机接口</li><li>Grove连接器</li><li>USB2.0(Type C)</li><li>功能按键3个,2个用户自定义按键,1个升级按键</li><li>LED指示灯,绿灯,红灯</li></ul>
</li></ul>
</td>
</tr>
</tbody>
</table>
| 规格类型 | 规格清单 |
| -------- | -------- |
| **处理器及内部存储** | -&nbsp;Hi3516DV300芯片<br/>-&nbsp;DDR3&nbsp;1GB<br/>-&nbsp;eMMC4.5,8GB容量 |
| **外部器件** | -&nbsp;以太网口<br/>-&nbsp;音频视频<br/>&nbsp;&nbsp;-&nbsp;1路语音输入<br/>&nbsp;&nbsp;-&nbsp;1路单声道(AC_L)输出,接3W功放(LM4871)<br/>&nbsp;&nbsp;-&nbsp;MicroHDMI(1路HDMI&nbsp;1.4)<br/>-&nbsp;摄像头<br/>&nbsp;&nbsp;-&nbsp;传感器IMX335<br/>&nbsp;&nbsp;-&nbsp;镜头M12,焦距4mm,光圈1.8<br/>-&nbsp;显示屏<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(2.35寸)<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(5.5寸)<br/>-&nbsp;外部器件及接口<br/>&nbsp;&nbsp;-&nbsp;SD卡接口<br/>&nbsp;&nbsp;-&nbsp;JTAG/I2S接口<br/>&nbsp;&nbsp;-&nbsp;ADC接口<br/>&nbsp;&nbsp;-&nbsp;舵机接口<br/>&nbsp;&nbsp;-&nbsp;Grove连接器<br/>&nbsp;&nbsp;-&nbsp;USB2.0(Type&nbsp;C)<br/>&nbsp;&nbsp;-&nbsp;功能按键3个,2个用户自定义按键,1个升级按键<br/>&nbsp;&nbsp;-&nbsp;LED指示灯,绿灯,红灯 |
# Hi3518开发板介绍<a name="ZH-CN_TOPIC_0000001171455554"></a>
- [简介](#section14815247616)
- [开发板规格](#section765112478446)
## 简介<a name="section14815247616"></a>
Hi3518EV300作为新一代智慧视觉处理SOC,集成新一代ISP\(Image Signal Processor\)以及H.265视频压缩编码器,同时采用先进低功耗工艺和低功耗架构设计,使其在低码率、高画质、低功耗等方面引领行业水平。
**图 1** Hi3518EV300单板正面外观图<a name="fig1187174485310"></a>
![](figures/Hi3518EV300单板正面外观图.png "Hi3518EV300单板正面外观图")
**图 2** Hi3518EV300单板背面外观图<a name="fig73195258113"></a>
![](figures/Hi3518正背面.png)
## 开发板规格<a name="section765112478446"></a>
**表 1** Hi3518开发板规格清单
<a name="t88739bdd7be845fab34087af8ab692f7"></a>
<table><thead align="left"><tr id="r7d87cdc7a09d445c824000228ae4a3b0"><th class="cellrowborder" valign="top" width="28.749999999999996%" id="mcps1.2.3.1.1"><p id="a8ea7b45c00a54e7abd826c3b2bc934dc"><a name="a8ea7b45c00a54e7abd826c3b2bc934dc"></a><a name="a8ea7b45c00a54e7abd826c3b2bc934dc"></a><strong id="b125815218314"><a name="b125815218314"></a><a name="b125815218314"></a>规格类型</strong></p>
</th>
<th class="cellrowborder" valign="top" width="71.25%" id="mcps1.2.3.1.2"><p id="aac42bd02e83846b187c02d3e976c0b09"><a name="aac42bd02e83846b187c02d3e976c0b09"></a><a name="aac42bd02e83846b187c02d3e976c0b09"></a><strong id="b1558219216311"><a name="b1558219216311"></a><a name="b1558219216311"></a>规格清单</strong></p>
</th>
</tr>
</thead>
<tbody><tr id="r9c0a0b643fd7495ab799c1eab9fbe1ec"><td class="cellrowborder" valign="top" width="28.749999999999996%" headers="mcps1.2.3.1.1 "><p id="a1a129c845a45444f9d0b7dcc3aabf4c3"><a name="a1a129c845a45444f9d0b7dcc3aabf4c3"></a><a name="a1a129c845a45444f9d0b7dcc3aabf4c3"></a>处理器内核</p>
</td>
<td class="cellrowborder" valign="top" width="71.25%" headers="mcps1.2.3.1.2 "><a name="ul12459548104218"></a><a name="ul12459548104218"></a><ul id="ul12459548104218"><li>海思3518EV300</li></ul>
</td>
</tr>
<tr id="row1527851224210"><td class="cellrowborder" valign="top" width="28.749999999999996%" headers="mcps1.2.3.1.1 "><p id="p1327911123424"><a name="p1327911123424"></a><a name="p1327911123424"></a>成像器件</p>
</td>
<td class="cellrowborder" valign="top" width="71.25%" headers="mcps1.2.3.1.2 "><a name="ul49841342134210"></a><a name="ul49841342134210"></a><ul id="ul49841342134210"><li>1/2.9 F23</li></ul>
</td>
</tr>
<tr id="r79097125b7f64c189f67ac280cdacae9"><td class="cellrowborder" valign="top" width="28.749999999999996%" headers="mcps1.2.3.1.1 "><p id="a2bf783139e304d0f9bfeefc56a55dc66"><a name="a2bf783139e304d0f9bfeefc56a55dc66"></a><a name="a2bf783139e304d0f9bfeefc56a55dc66"></a>外部接口</p>
</td>
<td class="cellrowborder" valign="top" width="71.25%" headers="mcps1.2.3.1.2 "><a name="u6a04d9aa22f6410f91bbcdaf902d0e5f"></a><a name="u6a04d9aa22f6410f91bbcdaf902d0e5f"></a><ul id="u6a04d9aa22f6410f91bbcdaf902d0e5f"><li>外置麦克风MIC</li><li>外置8Ω/1.5W扬声器</li></ul>
</td>
</tr>
<tr id="r785d104d71f6426aa9aab25d14a7581b"><td class="cellrowborder" valign="top" width="28.749999999999996%" headers="mcps1.2.3.1.1 "><p id="a59fb5f9ca2004dd2abeb636b2d4c04fa"><a name="a59fb5f9ca2004dd2abeb636b2d4c04fa"></a><a name="a59fb5f9ca2004dd2abeb636b2d4c04fa"></a>外部存储器接口</p>
</td>
<td class="cellrowborder" valign="top" width="71.25%" headers="mcps1.2.3.1.2 "><a name="u8f323b7322a14e109e2937b9660af0c4"></a><a name="u8f323b7322a14e109e2937b9660af0c4"></a><ul id="u8f323b7322a14e109e2937b9660af0c4"><li>TF卡<p id="p167481654192716"><a name="p167481654192716"></a><a name="p167481654192716"></a>最大支持128GB(通用FAT32格式)</p>
</li></ul>
</td>
</tr>
<tr id="rae3f8ef812894db3951e01b4a1b85438"><td class="cellrowborder" valign="top" width="28.749999999999996%" headers="mcps1.2.3.1.1 "><p id="a81cd5d5655a44c4cbfc0a35b9f65450a"><a name="a81cd5d5655a44c4cbfc0a35b9f65450a"></a><a name="a81cd5d5655a44c4cbfc0a35b9f65450a"></a>WLAN协议</p>
</td>
<td class="cellrowborder" valign="top" width="71.25%" headers="mcps1.2.3.1.2 "><a name="ul1311935314215"></a><a name="ul1311935314215"></a><ul id="ul1311935314215"><li>支持 802.11 b/g/n</li></ul>
</td>
</tr>
</tbody>
</table>
# Hi3861开发板介绍<a name="ZH-CN_TOPIC_0000001217013855"></a> # Hi3861开发板介绍
- [简介](#section19352114194115)
- [资源和约束](#section82610215014)
- [开发板规格](#section169054431017)
- [OpenHarmony关键特性](#section1317173016507)
## 简介<a name="section19352114194115"></a> ## 简介
Hi3861开发板是一片大约2cm\*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持OpenHarmony,并配套提供开放、易用的开发和调试运行环境。 Hi3861开发板是一片大约2cm\*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持OpenHarmony,并配套提供开放、易用的开发和调试运行环境。
**图 1** Hi3861开发板外观图<a name="fig1663155016295"></a> **图1** Hi3861开发板外观图
![](figures/Hi3861开发板外观图.png "Hi3861开发板外观图") ![zh-cn_image_0000001271474569](figures/zh-cn_image_0000001271474569.png)
另外,Hi3861开发板还可以通过与Hi3861底板连接,扩充自身的外设能力,底板如下图所示。 另外,Hi3861开发板还可以通过与Hi3861底板连接,扩充自身的外设能力,底板如下图所示。
**图 2** Hi3861底板外观图<a name="fig111746288192"></a> **图2** Hi3861底板外观图
![zh-cn_image_0000001226954632](figures/zh-cn_image_0000001226954632.png)
- RF电路包括功率放大器PA(Power Amplifier)、低噪声放大器LNA(Low Noise Amplifier)、RF Balun、天线开关以及电源管理等模块;支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。
![](figures/zh-cn_image_0000001171455564.png) - Hi3861 WLAN基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。
- RF电路包括功率放大器PA(Power Amplifier)、低噪声放大器LNA(Low Noise Amplifier)、RF Balun、天线开关以及电源管理等模块;支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。 - Hi3861芯片集成高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括SPI(Synchronous Peripheral Interface)、UART(Universal Asynchronous Receiver &amp; Transmitter)、I2C(The Inter Integrated Circuit)、PWM(Pulse Width Modulation)、GPIO(General Purpose Input/Output)和多路ADC(Analog to Digital Converter),同时支持高速SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达50MHz;芯片内置SRAM(Static Random Access Memory)和Flash,可独立运行,并支持在Flash上运行程序。
- Hi3861 WLAN基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。
- Hi3861芯片集成高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括SPI(Synchronous Peripheral Interface)、UART(Universal Asynchronous Receiver & Transmitter)、I2C(The Inter Integrated Circuit)、PWM(Pulse Width Modulation)、GPIO(General Purpose Input/Output)和多路ADC(Analog to Digital Converter),同时支持高速SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达50MHz;芯片内置SRAM(Static Random Access Memory)和Flash,可独立运行,并支持在Flash上运行程序。
- Hi3861芯片适用于智能家电等物联网智能终端领域。
**图 3** Hi3861功能框图<a name="f0d52fa2f3b094c688c805a373a6ec970"></a> - Hi3861芯片适用于智能家电等物联网智能终端领域。
**图3** Hi3861功能框图
![zh-cn_image_0000001226794688](figures/zh-cn_image_0000001226794688.png)
![](figures/zh-cn_image_0000001171455566.png)
## 资源和约束
## 资源和约束<a name="section82610215014"></a>
Hi3861开发板资源十分有限,整板共2MB FLASH,352KB RAM。在编写业务代码时,需注意资源使用效率。 Hi3861开发板资源十分有限,整板共2MB FLASH,352KB RAM。在编写业务代码时,需注意资源使用效率。
## 开发板规格<a name="section169054431017"></a>
**表 1** Hi3861开发板规格清单
<a name="t672b053e2ac94cbdb5244857fed4764e"></a>
<table><thead align="left"><tr id="r54b3810e43d24e1887c1d6a41394996b"><th class="cellrowborder" valign="top" width="18.060000000000002%" id="mcps1.2.3.1.1"><p id="a2b235e9ed55f4338886788f140e648a0"><a name="a2b235e9ed55f4338886788f140e648a0"></a><a name="a2b235e9ed55f4338886788f140e648a0"></a>规格类型</p>
</th>
<th class="cellrowborder" valign="top" width="81.94%" id="mcps1.2.3.1.2"><p id="a95c4ba2e404f4a45b65984746aaa56ab"><a name="a95c4ba2e404f4a45b65984746aaa56ab"></a><a name="a95c4ba2e404f4a45b65984746aaa56ab"></a>规格清单</p>
</th>
</tr>
</thead>
<tbody><tr id="r71f534ea66af4191b020408df5978f41"><td class="cellrowborder" valign="top" width="18.060000000000002%" headers="mcps1.2.3.1.1 "><p id="a0531f1bb62d5443880576cc5de23f2e6"><a name="a0531f1bb62d5443880576cc5de23f2e6"></a><a name="a0531f1bb62d5443880576cc5de23f2e6"></a>通用规格</p>
</td>
<td class="cellrowborder" valign="top" width="81.94%" headers="mcps1.2.3.1.2 "><a name="u2a0d06f28d454d30818ced9a0432211b"></a><a name="u2a0d06f28d454d30818ced9a0432211b"></a><ul id="u2a0d06f28d454d30818ced9a0432211b"><li>1×1 2.4GHz频段(ch1~ch14)</li><li>PHY支持IEEE 802.11b/g/n</li><li>MAC支持IEEE802.11 d/e/h/i/k/v/w</li></ul>
<a name="u8f31d142d92147789195a18b50836d2c"></a><a name="u8f31d142d92147789195a18b50836d2c"></a><ul id="u8f31d142d92147789195a18b50836d2c"><li>内置PA和LNA,集成TX/RX Switch、Balun等</li><li>支持STA和AP形态,作为AP时最大支持6 个STA接入</li><li>支持WFA WPA/WPA2 personal、WPS2.0</li><li>支持与BT/BLE芯片共存的2/3/4 线PTA方案</li><li>电源电压输入范围:2.3V~3.6V</li></ul>
<a name="ul114549122110"></a><a name="ul114549122110"></a><ul id="ul114549122110"><li>IO电源电压支持1.8V和3.3V</li></ul>
<a name="ue044275c53b84dd29dda674e16e72823"></a><a name="ue044275c53b84dd29dda674e16e72823"></a><ul id="ue044275c53b84dd29dda674e16e72823"><li>支持RF自校准方案</li><li>低功耗:<a name="ul0879143622219"></a><a name="ul0879143622219"></a><ul id="ul0879143622219"><li>Ultra Deep Sleep模式:5μA@3.3V</li><li>DTIM1:1.5mA@3.3V</li><li>DTIM3:0.8mA@3.3V</li></ul>
</li></ul>
</td>
</tr>
<tr id="rd9b56e759af34950b6887ca1bf5bb7cf"><td class="cellrowborder" valign="top" width="18.060000000000002%" headers="mcps1.2.3.1.1 "><p id="a0aed3860a78a4b50bedf60699afd3996"><a name="a0aed3860a78a4b50bedf60699afd3996"></a><a name="a0aed3860a78a4b50bedf60699afd3996"></a>PHY特性</p>
</td>
<td class="cellrowborder" valign="top" width="81.94%" headers="mcps1.2.3.1.2 "><a name="u6568aa052152432aa1f44372445ca634"></a><a name="u6568aa052152432aa1f44372445ca634"></a><ul id="u6568aa052152432aa1f44372445ca634"><li>支持IEEE802.11b/g/n单天线所有的数据速率</li><li>支持最大速率:72.2Mbps@HT20 MCS7</li><li>支持标准20MHz带宽和5M/10M窄带宽</li><li>支持STBC</li><li>支持Short-GI</li></ul>
</td>
</tr>
<tr id="r3563f9df9759486794952d46c5d2d03f"><td class="cellrowborder" valign="top" width="18.060000000000002%" headers="mcps1.2.3.1.1 "><p id="afd48a2d879dc4aada8b60bebb96523c7"><a name="afd48a2d879dc4aada8b60bebb96523c7"></a><a name="afd48a2d879dc4aada8b60bebb96523c7"></a>MAC特性</p>
</td>
<td class="cellrowborder" valign="top" width="81.94%" headers="mcps1.2.3.1.2 "><a name="uca57d799e7814925a5bf1b891335bd79"></a><a name="uca57d799e7814925a5bf1b891335bd79"></a><ul id="uca57d799e7814925a5bf1b891335bd79"><li>支持A-MPDU,A-MSDU</li><li>支持Blk-ACK</li><li>支持QoS,满足不同业务服务质量需求</li></ul>
</td>
</tr>
<tr id="r3e1c86e5f6cd4df0a1b30a08fb8481a2"><td class="cellrowborder" valign="top" width="18.060000000000002%" headers="mcps1.2.3.1.1 "><p id="a57086ea97a1b46cdb21953bf0fc22d94"><a name="a57086ea97a1b46cdb21953bf0fc22d94"></a><a name="a57086ea97a1b46cdb21953bf0fc22d94"></a>CPU子系统</p>
</td>
<td class="cellrowborder" valign="top" width="81.94%" headers="mcps1.2.3.1.2 "><a name="u612cc2cd0cfe40229263c4f506c0c69c"></a><a name="u612cc2cd0cfe40229263c4f506c0c69c"></a><ul id="u612cc2cd0cfe40229263c4f506c0c69c"><li>高性能 32bit微处理器,最大工作频率160MHz</li><li>内嵌SRAM 352KB、ROM 288KB</li><li>内嵌 2MB Flash</li></ul>
</td>
</tr>
<tr id="rae93c5236b084cd2a2c0d5c29027b40e"><td class="cellrowborder" valign="top" width="18.060000000000002%" headers="mcps1.2.3.1.1 "><p id="a9b14a9e95b3849278c332259d8add1b2"><a name="a9b14a9e95b3849278c332259d8add1b2"></a><a name="a9b14a9e95b3849278c332259d8add1b2"></a>外围接口</p>
</td>
<td class="cellrowborder" valign="top" width="81.94%" headers="mcps1.2.3.1.2 "><a name="u7c73ebffd89e4092bd65f0d878d59b22"></a><a name="u7c73ebffd89e4092bd65f0d878d59b22"></a><ul id="u7c73ebffd89e4092bd65f0d878d59b22"><li>1个SDIO接口、2个SPI接口、2个I2C接口、3个UART接口、15个GPIO接口、7路ADC输入、6路PWM、1个I2S接口(注:上述接口通过复用实现)</li><li>外部主晶体频率40M或24M</li></ul>
</td>
</tr>
<tr id="r18810701aafe42ad8d9a7d882730c210"><td class="cellrowborder" valign="top" width="18.060000000000002%" headers="mcps1.2.3.1.1 "><p id="ae8f47db913724e458c265e858409950b"><a name="ae8f47db913724e458c265e858409950b"></a><a name="ae8f47db913724e458c265e858409950b"></a>其他信息</p>
</td>
<td class="cellrowborder" valign="top" width="81.94%" headers="mcps1.2.3.1.2 "><a name="u25f28919a3b044c5af50f9f5f5616083"></a><a name="u25f28919a3b044c5af50f9f5f5616083"></a><ul id="u25f28919a3b044c5af50f9f5f5616083"><li>封装:QFN-32,5mm×5mm</li><li>工作温度:-40℃ ~ +85℃</li></ul>
</td>
</tr>
</tbody>
</table>
## OpenHarmony关键特性<a name="section1317173016507"></a>
OpenHarmony基于Hi3861平台提供了多种开放能力,提供的关键组件如下表所示。 ## 开发板规格
**表1** Hi3861开发板规格清单
| 规格类型 | 规格清单 |
| -------- | -------- |
| 通用规格 | -&nbsp;1×1&nbsp;2.4GHz频段(ch1~ch14)<br/>-&nbsp;PHY支持IEEE&nbsp;802.11b/g/n<br/>-&nbsp;MAC支持IEEE802.11&nbsp;d/e/h/i/k/v/w<br/>-&nbsp;内置PA和LNA,集成TX/RX&nbsp;Switch、Balun等<br/>-&nbsp;支持STA和AP形态,作为AP时最大支持6&nbsp;个STA接入<br/>-&nbsp;支持WFA&nbsp;WPA/WPA2&nbsp;personal、WPS2.0<br/>-&nbsp;支持与BT/BLE芯片共存的2/3/4&nbsp;线PTA方案<br/>-&nbsp;电源电压输入范围:2.3V~3.6V<br/>-&nbsp;IO电源电压支持1.8V和3.3V<br/>-&nbsp;支持RF自校准方案<br/>-&nbsp;低功耗:<br/>&nbsp;&nbsp;-&nbsp;Ultra&nbsp;Deep&nbsp;Sleep模式:5μA\@3.3V<br/>&nbsp;&nbsp;-&nbsp;DTIM1:1.5mA\@3.3V<br/>&nbsp;&nbsp;-&nbsp;DTIM3:0.8mA\@3.3V |
| PHY特性 | -&nbsp;支持IEEE802.11b/g/n单天线所有的数据速率<br/>-&nbsp;支持最大速率:72.2Mbps\@HT20&nbsp;MCS7<br/>-&nbsp;支持标准20MHz带宽和5M/10M窄带宽<br/>-&nbsp;支持STBC<br/>-&nbsp;支持Short-GI |
| MAC特性 | -&nbsp;支持A-MPDU,A-MSDU<br/>-&nbsp;支持Blk-ACK<br/>-&nbsp;支持QoS,满足不同业务服务质量需求 |
| CPU子系统 | -&nbsp;高性能&nbsp;32bit微处理器,最大工作频率160MHz<br/>-&nbsp;内嵌SRAM&nbsp;352KB、ROM&nbsp;288KB<br/>-&nbsp;内嵌&nbsp;2MB&nbsp;Flash |
| 外围接口 | -&nbsp;1个SDIO接口、2个SPI接口、2个I2C接口、3个UART接口、15个GPIO接口、7路ADC输入、6路PWM、1个I2S接口(注:上述接口通过复用实现)<br/>-&nbsp;外部主晶体频率40M或24M |
| 其他信息 | -&nbsp;封装:QFN-32,5mm×5mm<br/>-&nbsp;工作温度:-40℃&nbsp;&nbsp;+85℃ |
**表 2** OpenHarmony关键组件列表
<a name="table1659013482514"></a>
<table><thead align="left"><tr id="row1368918486512"><th class="cellrowborder" valign="top" width="22.63%" id="mcps1.2.3.1.1"><p id="p668914812516"><a name="p668914812516"></a><a name="p668914812516"></a>组件名</p>
</th>
<th class="cellrowborder" valign="top" width="77.37%" id="mcps1.2.3.1.2"><p id="p9689154855115"><a name="p9689154855115"></a><a name="p9689154855115"></a>能力介绍</p>
</th>
</tr>
</thead>
<tbody><tr id="row868910487517"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p13689248165114"><a name="p13689248165114"></a><a name="p13689248165114"></a>WLAN服务</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p11689144816511"><a name="p11689144816511"></a><a name="p11689144816511"></a>提供WLAN服务能力。包括:station和hotspot模式的连接、断开、状态查询等。</p>
</td>
</tr>
<tr id="row568964819514"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p5689548175113"><a name="p5689548175113"></a><a name="p5689548175113"></a>模组外设控制</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p176893480517"><a name="p176893480517"></a><a name="p176893480517"></a>提供操作外设的能力。包括:I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。</p>
</td>
</tr>
<tr id="row143420119366"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p1737117331480"><a name="p1737117331480"></a><a name="p1737117331480"></a>分布式软总线</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p1037123314485"><a name="p1037123314485"></a><a name="p1037123314485"></a><span id="text1538015458506"><a name="text1538015458506"></a><a name="text1538015458506"></a>OpenHarmony</span>分布式网络中,提供设备被发现、数据传输的能力。</p>
</td>
</tr>
<tr id="row1383559163617"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p2379233113914"><a name="p2379233113914"></a><a name="p2379233113914"></a>设备安全绑定</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p5809349205012"><a name="p5809349205012"></a><a name="p5809349205012"></a>提供在设备互联场景中,数据在设备之间的安全流转的能力。</p>
</td>
</tr>
<tr id="row54428163612"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p3775133619587"><a name="p3775133619587"></a><a name="p3775133619587"></a>基础加解密</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p11304151710555"><a name="p11304151710555"></a><a name="p11304151710555"></a>提供密钥管理、加解密等能力。</p>
</td>
</tr>
<tr id="row12690548135110"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p176901648115111"><a name="p176901648115111"></a><a name="p176901648115111"></a>系统服务管理</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p1181353173111"><a name="p1181353173111"></a><a name="p1181353173111"></a>系统服务管理基于面向服务的架构,提供了<span id="text10778141516322"><a name="text10778141516322"></a><a name="text10778141516322"></a>OpenHarmony</span>统一化的系统服务开发框架。</p>
</td>
</tr>
<tr id="row1657310121587"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p730664220114"><a name="p730664220114"></a><a name="p730664220114"></a>启动引导</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p39689262310"><a name="p39689262310"></a><a name="p39689262310"></a>提供系统服务的启动入口标识。在系统服务管理启动时,调用boostrap标识的入口函数,并启动系统服务。</p>
</td>
</tr>
<tr id="row15763812165616"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p17171118128"><a name="p17171118128"></a><a name="p17171118128"></a>系统属性</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p12763912125617"><a name="p12763912125617"></a><a name="p12763912125617"></a>提供获取与设置系统属性的能力。</p>
</td>
</tr>
<tr id="row121911343566"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p1097517270361"><a name="p1097517270361"></a><a name="p1097517270361"></a>基础库</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p6848159569"><a name="p6848159569"></a><a name="p6848159569"></a>提供公共基础库能力。包括:文件操作、KV存储管理等。</p>
</td>
</tr>
<tr id="row144219192579"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p8333104843714"><a name="p8333104843714"></a><a name="p8333104843714"></a>DFX</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p65111025155711"><a name="p65111025155711"></a><a name="p65111025155711"></a>提供DFX能力。包括:流水日志、时间打点等。</p>
</td>
</tr>
<tr id="row16159522125710"><td class="cellrowborder" valign="top" width="22.63%" headers="mcps1.2.3.1.1 "><p id="p18835202765718"><a name="p18835202765718"></a><a name="p18835202765718"></a>XTS</p>
</td>
<td class="cellrowborder" valign="top" width="77.37%" headers="mcps1.2.3.1.2 "><p id="p3835192795717"><a name="p3835192795717"></a><a name="p3835192795717"></a>提供<span id="text1482414523409"><a name="text1482414523409"></a><a name="text1482414523409"></a>OpenHarmony</span>生态认证测试套件的集合能力。</p>
</td>
</tr>
</tbody>
</table>
## OpenHarmony关键特性
OpenHarmony基于Hi3861平台提供了多种开放能力,提供的关键组件如下表所示。
**表2** OpenHarmony关键组件列表
| 组件名 | 能力介绍 |
| -------- | -------- |
| WLAN服务 | 提供WLAN服务能力。包括:station和hotspot模式的连接、断开、状态查询等。 |
| 模组外设控制 | 提供操作外设的能力。包括:I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。 |
| 分布式软总线 | 在OpenHarmony分布式网络中,提供设备被发现、数据传输的能力。 |
| 设备安全绑定 | 提供在设备互联场景中,数据在设备之间的安全流转的能力。 |
| 基础加解密 | 提供密钥管理、加解密等能力。 |
| 系统服务管理 | 系统服务管理基于面向服务的架构,提供了OpenHarmony统一化的系统服务开发框架。 |
| 启动引导 | 提供系统服务的启动入口标识。在系统服务管理启动时,调用boostrap标识的入口函数,并启动系统服务。 |
| 系统属性 | 提供获取与设置系统属性的能力。 |
| 基础库 | 提供公共基础库能力。包括:文件操作、KV存储管理等。 |
| DFX | 提供DFX能力。包括:流水日志、时间打点等。 |
| XTS | 提供OpenHarmony生态认证测试套件的集合能力。 |
# 附录<a name="ZH-CN_TOPIC_0000001216693903"></a>
- **[Hi3861开发板介绍](quickstart-lite-introduction-hi3861.md)**
- **[Hi3516开发板介绍](quickstart-lite-introduction-hi3516.md)**
- **[Hi3518开发板介绍](quickstart-lite-introduction-hi3518.md)**
# 轻量与小型系统入门概述<a name="ZH-CN_TOPIC_0000001216935335"></a> # 轻量与小型系统入门概述
OpenHarmony轻量和小型系统适用于内存较小的IOT设备。通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。
轻量和小型系统的开发有以下两种方法: ## 简介
- 用Windows环境进行开发和烧录,使用Linux环境进行编译。
- 统一使用Linux环境进行开发、编译和烧录。
因目前Windows系统不支持编译,暂时无法全部使用Windows环境进行开发,开发者可根据使用习惯选择合适的开发方法 OpenHarmony轻量和小型系统适用于内存较小的IOT设备(参考内存≥128KiB)。通过本文,开发者可以快速熟悉OpenHarmony标准系统的环境搭建、编译、烧录、调测以及运行“Hello World”等
本文将介绍第二种方法,下方所有操作均在Linux环境下进行。
本文选取了三款典型开发板:Hi3861 WLAN模组、Hi3516DV300、Hi3518EV300,并基于上述三款开发板进行开发介绍。开发板的具体外观和规格可参见[本文附录](quickstart-lite-introduction-hi3861.md#section19352114194115),开发者可根据需要自行购买的开发板。 考虑到开发者的开发习惯,OpenHarmony为开发者提供了以下两种入门指导:
轻量和小型系统快速入门流程如下图所示,其中搭建编译环境环节可根据实际情况选择Docker方式或安装包方式其中一种即可。
>![](../public_sys-resources/icon-note.gif) **说明:** - IDE方式:完全采用IDE(Deveco Device Tool)进行一站式开发,编译依赖工具的安装及编译、烧录、运行都通过IDE进行操作。
>Docker环境已经封装了相关编译工具,开发者在使用该Docker环境时可以省去Ubuntu编译环境及开发板环境的的搭建操作。
**图 1** 轻量和小型系统快速入门流程<a name="fig642616212336"></a> - 安装包方式:通过命令行进行编译依赖工具的下载安装,编译操作也通过命令实现。烧录、运行等操作使用IDE。OpenHarmony还为开发者提供了[Docker环境](../get-code/gettools-acquire.md),在很大程度上简化了编译前的环境配置,习惯使用安装包方式的开发者也可以选择Docker环境进行编译 。
![](figures/轻量和小型系统快速入门流程.png "轻量和小型系统快速入门流程")
本文采用安装包方式进行介绍,习惯使用Deveco Device Tool的开发者可参考[标准系统快速入门(IDE方式)](../quick-start/quickstart-ide-lite.md)
## 开发环境
开发者通常习惯采用Windows+Ubuntu环境进行OpenHarmony开发:
- Windows:用于源码开发、烧录等。
- Ubuntu:用于源码编译。
本文将介绍如何基于Windows+Ubuntu环境进行OpenHarmony的开发。
## 开发板
本文基于以下两款典型开发板进行开发介绍 :Hi3861 WLAN模组、Hi3516DV300。开发板的具体外观和规格可参见[本文附录](../quick-start/quickstart-lite-board-introduction.md),开发者可根据需要自行购买开发板。
## 开发流程
轻量和小型系统快速入门流程如下图所示。
**图1** 轻量和小型系统快速入门开发流程
![zh-cn_image_0000001227114628](figures/zh-cn_image_0000001227114628.png)
# 使用安装包方式搭建编译环境<a name="ZH-CN_TOPIC_0000001171615528"></a>
使用安装包方式搭建Ubuntu编译环境步骤如下:
1. 安装必要的库和工具:编译所需的必要工具和库(如打包、镜像制作等)。
2. 执行prebuilts。
3. 安装hb:OpenHarmony编译构建命令行工具。
4. 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\)
想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/subsys-build-mini-lite.md)
## 安装必要的库和工具<a name="section108201740181219"></a>
1. 使用如下apt-get命令安装后续操作所需的库和工具:
```
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales
```
> ![](../public_sys-resources/icon-note.gif) **说明:**
> 以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中:
>
> - Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
>
> - java要求java8及以上版本,此处以java8为例。
2. 将python 3.8设置为默认python版本。
查看python 3.8的位置:
```
which python3.8
```
将python和python3切换为python3.8:
```
sudo update-alternatives --install /usr/bin/python python {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
sudo update-alternatives --install /usr/bin/python3 python3 {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
```
## 执行prebuilts
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
## 安装hb<a name="section15794154618411"></a>
1. 运行如下命令安装hb并更新至最新版本
```
pip3 install --user build/lite
```
2. 设置环境变量
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/.local/bin:$PATH
```
执行如下命令更新环境变量。
```
source ~/.bashrc
```
3. 在源码目录执行"hb -h",界面打印以下信息即表示安装成功:
```
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
```
>![](../public_sys-resources/icon-notice.gif) **须知:**
>若安装hb的过程中遇到问题,请参见下文[常见问题](quickstart-lite-env-setup-faqs.md)进行解决。
## 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\)<a name="section711117144296"></a>
>![](../public_sys-resources/icon-notice.gif) **须知:**
>如果下载的源码为OpenHarmony\_v1.x分支/标签, 请按下面的步骤安装9.0.0版本的llvm。
>如果下载的源码为Master及非OpenHarmony\_v1.x分支/标签,可直接跳过本小节,hb会自动下载最新的llvm。
1. 打开Linux编译服务器终端。
2. [下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar)
3. 解压LLVM安装包至\~/llvm路径下。
```
tar -zxvf llvm.tar -C ~/
```
4. 设置环境变量。
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/llvm/bin:$PATH
```
5. 生效环境变量。
```
source ~/.bashrc
```
# 参考信息
## 使用build.sh脚本编译源码
1. 进入源码根目录,执行如下命令进行版本编译。
```
./build.sh --product-name name --ccache
```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> _name_为产品名称,例如Hi3516DV300、rk3568等。
2. 检查编译结果。编译完成后,log中显示如下:
```
post_process
=====build name successful.
```
编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。
## 配置代理
### 配置Python代理
1. 新建代理配置文件。
```
mkdir ~/.pipvim ~/.pip/pip.conf
```
2. 在文件中写入如下代理信息并保存退出。
```
[global]
index-url = http://代理网址
trusted-host = 可信任的镜像地址
timeout = 120
```
### 配置NPM代理
1. 新建代理配置文件。
```
vim ~/.npmrc
```
2. 在文件中写入如下代理信息并保存退出。
```
registry=http://代理网址
strict-ssl=false
```
3. 将以下内容添加到.bashrc中并保存退出。
```
export NPM_REGISTRY=http://代理网址
source .bashrc
```
# 获取源码<a name="ZH-CN_TOPIC_0000001177086414"></a>
## 前提条件<a name="section21887149017"></a>
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装[git客户端](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
4. 安装码云repo工具,可以执行如下命令。
```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
## 操作步骤<a name="section349724435812"></a>
>![](../public_sys-resources/icon-note.gif) **说明:**
>Master主干为开发分支,开发者可通过Master主干获取最新特性。发布版本代码相对比较稳定,开发者可基于发布版本代码进行商用功能开发。
- **OpenHarmony主干代码获取**
方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
方式二:通过repo + https下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- **OpenHarmony发布版本代码获取**
OpenHarmony发布版本获取源码方式请参考[Release-Notes](../get-code/../../release-notes/OpenHarmony-v3.0.2-LTS.md)。
...@@ -13,19 +13,8 @@ ...@@ -13,19 +13,8 @@
``` ```
applications/sample/hello applications/sample/hello
│── BUILD.gn │── BUILD.gn
│── include └── src
│ └── helloworld.h └── helloworld.c
│── src
│ └── helloworld.c
├── bundle.json
│── test
│ └── moduletest
│ └── unittest
productdefine/common
└── products
└── Hi3516DV300.json
``` ```
...@@ -33,127 +22,114 @@ productdefine/common ...@@ -33,127 +22,114 @@ productdefine/common
请在源码目录中通过以下步骤创建“Hello World”应用程序: 请在源码目录中通过以下步骤创建“Hello World”应用程序:
1. 新建目录及源码。
1. 创建目录,编写业务代码。 新建**applications/sample/hello/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OH)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
``` ```
#include <stdio.h> #include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n\n");
printf("\n\t\tHello World!\n");
printf("\n\n"); printf("\n\n");
printf("\n\t\tHello OHOS!\n");
printf("\n\n\n");
return 0;
} }
``` ```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。 2. 新建编译组织文件。
新建**applications/sample/hello/BUILD.gn**文件,内容如下所示:
``` ```
#ifndef HELLOWORLD_H import("//build/lite/config/component/lite_component.gni")
#define HELLOWORLD_H lite_component("hello-OHOS") {
#ifdef __cplusplus features = [ ":helloworld" ]
#if __cplusplus }
extern "C" { executable("helloworld") {
#endif output_name = "helloworld"
#endif sources = [ "src/helloworld.c" ]
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
} }
#endif
#endif
#endif // HELLOWORLD_H
``` ```
2. 新建编译组织文件。 3. 添加新组件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示: 修改文件**build/lite/components/applications.json**,添加组件hello_world_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
import("//build/ohos.gni") # 导入编译模板 ```
ohos_executable("helloworld") { # 可执行模块 {
sources = [ # 模块源码 "components": [
"src/helloworld.c" {
] "component": "camera_sample_communication",
include_dirs = [ # 模块依赖头文件目录 "description": "Communication related samples.",
"include" "optional": "true",
] "dirs": [
cflags = [] "applications/sample/camera/communication"
cflags_c = [] ],
cflags_cc = [] "targets": [
ldflags = [] "//applications/sample/camera/communication:sample"
configs = [] ],
deps =[] # 部件内部依赖 "rom": "",
"ram": "",
part_name = "sample" # 所属部件名称,必选 "output": [],
install_enable = true # 是否默认安装(缺省默认不安装),可选 "adapted_kernel": [ "liteos_a" ],
} "features": [],
``` "deps": {
2. 新建applications/sample/bundle.json文件,添加sample部件描述,内容如下所示。 "components": [],
"third_party": []
``` }
},
##start##
{
"component": "hello_world_app",
"description": "hello world samples.",
"optional": "true",
"dirs": [
"applications/sample/hello"
],
"targets": [
"//applications/sample/hello:hello-OHOS"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##end##
{ {
"name": "@ohos/hello", "component": "camera_sample_app",
"description": "Hello world example.", "description": "Camera related samples.",
"version": "3.1", "optional": "true",
"license": "Apache License 2.0", "dirs": [
"publishAs": "code-segment", "applications/sample/camera/launcher",
"segment": { "applications/sample/camera/cameraApp",
"destPath": "applications/sample/hello" "applications/sample/camera/setting",
}, "applications/sample/camera/gallery",
"dirs": {}, "applications/sample/camera/media"
"scripts": {}, ],
"component": { ```
"name": "hello",
"subsystem": "applications", 4. 修改单板配置文件。
"syscap": [], 修改文件**vendor/hisilicon/hispark_taurus/config.json**,新增hello_world_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
"features": [],
"adapted_system_type": [
"mini",
"small",
"standard"
],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": [
"//applications/sample/hello/test:moduletest",
"//applications/sample/hello/test:unittest"
]
}
}
}
```
bundle.json文件包含两个部分,第一部分说明该子系统的名称,component定义该子系统包含的部件,要添加一个部件,需要把该部件对应的内容添加进component中去。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
3. 修改产品配置文件。
在productdefine\common\products\Hi3516DV300.json中添加对应的hello部件,直接添加到原有部件后即可。
``` ```
"usb:usb_manager_native":{}, {
"applications:prebuilt_hap":{}, "subsystem": "applications",
"applications:hello":{}, "components": [
"wpa_supplicant-2.9:wpa_supplicant-2.9":{}, { "component": "camera_sample_app", "features":[] },
{ "component": "camera_sample_ai", "features":[] },
##start##
{ "component": "hello_world_app", "features":[] },
##end##
{ "component": "camera_screensaver_app", "features":[] }
]
},
``` ```
# 编译<a name="ZH-CN_TOPIC_0000001171615520"></a> # 编译
下方将介绍如何使用Hi3516开发板进行编译。使用安装包方式与docker方式搭建Ubuntu编译环境,编译步骤相同。
1. 请进入源码根目录,执行如下命令进行编译: OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-lite-reference.md#使用buildsh脚本编译源码)
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果使用Docker方式搭建编译环境,请在[获取Docker环境](quickstart-lite-docker-environment.md#section15666113905015)中进入的Docker构建环境中,执行如下命令进行编译。
``` 请进入源码根目录,执行如下命令进行编译:
hb set(设置编译路径)
.(选择当前路径)
选择ipcamera_hispark_taurus并回车
hb build -f(执行编译)
```
**图 1** Hi3516编译设置图例-Docker方式<a name="fig1355483082115"></a>
![](figures/Hi3516编译设置图例-Docker方式.png "Hi3516编译设置图例-Docker方式")
2. 编译结束后,出现“ipcamera\_hispark\_taurus build success”字样,则证明构建成功。 1. 设置编译路径。
```
hb set
```
>![](../public_sys-resources/icon-notice.gif) **须知:** 2. 选择当前路径。
>烧录相关文件获取路径:
>结果文件:out/hispark\_taurus/ipcamera\_hispark\_taurus。 ```
>U-boot文件:device/hisilicon/hispark\_taurus/sdk\_liteos/uboot/out/boot/u-boot-hi3516dv300.bin。 .
```
3. 在hisilicon下选择ipcamera_hispark_taurus并回车。
4. 执行编译。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 单独编译一个部件(例如hello),可使用“hb build -T _目标名称_”进行编译。
>
> - 增量编译整个产品,可使用“hb build”进行编译。
>
> - 完整编译整个产品,可使用“hb build -f”进行编译。
>
> 此处以完整编译整个产品为例进行说明。
```
hb build -f
```
**图1** Hi3516编译设置图例
![zh-cn_image_0000001271594749](figures/zh-cn_image_0000001271594749.png)
5. 编译结束后,出现“build success”字样,则证明构建成功。
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> 烧录相关文件获取路径:
>
> - 编译结果文件及日志文件:out/hispark_taurus/ipcamera_hispark_taurus。
>
> - U-boot文件:device/board/hisilicon/hispark_taurus/uboot/out/boot/u-boot-hi3516dv300.bin。
# 烧录<a name="ZH-CN_TOPIC_0000001171774080"></a> # 烧录
- [前提条件](#section762111572589)
- [使用网口烧录](#section12323175612487)
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率 Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采用USB方式进行烧录。相关操作在Windows环境下进行
DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334.png)图标打开DevEco Device Tool。
Hi3516开发板的代码烧录支持USB烧录、网口烧录和串口烧录三种方式。此处仅以网口烧录为例进行说明,其它方式请参考[Hi3516DV300开发板烧录](https://device.harmonyos.com/cn/docs/documentation/guide/ide-hi3516-upload-0000001052148681#section1760842019292) ### 导入源码
## 前提条件<a name="section762111572589"></a> 在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-lite-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。
1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。 1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001171426014](figures/zh-cn_image_0000001171426014.png)
![](figures/import-project.png) 2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import** ![zh-cn_image_0000001271791385](figures/zh-cn_image_0000001271791385.png)
![](figures/import-project-confirm.png) 3. 如果您打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击**Import**
![zh-cn_image_0000001135394334](figures/zh-cn_image_0000001135394334.png)
3. MCU选择HiSilicom\_Arm下的Hi3516DV300,Board选择hi3516dv300,Framework选择Hb,然后点击**Import**完成导入。 4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
![](figures/hi3516-import-projects.png) 5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择ipcamera_hispark_taurus。
![zh-cn_image_0000001227711014](figures/zh-cn_image_0000001227711014.png)
6. 点击**Open**打开工程或源码。
## 使用网口烧录<a name="section12323175612487"></a>
1. 请连接好电脑和待烧录开发板,需要同时连接串口、网口和电源,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3516-0000001152041033) ### 烧录
2. 查看并记录对应的串口号。
>![](../public_sys-resources/icon-note.gif) **说明:** 完成源码导入后,通过以下步骤进行烧录:
>如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
Windows系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号 1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
![](figures/record-the-serial-port-number.png) 2. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
![](figures/Snap22.png) > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 3. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001216516128](figures/zh-cn_image_0000001216516128.png)
![](figures/zh-cn_image_0000001222969587.png) > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
4. 在“hi3516dv300”页签,设置烧录选项,包括upload\_partitions、upload\_port和upload\_protocol。 4. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
- upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。 5. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload\_port:选择已查询的串口号。 - upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。
- upload\_protocol:选择烧录协议,固定选择“hiburn-net”。 - upload_port:选择已查询到的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
![](figures/zh-cn_image_0000001177474882.png) ![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png)
5. 检查和设置连接开发板后的网络适配器的IP地址信息,设置方法请参考[设置Hi3516DV300网口烧录的IP地址信息](https://device.harmonyos.com/cn/docs/documentation/guide/set_ipaddress-0000001141825075) 6. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。
6. 设置网口烧录的IP地址信息,设置如下选项: 1. 在“hi3516dv300_fastboot”页签,在New Option选项中选择需要修改的项,例如partition_bin(烧录文件路径)、partition_addr(烧录文件起始地址)、partition_length(烧录文件分区长度)等。
![zh-cn_image_0000001198889702](figures/zh-cn_image_0000001198889702.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
- upload\_net\_server\_ip:选择步骤6中设置的IP地址信息。例如192.168.1.2 ![zh-cn_image_0000001243290907](figures/zh-cn_image_0000001243290907.png)
- upload\_net\_client\_mask:设置开发板的子网掩码,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如255.255.255.0 3. 按照相同的方法修改kernel、rootfs和userfs的烧录文件信息。
- upload\_net\_client\_gw:设置开发板的网关,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.1
- upload\_net\_client\_ip:设置开发板的IP地址,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.3
![](figures/ip-address-information.png) 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
7. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。 8. 点击hi3516dv300下的**Upload**按钮,启动烧录。
1. 在“hi3516dv300\_fastboot”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您是第一次在工作台烧录Hi3516DV300/Hi3518EV300开发板,可能烧录失败,提示“not find the Devices”,然后根据[Hi3516DV300/Hi3518EV300开发板USB驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)进行处理后再重新烧录。
![](figures/zh-cn_image_0000001222994321.png) ![zh-cn_image_0000001267231481](figures/zh-cn_image_0000001267231481.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。 9. 在终端窗口显示如下提示信息时,按住复位键,插拔USB线,最后松开复位键启动烧录。
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png)
>![](../public_sys-resources/icon-note.gif) **说明:** 启动烧录后,界面提示如下信息时,表示烧录成功。
>在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![](figures/zh-cn_image_0000001223185957.png) ![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png)
3. 按照相同的方法修改kernel、rootfs和userfs的烧录文件信息。
8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
9. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3516dv300下的**Upload**按钮,启动烧录。
![](figures/hi3516-upload-start-burning.png)
10. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。
![](figures/hi3516-restart-the-development-board.png)
11. 重新上电后,界面提示如下信息时,表示烧录成功。
![](figures/hi3516-burning-succeeded-net.png)
12. 烧录成功后,请根据镜像运行章节进行操作,启动系统。
10. 烧录成功后,请根据镜像运行章节进行操作,启动系统。
# 常见问题<a name="ZH-CN_TOPIC_0000001171615522"></a>
- [烧写选择串口后提示“Error: Opening COMxx: Access denied”](#section627268185113)
- [Windows电脑与单板网络连接失败](#section195391036568)
- [烧写失败](#section571164016565)
- [编译构建过程中,提示找不到“python”](#section1039835245619)
- [串口无回显](#section14871149155911)
## 烧写选择串口后提示“Error: Opening COMxx: Access denied”<a name="section627268185113"></a>
- **现象描述**
点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。
**图 1** 打开串口失败图<a name="fig066333283916"></a>
![](figures/打开串口失败图.png "打开串口失败图")
- **可能原因**
串口已经被占用。
- **解决办法**
1. 按图依次选择下拉框,查找带有serial-xx的终端。
**图 2** 查找是否存在占用串口的终端<a name="fig165994164420"></a>
![](figures/查找是否存在占用串口的终端.png "查找是否存在占用串口的终端")
2. 点击标号中的垃圾桶图标,关闭串口。
**图 3** 关闭串口终端<a name="fig7911282453"></a>
![](figures/关闭串口终端.png "关闭串口终端")
3. 重新点击烧写,选择串口并开始烧写程序。
**图 4** 重新启动烧写任务<a name="fig1138624316485"></a>
![](figures/changjian1.png)
## Windows电脑与单板网络连接失败<a name="section195391036568"></a>
- **现象描述**
点击烧写并选择串口后,无法获取文件。
**图 5** 网络不通,单板无法获取文件图<a name="fig5218920223"></a>
![](figures/网络不通-单板无法获取文件图.png "网络不通-单板无法获取文件图")
- **可能原因**
单板网络与Windows电脑不联通。
Windows电脑防火墙未允许Visual Studio Code联网。
- **解决方法**
1. 检查网线是否连接。
2. 点击Windows防火墙。
**图 6** 网络防火墙设置图<a name="fig62141417794"></a>
![](figures/网络防火墙设置图.png "网络防火墙设置图")
3. 点击“允许应用通过防火墙”。
**图 7** 防火墙和网络保护界面图<a name="fig20703151111116"></a>
![](figures/防火墙和网络保护界面图.png "防火墙和网络保护界面图")
4. 查找Visual Studio Code应用。
**图 8** 查找Visual Studio Code应用图<a name="fig462316612165"></a>
![](figures/查找Visual-Studio-Code应用图.png "查找Visual-Studio-Code应用图")
5. 勾选Visual Studio Code的专用和公用网络的访问权限。
**图 9** 允许Visual Studio Code应用访问网络<a name="fig132725269184"></a>
![](figures/允许Visual-Studio-Code应用访问网络.png "允许Visual-Studio-Code应用访问网络")
## 烧写失败<a name="section571164016565"></a>
- **现象描述**
点击烧写并选择串口后,出现无法烧写的情况。
- **可能原因**
安装IDE插件DevEco后未重启。
- **解决方法**
重启IDE。
## 编译构建过程中,提示找不到“python”<a name="section1039835245619"></a>
- **现象描述**
![](figures/zh-cn_image_0000001216693913.png)
- **可能原因**1
没有装python。
- **解决办法**1
请使用如下命令安装Python,下方以Python3.8为例。
```
sudo apt-get install python3.8
```
- **可能原因**2
usr/bin目录下没有python软链接。
![](figures/zh-cn_image_0000001217013865.png)
- **解决办法**2
请运行以下命令:
```
# cd /usr/bin/
# which python3
# ln -s /usr/local/bin/python3 python
# python --version
```
例:
![](figures/zh-cn_image_0000001216693915.png)
## 串口无回显<a name="section14871149155911"></a>
- **现象描述**
串口显示已连接,重启单板后,回车无任何回显。
- **可能原因1**
串口连接错误。
- **解决办法**
修改串口号。
请查看设备管理器,确认连接单板的串口与终端中连接串口是否一致,若不一致,请按镜像运行内[步骤1](#section627268185113)修改串口号。
- **可能原因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/documentation/guide/hi3516_upload-0000001052148681)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。
3. 烧写完成后,登录串口如下图所示。
**图 10** U-boot烧写完成串口显示图<a name="zh-cn_topic_0000001053466255_fig155914681910"></a>
![](figures/U-boot烧写完成串口显示图.png "U-boot烧写完成串口显示图")
# 运行<a name="ZH-CN_TOPIC_0000001216535389"></a> # 运行
- [镜像运行](#section11324753143912)
- [下一步学习](#section9712145420182)
## 镜像运行<a name="section11324753143912"></a> ## 启动系统
在完成Hi3516DV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统。 在完成Hi3516DV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统。
1. 在Hi3516DV300任务中,点击**Configure bootloader(Boot OS)**进行配置即可。 1. 在Hi3516DV300任务中,点击**Configure bootloader(Boot OS)**进行配置即可。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> DevEco Device Tool针对Hi3516DV300开发板的BootLoader设置进行了适配,无需开发者手动修改。
>![](../public_sys-resources/icon-note.gif) **说明:** ![zh-cn_image_0000001209906547](figures/zh-cn_image_0000001209906547.png)
>DevEco Device Tool针对Hi3516DV300开发板的BootLoader设置进行了适配,无需开发者手动修改。
![](figures/bootloader.png) 2. 提示如下图中的重启开发板的提示信息时,重启开发板,然后在控制台输出“SUCCESS”表示设置成功。
![zh-cn_image_0000001210385161](figures/zh-cn_image_0000001210385161.png)
2. 提示如下图中的重启开发板的提示信息时,重启开发板,然后在控制台输出“SUCCESS”表示设置成功。 3. 在任务栏点击**Monitor**按钮,启动串口工具。
![zh-cn_image_0000001164506870](figures/zh-cn_image_0000001164506870.png)
![](figures/reset_success.png) 4. 当界面打印回显信息,点击Enter按钮,直到界面显示OHOS \#信息,表示系统启动成功。
![zh-cn_image_0000001198626874](figures/zh-cn_image_0000001198626874.png)
3. 在任务栏点击**Monitor**按钮,启动串口工具。
![](figures/monitor.png) ## 运行“Hello World”
4. 当界面打印回显信息,点击Enter按钮,直到界面显示OHOS \#信息,表示系统启动成功 系统启动成功后,取源码out目录下的helloworld可执行文件放入系统的bin目录,通过以下步骤运行“Hello World”
![](figures/reboot_success.png) 1. 在启动界面进入bin目录。
```
cd bin
```
2. 进入bin目录后可以看到helloworld文件,通过以下命令运行helloworld程序。
```
./helloworld
```
## 下一步学习<a name="section9712145420182"></a> 界面打印“Hello World!”,程序运行成功。
恭喜您,已完成Hi3516的快速上手!建议您下一步进入[带屏摄像头产品开发](../guide/device-iotcamera.md)的学习 。 ![zh-cn_image_0000001271234769](figures/zh-cn_image_0000001271234769.png)
## 下一步学习
恭喜您,已完成Hi3516DV300的快速上手!建议您下一步进入[带屏摄像头产品开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/guide/device-camera.md)的学习 。
# 安装开发板环境<a name="ZH-CN_TOPIC_0000001216693901"></a> # 安装Hi3516开发板环境
- [Hi3516工具要求](#section179175261196)
- [硬件要求](#section5840424125014)
- [软件要求](#section965634210501)
- [安装Linux服务器工具](#section182916865219) ## Hi3516工具要求
- [安装编译依赖基础软件(仅Ubuntu 20+需要)](#section45512412251)
- [安装文件打包工具及Java虚拟机环境](#section16199102083717)
## Hi3516工具要求<a name="section179175261196"></a> ### 硬件要求
### 硬件要求<a name="section5840424125014"></a> - Hi3516DV300 IoT Camera开发板
- Hi3516DV300 IoT Camera开发板 - USB转串口线、网线(Linux工作台通过USB转串口线、网线与Hi3516DV300 开发板连接)
- USB转串口线、网线(Linux工作台通过USB转串口线、网线与Hi3516DV300 开发板连接)
### 软件要求<a name="section965634210501"></a>
>![](../public_sys-resources/icon-notice.gif) **须知:** ### 软件要求
>本节描述安装包方式搭建编译环境的操作步骤。如果使用Docker方式安装编译环境,请跳过此章节,直接从[新建应用程序](quickstart-lite-steps-hi3516-application-framework.md)开始操作。
Hi3516开发板对Linux服务器通用环境配置需要的工具及其用途如下表所示。 Hi3516DV300开发板对Linux服务器通用环境配置需要的工具及其用途如下表所示。
**表 1** Linux服务器开发工具及用途 **表1** Linux服务器开发工具及用途
<a name="table6299192712513"></a> | 开发工具 | 用途 |
<table><thead align="left"><tr id="row122993276512"><th class="cellrowborder" valign="top" width="62.4%" id="mcps1.2.3.1.1"><p id="p1829914271858"><a name="p1829914271858"></a><a name="p1829914271858"></a>开发工具</p> | -------- | -------- |
</th> | dosfstools、mtools、mtd-utils | 文件打包工具 |
<th class="cellrowborder" valign="top" width="37.6%" id="mcps1.2.3.1.2"><p id="p429918274517"><a name="p429918274517"></a><a name="p429918274517"></a>用途</p> | Java虚拟机环境 | 编译、调试和运行Java程序 |
</th>
</tr>
</thead>
<tbody><tr id="row14885193315201"><td class="cellrowborder" valign="top" width="62.4%" headers="mcps1.2.3.1.1 "><p id="p137174662119"><a name="p137174662119"></a><a name="p137174662119"></a>编译基础软件包(仅ubuntu 20+需要)</p>
</td>
<td class="cellrowborder" valign="top" width="37.6%" headers="mcps1.2.3.1.2 "><p id="p258814561424"><a name="p258814561424"></a><a name="p258814561424"></a>编译依赖的基础软件包</p>
</td>
</tr>
<tr id="row52253812238"><td class="cellrowborder" valign="top" width="62.4%" headers="mcps1.2.3.1.1 "><p id="p28007392236"><a name="p28007392236"></a><a name="p28007392236"></a>dosfstools、mtools、mtd-utils</p>
</td>
<td class="cellrowborder" valign="top" width="37.6%" headers="mcps1.2.3.1.2 "><p id="p98008390232"><a name="p98008390232"></a><a name="p98008390232"></a>文件打包工具</p>
</td>
</tr>
<tr id="row29204072315"><td class="cellrowborder" valign="top" width="62.4%" headers="mcps1.2.3.1.1 "><p id="p5921190162318"><a name="p5921190162318"></a><a name="p5921190162318"></a>Java 虚拟机环境</p>
</td>
<td class="cellrowborder" valign="top" width="37.6%" headers="mcps1.2.3.1.2 "><p id="p17921110152311"><a name="p17921110152311"></a><a name="p17921110152311"></a>编译、调试和运行Java程序</p>
</td>
</tr>
</tbody>
</table>
## 安装Linux服务器工具<a name="section182916865219"></a>
### 安装编译依赖基础软件(仅Ubuntu 20+需要)<a name="section45512412251"></a> ## 安装Linux服务器工具
执行以下命令进行安装: Hi3516DV300依赖以下工具:dosfstools、mtools、mtd-utils、Java运行时环境(JRE)和Java sdk 开发工具包。
```
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
```
### 安装文件打包工具及Java虚拟机环境<a name="section16199102083717"></a>
运行如下命令,安装dosfstools、mtools、mtd-utils、Java运行时环境(JRE)和Java sdk 开发工具包。
```
sudo apt-get install dosfstools mtools mtd-utils default-jre default-jdk
```
上述工具已在[ERROR:Invalid link:zh-cn_topic_0000001226794684.xml#xref126711502449,link:zh-cn_topic_0000001215745332.xml#section69901514104616](zh-cn_topic_0000001215745332.xml#section69901514104616)环节完成安装,此处无需再进行安装。
# Hi3516开发板<a name="ZH-CN_TOPIC_0000001217013857"></a> # Hi3516开发板
- **[安装开发板环境](quickstart-lite-steps-hi3516-setting.md)**
- **[新建应用程序](quickstart-lite-steps-hi3516-application-framework.md)**
- **[编译](quickstart-lite-steps-hi3516-building.md)** - **[安装Hi3516开发板环境](quickstart-lite-steps-hi3516-setting.md)**
- **[烧录](quickstart-lite-steps-hi3516-burn.md)** - **[编写“Hello World”程序](quickstart-lite-steps-hi3516-application-framework.md)**
- **[运行](quickstart-lite-steps-hi3516-running.md)** - **[编译](quickstart-lite-steps-hi3516-building.md)**
- **[常见问题](quickstart-lite-steps-hi3516-faqs.md)**
- **[烧录](quickstart-lite-steps-hi3516-burn.md)**
- **[运行](quickstart-lite-steps-hi3516-running.md)**
\ No newline at end of file
# 新建应用程序<a name="ZH-CN_TOPIC_0000001171615524"></a>
下方将通过修改源码的方式展示如何编写简单程序,输出“Hello OHOS!”。请在[获取源码](quickstart-lite-sourcecode-acquire.md)章节下载的源码目录中进行下述操作。
1. 新建目录及源码。
新建**applications/sample/camera/apps/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
int main(int argc, char **argv)
{
printf("\n************************************************\n");
printf("\n\t\tHello OHOS!\n");
printf("\n************************************************\n\n");
return 0;
}
```
2. 新建编译组织文件。
新建**applications/sample/camera/apps/BUILD.gn**文件,内容如下所示:
```
import("//build/lite/config/component/lite_component.gni")
lite_component("hello-OHOS") {
features = [ ":helloworld" ]
}
executable("helloworld") {
output_name = "helloworld"
sources = [ "src/helloworld.c" ]
include_dirs = []
defines = []
cflags_c = []
ldflags = []
}
```
3. 添加新组件。
修改文件**build/lite/components/applications.json**,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"components": [
{
"component": "camera_sample_communication",
"description": "Communication related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/communication"
],
"targets": [
"//applications/sample/camera/communication:sample"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##start##
{
"component": "hello_world_app",
"description": "Communication related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/apps"
],
"targets": [
"//applications/sample/camera/apps:hello-OHOS"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##end##
{
"component": "camera_sample_app",
"description": "Camera related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/launcher",
"applications/sample/camera/cameraApp",
"applications/sample/camera/setting",
"applications/sample/camera/gallery",
"applications/sample/camera/media"
],
```
4. 修改单板配置文件。
修改文件**vendor/hisilicon/hispark\_aries/config.json**,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"subsystem": "applications",
"components": [
##start##
{ "component": "hello_world_app", "features":[] },
##end##
{ "component": "camera_sample_app", "features":[] }
]
},
```
# 编译<a name="ZH-CN_TOPIC_0000001216935341"></a>
下方将介绍如何使用Hi3518开发板进行编译。使用安装包方式与docker方式搭建Ubuntu编译环境,编译命令相同。
1. 请进入源码根目录,执行如下命令进行编译:
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果使用Docker方式搭建编译环境,请在[获取Docker环境](quickstart-lite-docker-environment.md#section15666113905015)中进入的Docker构建环境中,执行如下命令进行编译。
```
hb set(设置编译路径)
.(选择当前路径)
选择ipcamera_hispark_aries并回车
hb build -f(执行编译)
```
**图 1** Hi3518编译设置图例-Docker方式<a name="fig6140152061211"></a>
![](figures/Hi3518编译设置图例-Docker方式.png "Hi3518编译设置图例-Docker方式")
2. 编译结束后,出现“ipcamera\_hispark\_aries build success”字样,则证明构建成功。
>![](../public_sys-resources/icon-notice.gif) **须知:**
>烧录相关文件获取路径:
>结果文件:out/hispark\_aries/ipcamera\_hispark\_aries。
>U-boot文件:device/hisilicon/hispark\_aries/sdk\_liteos/uboot/out/boot/u-boot-hi3518ev300.bin。
# 烧录<a name="ZH-CN_TOPIC_0000001216693905"></a>
- [前提条件](#section14614124417580)
- [使用串口烧录](#section195291211181215)
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334.png)图标打开DevEco Device Tool。
Hi3518EV300开发板的代码烧录支持USB烧录和串口烧录两种方式,其中:
- **Windows系统:支持USB烧录和串口烧录。**
- **Linux系统:支持串口烧录**
Hi3861V100在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。
此处仅以Linux系统下串口烧录方式为例进行说明。
## 前提条件<a name="section14614124417580"></a>
1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。
![](figures/import-project.png)
2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import**
![](figures/import-project-confirm.png)
3. MCU选择HiSilicom\_Arm下的Hi3518EV300,Board选择hi3518ev300,Framework选择Hb,然后点击**Import**完成导入。
![](figures/hi3518-import-projects.png)
## 使用串口烧录<a name="section195291211181215"></a>
1. 请连接好电脑和待烧录开发板,需要同时连接串口和电源口,具体可参考[Hi3518EV300开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3518-0000001105201138)
2. 查看并记录对应的串口号。
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
Windows系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。
![](figures/record-the-serial-port-number.png)
Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。
![](figures/Snap22.png)
3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。
![](figures/zh-cn_image_0000001222981447.png)
4. 在“hi3518ev300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。
- upload\_port:选择已查询的串口号。
- upload\_protocol:选择烧录协议,固定选择“hiburn-serial”。
- upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。
![](figures/Snap24.png)
5. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。
1. 在“hi3518ev300\_fastboot”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。
![](figures/zh-cn_image_0000001177301516.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
>![](../public_sys-resources/icon-note.gif) **说明:**
>在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,遵循以下原则:
>- 要求设置的烧录分区大小,要大于待烧录文件的大小。
>- 同时,各烧录文件的分区地址设置不能出现重叠。
>- 总的烧录分区大小不能超过16MB。
![](figures/zh-cn_image_0000001222781271.png)
3. 按照相同的方法修改kernel、footfs和userfs的烧录文件信息。
6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
7. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3518ev300下的**Upload**按钮,启动烧录。
![](figures/zh-cn_image_0000001117329380.png)
8. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。
![](figures/zh-cn_image_0000001074287476.png)
9. 重新上电后,界面提示如下信息时,表示烧录成功。
![](figures/zh-cn_image_0000001073838982.png)
10. 烧录成功后,请根据镜像运行章节进行操作,启动系统。
# 常见问题<a name="ZH-CN_TOPIC_0000001216935339"></a>
- [烧写选择串口后提示失败](#section1498892119619)
- [Windows电脑与单板网络连接失败](#section8512971816)
- [烧写失败](#section1767804111198)
- [编译构建过程中,提示找不到“python”](#zh-cn_topic_0000001053466255_section1039835245619)
- [串口无回显](#zh-cn_topic_0000001053466255_section14871149155911)
## 烧写选择串口后提示失败<a name="section1498892119619"></a>
- **现象描述**
点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。
**图 1** 打开串口失败图<a name="zh-cn_topic_0000001053466255_fig066333283916"></a>
![](figures/打开串口失败图-1.png "打开串口失败图-1")
- **可能原因**
串口已经被占用。
- **解决办法**
1. 按图依次选择下拉框,查找带有serial-xx的终端。
**图 2** 查找是否存在占用串口的终端<a name="zh-cn_topic_0000001053466255_fig165994164420"></a>
![](figures/查找是否存在占用串口的终端-2.png "查找是否存在占用串口的终端-2")
2. 点击标号中的垃圾桶图标,关闭串口。
**图 3** 关闭串口终端<a name="zh-cn_topic_0000001053466255_fig7911282453"></a>
![](figures/关闭串口终端-3.png "关闭串口终端-3")
3. 重新点击烧写,选择串口并开始烧写程序。
**图 4** 重新启动烧写任务<a name="zh-cn_topic_0000001053466255_fig1138624316485"></a>
![](figures/changjian1-4.png)
## Windows电脑与单板网络连接失败<a name="section8512971816"></a>
- **现象描述**
点击烧写并选择串口后,无法获取文件。
**图 5** 网络不通,单板无法获取文件图<a name="zh-cn_topic_0000001053466255_fig5218920223"></a>
![](figures/网络不通-单板无法获取文件图-5.png "网络不通-单板无法获取文件图-5")
- **可能原因**
单板网络与Windows电脑不联通。
Windows电脑防火墙未允许Visual Studio Code联网。
- **解决方法**
1. 检查网线是否连接。
2. 点击Windows防火墙。
**图 6** 网络防火墙设置图<a name="zh-cn_topic_0000001053466255_fig62141417794"></a>
![](figures/网络防火墙设置图-6.png "网络防火墙设置图-6")
3. 点击“允许应用通过防火墙”。
**图 7** 防火墙和网络保护界面图<a name="zh-cn_topic_0000001053466255_fig20703151111116"></a>
![](figures/防火墙和网络保护界面图-7.png "防火墙和网络保护界面图-7")
4. 查找Visual Studio Code应用。
**图 8** 查找Visual Studio Code应用图<a name="zh-cn_topic_0000001053466255_fig462316612165"></a>
![](figures/查找Visual-Studio-Code应用图-8.png "查找Visual-Studio-Code应用图-8")
5. 勾选Visual Studio Code的专用和公用网络的访问权限。
**图 9** 允许Visual Studio Code应用访问网络<a name="zh-cn_topic_0000001053466255_fig132725269184"></a>
![](figures/允许Visual-Studio-Code应用访问网络-9.png "允许Visual-Studio-Code应用访问网络-9")
## 烧写失败<a name="section1767804111198"></a>
- **现象描述**
点击烧写并选择串口后,出现无法烧写的情况。
- **可能原因**
安装IDE插件DevEco后未重启。
- **解决方法**
重启IDE。
## 编译构建过程中,提示找不到“python”<a name="zh-cn_topic_0000001053466255_section1039835245619"></a>
- **现象描述**
![](figures/zh-cn_image_0000001171774086.png)
- **可能原因**
usr/bin目录下没有python软链接。
![](figures/zh-cn_image_0000001171615534.png)
- **解决办法**
请运行以下命令:
```
# cd /usr/bin/
# which python3
# ln -s /usr/local/bin/python3 python
# python --version
```
例:
![](figures/zh-cn_image_0000001216535401.png)
## 串口无回显<a name="zh-cn_topic_0000001053466255_section14871149155911"></a>
- **现象描述**
串口显示已连接,重启单板后,回车无任何回显。
- **可能原因1**
串口连接错误。
- **解决办法**
修改串口号。
请查看设备管理器,确认连接单板的串口与终端中连接串口是否一致,若不一致,请按镜像运行内[步骤1](#section1498892119619)修改串口号。
- **可能原因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文件。
按照[Hi3518系列USB烧写步骤](https://device.harmonyos.com/cn/docs/documentation/guide/hi3518_upload-0000001057313128)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。
3. 烧写完成后,登录串口如下图所示。
![](figures/zh-cn_image_0000001216535397.png)
# 运行<a name="ZH-CN_TOPIC_0000001217013853"></a>
- [镜像运行](#section1081111115589)
- [下一步学习](#section9712145420182)
## 镜像运行<a name="section1081111115589"></a>
在完成Hi3518EV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统。
1. 在Hi3518EV300任务中,点击**Configure bootloader(Boot OS)**进行配置即可。
>![](../public_sys-resources/icon-note.gif) **说明:**
>DevEco Device Tool针对Hi3518EV300开发板的BootLoader设置进行了适配,无需开发者手动修改。
![](figures/hi3518-bootloader.png)
2. 提示如下图中的重启开发板的提示信息时,重启开发板,然后在控制台输出“SUCCESS”表示设置成功。
![](figures/hi3518-reset-success.png)
3. 在任务栏点击**Monitor**按钮,启动串口工具。
![](figures/hi3518-monitor.png)
4. 当界面打印回显信息,点击Enter按钮,直到界面显示OHOS \#信息,表示系统启动成功。
![](figures/hi3518-reboot-success.png)
## 下一步学习<a name="section9712145420182"></a>
恭喜您,已完成Hi3518的快速上手!建议您下一步进入[无屏摄像头产品开发](../guide/device-iotcamera.md)的学习 。
# 安装开发板环境<a name="ZH-CN_TOPIC_0000001171615526"></a>
- [Hi3518环境搭建](#section1724111409282)
- [硬件要求](#section487353718276)
- [软件要求](#section17315193935817)
- [安装Linux服务器工具](#section8831868501)
- [安装编译依赖基础软件(仅Ubuntu 20+需要)](#section25911132141020)
- [安装文件打包工具](#section390214473129)
## Hi3518环境搭建<a name="section1724111409282"></a>
### 硬件要求<a name="section487353718276"></a>
- Hi3518EV300 IoT Camera开发板
- USB转串口线、网线(Linux工作台通过USB转串口线、网线与开发板连接)
### 软件要求<a name="section17315193935817"></a>
>![](../public_sys-resources/icon-notice.gif) **须知:**
>本节描述安装包方式搭建编译环境的操作步骤。如果是Docker方式安装编译环境,请跳过此章节,从[新建应用程序](quickstart-lite-steps-hi3518-application-framework.md)开始操作。
Hi3518开发板对Linux服务器通用环境配置需要的工具及其获取途径如下表所示。
**表 1** Linux服务器开发工具及获取途径
<a name="table15485545145811"></a>
<table><thead align="left"><tr id="row1748610451588"><th class="cellrowborder" valign="top" width="23.332333233323332%" id="mcps1.2.4.1.1"><p id="p13486154545816"><a name="p13486154545816"></a><a name="p13486154545816"></a>开发工具</p>
</th>
<th class="cellrowborder" valign="top" width="14.65146514651465%" id="mcps1.2.4.1.2"><p id="p44867452589"><a name="p44867452589"></a><a name="p44867452589"></a>用途</p>
</th>
<th class="cellrowborder" valign="top" width="62.016201620162015%" id="mcps1.2.4.1.3"><p id="p1748619458583"><a name="p1748619458583"></a><a name="p1748619458583"></a>获取途径</p>
</th>
</tr>
</thead>
<tbody><tr id="row7598468212"><td class="cellrowborder" valign="top" width="23.332333233323332%" headers="mcps1.2.4.1.1 "><p id="p659815642111"><a name="p659815642111"></a><a name="p659815642111"></a>编译基础软件包(仅ubuntu 20+需要)</p>
</td>
<td class="cellrowborder" valign="top" width="14.65146514651465%" headers="mcps1.2.4.1.2 "><p id="p137174662119"><a name="p137174662119"></a><a name="p137174662119"></a>编译依赖的基础软件包</p>
</td>
<td class="cellrowborder" valign="top" width="62.016201620162015%" headers="mcps1.2.4.1.3 "><p id="p125983652118"><a name="p125983652118"></a><a name="p125983652118"></a>通过互联网获取</p>
</td>
</tr>
<tr id="row08231641105420"><td class="cellrowborder" valign="top" width="23.332333233323332%" headers="mcps1.2.4.1.1 "><p id="p1682494111548"><a name="p1682494111548"></a><a name="p1682494111548"></a>dosfstools、mtools、mtd-utils</p>
</td>
<td class="cellrowborder" valign="top" width="14.65146514651465%" headers="mcps1.2.4.1.2 "><p id="p1362445934918"><a name="p1362445934918"></a><a name="p1362445934918"></a>文件打包工具</p>
</td>
<td class="cellrowborder" valign="top" width="62.016201620162015%" headers="mcps1.2.4.1.3 "><p id="p1262475944916"><a name="p1262475944916"></a><a name="p1262475944916"></a>通过apt-get install安装</p>
</td>
</tr>
</tbody>
</table>
## 安装Linux服务器工具<a name="section8831868501"></a>
### 安装编译依赖基础软件(仅Ubuntu 20+需要)<a name="section25911132141020"></a>
执行以下命令进行安装:
```
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
```
### 安装文件打包工具<a name="section390214473129"></a>
运行如下命令,安装dosfstools,mtools,mtd-utils。
```
sudo apt-get install dosfstools mtools mtd-utils
```
# Hi3518开发板<a name="ZH-CN_TOPIC_0000001216535385"></a>
- **[安装开发板环境](quickstart-lite-steps-hi3518-setting.md)**
- **[新建应用程序](quickstart-lite-steps-hi3518-application-framework.md)**
- **[编译](quickstart-lite-steps-hi3518-building.md)**
- **[烧录](quickstart-lite-steps-hi3518-burn.md)**
- **[运行](quickstart-lite-steps-hi3518-running.md)**
- **[常见问题](quickstart-lite-steps-hi3518-faqs.md)**
# 运行
## 运行结果
示例代码编译、烧录、运行、调测后,重启开发板后将自动在界面输出如下结果:
```
ready to OS start
FileSystem mount ok.
wifi init success!
[DEMO] Hello world.
```
## 下一步学习
恭喜,您已完成Hi3861 WLAN模组快速上手!建议您下一步进入[WLAN产品开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/guide/device-wlan.md)的学习 。
# 新建应用程序<a name="ZH-CN_TOPIC_0000001216535387"></a> # 编写“Hello World”程序
下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。
1. <a name="li5479332115116"></a>确定目录结构。
开发者编写业务时,务必先在./applications/sample/wifi-iot/app路径下新建一个目录(或一套目录结构),用于存放业务源码文件。
例如:在app下新增业务my_first_app,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:
```
.
└── applications
└── sample
└── wifi-iot
└── app
└── my_first_app
│── hello_world.c
└── BUILD.gn
```
2. 编写业务代码。
新建./applications/sample/wifi-iot/app/my\_first\_app下的hello\_world.c文件,在hello\_world.c中新建业务入口函数HelloWorld,并实现业务逻辑。并在代码最下方,使用OpenHarmony启动恢复模块接口SYS\_RUN\(\)启动业务。(SYS\_RUN定义在ohos\_init.h文件中)
```
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
void HelloWorld(void)
{
printf("[DEMO] Hello world.\n");
}
SYS_RUN(HelloWorld);
```
3. 编写用于将业务构建成静态库的BUILD.gn文件。
新建./applications/sample/wifi-iot/app/my\_first\_app下的BUILD.gn文件,并完成如下配置。 下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。
如[步骤1](#li5479332115116)所述,BUILD.gn文件由三部分内容(目标、源文件、头文件路径)构成,需由开发者完成填写。
```
static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
```
- static\_library中指定业务模块的编译结果,为静态库文件libmyapp.a,开发者根据实际情况完成填写。
- sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。
- include\_dirs中指定source所需要依赖的.h文件路径。
4. 添加新组件。
修改文件build/lite/components/applications.json,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,“##start##”和“##end##”之间为新增配置(“##start##”和“##end##”仅用来标识位置,添加完配置后删除这两行):
```
{
"components": [
{
"component": "camera_sample_communication",
"description": "Communication related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/communication"
],
"targets": [
"//applications/sample/camera/communication:sample"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##start##
{
"component": "hello_world_app",
"description": "hello world samples.",
"optional": "true",
"dirs": [
"applications/sample/wifi-iot/app/my_first_app"
],
"targets": [
"//applications/sample/wifi-iot/app/my_first_app:myapp"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_m" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##end##
{
"component": "camera_sample_app",
"description": "Camera related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/launcher",
"applications/sample/camera/cameraApp",
"applications/sample/camera/setting",
"applications/sample/camera/gallery",
"applications/sample/camera/media"
],
```
5. 修改单板配置文件。
修改文件vendor/hisilicon/hispark_pegasus/config.json,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,“##start##”和“##end##”之间为新增条目(“##start##”和“##end##”仅用来标识位置,添加完配置后删除这两行):
```
{
"subsystem": "applications",
"components": [
##start##
{ "component": "hello_world_app", "features":[] },
##end##
{ "component": "wifi_iot_sample_app", "features":[] }
]
},
```
1. 确定目录结构。
开发者编写业务时,务必先在./applications/sample/wifi-iot/app路径下新建一个目录(或一套目录结构),用于存放业务源码文件。
例如:在app下新增业务my_first_app,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:
```
.
└── applications
└── sample
└── wifi-iot
└── app
└── my_first_app
│── hello_world.c
└── BUILD.gn
```
2. 编写业务代码。
新建./applications/sample/wifi-iot/app/my_first_app下的hello_world.c文件,在hello_world.c中新建业务入口函数HelloWorld,并实现业务逻辑。并在代码最下方,使用OpenHarmony启动恢复模块接口SYS_RUN()启动业务。(SYS_RUN定义在ohos_init.h文件中)
```
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
void HelloWorld(void)
{
printf("[DEMO] Hello world.\n");
}
SYS_RUN(HelloWorld);
```
3. 编写用于将业务构建成静态库的BUILD.gn文件。
新建./applications/sample/wifi-iot/app/my_first_app下的BUILD.gn文件,并完成如下配置。
[ERROR:Invalid link:zh-cn_topic_0000001226794672.xml#xref7209204195912,link:#li5479332115116](#li5479332115116)所述,BUILD.gn文件由三部分内容(目标、源文件、头文件路径)构成,需由开发者完成填写。
```
static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
```
- static_library中指定业务模块的编译结果,为静态库文件libmyapp.a,开发者根据实际情况完成填写。
- sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。
- include_dirs中指定source所需要依赖的.h文件路径。
4. 添加新组件。
修改文件**build/lite/components/applications.json**,添加组件hello_world_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"components": [
{
"component": "camera_sample_communication",
"description": "Communication related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/communication"
],
"targets": [
"//applications/sample/camera/communication:sample"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##start##
{
"component": "hello_world_app",
"description": "hello world samples.",
"optional": "true",
"dirs": [
"applications/sample/wifi-iot/app/my_first_app"
],
"targets": [
"//applications/sample/wifi-iot/app/my_first_app:myapp"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_m" ],
"features": [],
"deps": {
"components": [],
"third_party": []
}
},
##end##
{
"component": "camera_sample_app",
"description": "Camera related samples.",
"optional": "true",
"dirs": [
"applications/sample/camera/launcher",
"applications/sample/camera/cameraApp",
"applications/sample/camera/setting",
"applications/sample/camera/gallery",
"applications/sample/camera/media"
],
```
5. 修改单板配置文件。
修改文件**vendor/hisilicon/hispark_pegasus/config.json**,新增hello_world_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):
```
{
"subsystem": "applications",
"components": [
##start##
{ "component": "hello_world_app", "features":[] },
##end##
{ "component": "wifi_iot_sample_app", "features":[] }
]
},
```
# 编译<a name="ZH-CN_TOPIC_0000001171455552"></a> # 编译
- [编译(Docker方式搭建环境)](#section681942105819)
- [编译(安装包方式搭建环境)](#section17726113335715)
本节描述如何进行Hi3861 开发板的编译,根据上方搭建Ubuntu环境方式的不同,编译方式也有所区别 OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-lite-reference.md#使用buildsh脚本编译源码)
- 如果Ubuntu编译环境通过Docker方式安装,请参见下方[编译(Docker方式搭建环境)](#section681942105819)
- 如果Ubuntu编译环境通过安装包方式安装,请参见下方[编译(安装包方式搭建环境)](#section17726113335715)
## 编译(Docker方式搭建环境)<a name="section681942105819"></a> 在Ubuntu环境下进入源码根目录,执行如下命令进行编译:
1. 请在[获取Docker环境](quickstart-lite-docker-environment.md#section15666113905015)中进入的Docker构建环境中,执行如下命令进行编译:
``` 1. 设置编译路径。
hb set(设置编译路径)
.(选择当前路径) ```
选择wifiiot_hispark_pegasus@hisilicon并回车 hb set
hb build -f(执行编译) ```
```
**图 1** Hi3861编译设置图例-Docker方式<a name="fig129467368177"></a> 2. 选择当前路径。
![](figures/Hi3861编译设置图例-Docker方式.png "Hi3861编译设置图例-Docker方式")
```
.
```
2. 编译结束后,出现“wifiiot\_hispark\_pegasus build success”字样,则证明构建成功 3. 在hisilicon下选择wifiiot_hispark_pegasus并回车
>![](../public_sys-resources/icon-notice.gif) **须知:** 4. 执行编译。
>烧录结果文件文件获取路径:out/hispark\_pegasus/wifiiot\_hispark\_pegasus。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 单独编译一个部件(例如hello),可使用“hb build -T _目标名称_”进行编译。
>
> - 增量编译整个产品,可使用“hb build”进行编译。
>
> - 完整编译整个产品,可使用“hb build -f”进行编译。
>
> 此处以完整编译整个产品为例进行说明。
```
hb build -f
```
## 编译(安装包方式搭建环境)<a name="section17726113335715"></a> **图1** Hi3861编译设置图例
![zh-cn_image_0000001226634716](figures/zh-cn_image_0000001226634716.png)
1. 打开DevEco Device Tool工具,点击“View \> Terminal”,进入终端界面。
**图 2** IDE终端工具打开方法<a name="fig1975813338510"></a>
![](figures/1.png)
2. 进入代码根路径,并在终端窗口,执行脚本命令“hb set”、“.”,选择需要编译的版本“wifiiot\_hispark\_pegasus”。
**图 3** 在终端界面选择目标构建版本示意图<a name="fig17727115215612"></a>
![](figures/3.png)
3. 执行“hb build”启动版本构建。
**图 4** 在终端界面执行编译命令示意图<a name="fig5493164414573"></a>
![](figures/4.png)
4. 编译结束后,如果出现“wifiiot\_hispark\_pegasus build success”字样,则证明构建成功,如下图所示。
**图 5** 编译成功示意图<a name="fig1262101218463"></a>
![](figures/5.png)
5. 构建成功后,会在./out/wifiiot/路径中生成以下文件,使用如下命令可以查看,至此编译构建流程结束。
```
ls -l out/hispark_pegasus/wifiiot_hispark_pegasus/
```
**图 6** 编译文件存放目录示意图<a name="fig38521346164618"></a>
![](figures/3-0.png)
5. 编译结束后,出现“build success”字样,则证明构建成功。
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> 编译结果文件及编译日志获取路径:out/hispark_pegasus/wifiiot_hispark_pegasus。
# 烧录<a name="ZH-CN_TOPIC_0000001171934014"></a> # 烧录
- [前提条件](#section1535374111495)
- [使用串口烧录](#section5551201122719)
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率 在Windows下通过串口烧录Hi3861 WLAN模组
DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334.png)图标打开DevEco Device Tool。
**Hi3861V100开发板支持串口烧录方式,Linux系统串口烧录协议为hiburn-serial。**具体操作步骤如下: ### 导入源码
## 前提条件<a name="section1535374111495"></a> 在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-lite-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。
1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。 1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001171426014](figures/zh-cn_image_0000001171426014.png)
![](figures/import-project.png) 2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import** ![zh-cn_image_0000001227549226](figures/zh-cn_image_0000001227549226.png)
![](figures/import-project-confirm.png) 3. 如果您打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击**Import**
![zh-cn_image_0000001135394334](figures/zh-cn_image_0000001135394334.png)
3. MCU选择Hi3861,Board选择Hi3861,Framework选择Hb,然后点击**Import**完成导入。 4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
![](figures/hi3861-import-projects.png) 5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择wifiiot_hispark_pegasus。
![zh-cn_image_0000001272109325](figures/zh-cn_image_0000001272109325.png)
6. 点击**Open**打开工程或源码。
## 使用串口烧录<a name="section5551201122719"></a>
1. 请连接好电脑和待烧录开发板,需要连接USB口,具体可参考[Hi3861V100开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3861-0000001105041324)[Hi3861V100开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md)。 ### 烧录
2. 查看并记录对应的串口号。
>![](../public_sys-resources/icon-note.gif) **说明:** 完成源码导入后,通过以下步骤进行烧录:
>如果对应的串口异常,请根据[Hi3861V100开发板串口驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/hi3861-drivers-0000001058153433)安装USB转串口的驱动程序。
Window系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号 1. 请连接好电脑和待烧录开发板,需要连接USB口,具体可参考[Hi3861V100开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md)
![](figures/hi3861-record-the-serial-port-number.png) 2. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
![](figures/Snap23.png) > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 3. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001216274840](figures/zh-cn_image_0000001216274840.png)
![](figures/zh-cn_image_0000001222999125.png) > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果对应的串口异常,请根据[Hi3861V100开发板串口驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/hi3861-drivers-0000001058153433)安装USB转串口的驱动程序。
4. 在“hi3861”页签,设置烧录选项,包括upload\_port、upload\_protocol和upload\_partitions。 4. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198943768](figures/zh-cn_image_0000001198943768.png)
- upload\_port:选择已查询的串口号。 5. 在“hi3861”页签,设置烧录选项,包括upload_port、upload_protocol和upload_partitions。
- upload\_protocol:选择烧录协议,选择“hiburn-serial”。 - upload_port:选择已查询的串口号。
- upload\_partitions:选择待烧录的文件,默认选择hi3861\_app。 - upload_protocol:选择烧录协议,选择“hiburn-serial”。
- upload_partitions:选择待烧录的文件,默认选择hi3861_app。
![](figures/zh-cn_image_0000001177798424.png) ![zh-cn_image_0000001243704061](figures/zh-cn_image_0000001243704061.png)
5. 检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。 6. 检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。
1. 在“hi3861\_app”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等 在“hi3861_app”页签,在New Option选项中选择partition_bin(烧录文件路径),然后设置待烧录文件的地址
![](figures/zh-cn_image_0000001177480146.png) ![zh-cn_image_0000001260919759](figures/zh-cn_image_0000001260919759.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存
>![](../public_sys-resources/icon-note.gif) **说明:** 8. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。
>在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小。 ![zh-cn_image_0000001216440138](figures/zh-cn_image_0000001216440138.png)
![](figures/zh-cn_image_0000001223000051.png)
6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
7. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。
![](figures/hi3861-upload.png)
8. 启动烧录后,显示如下提示信息时,请按开发板上的RST按钮重启开发板。
![](figures/zh-cn_image_0000001174595590.png)
9. 重新上电后,界面提示如下信息时,表示烧录成功。
![](figures/hi3861-burning-succeeded.png)
9. 启动烧录后,显示如下提示信息时,请按开发板上的RST按钮重启开发板。
![zh-cn_image_0000001198466090](figures/zh-cn_image_0000001198466090.png)
10. 重新上电后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001216761476](figures/zh-cn_image_0000001216761476.png)
# 调试验证<a name="ZH-CN_TOPIC_0000001171774082"></a> # 调试验证
- [printf打印](#section42891145143811)
- [根据asm文件进行问题定位](#section754719373917)
完成烧录之后,用户可根据需要进行调试验证。目前调试验证的方法有以下两种,开发者可以根据具体业务情况选择。 完成烧录及联网之后,用户可根据需要进行调试验证。目前调试验证的方法有以下两种,开发者可以根据具体业务情况选择。
1. 通过printf打印日志
2. 通过asm文件定位panic问题
1. 通过printf打印日志
2. 通过asm文件定位panic问题
由于本示例业务简单,采用printf打印日志的调试方式即可。下方将介绍这两种调试手段的使用方法。 由于本示例业务简单,采用printf打印日志的调试方式即可。下方将介绍这两种调试手段的使用方法。
## printf打印<a name="section42891145143811"></a>
## printf打印
代码中增加printf维测,信息会直接打印到串口上。开发者可在业务关键路径或业务异常位置增加日志打印,如下所示: 代码中增加printf维测,信息会直接打印到串口上。开发者可在业务关键路径或业务异常位置增加日志打印,如下所示:
``` ```
void HelloWorld(void) void HelloWorld(void)
{ {
...@@ -21,13 +24,14 @@ void HelloWorld(void) ...@@ -21,13 +24,14 @@ void HelloWorld(void)
} }
``` ```
## 根据asm文件进行问题定位<a name="section754719373917"></a>
系统异常退出时,会在串口上打印异常退出原因调用栈信息,如下文所示。通过解析异常栈信息可以定位异常位置。 ## 根据asm文件进行问题定位
系统异常退出时,会在串口上打印异常退出原因调用栈信息,如下文所示。通过解析异常栈信息可以定位异常位置。
``` ```
=======KERNEL PANIC======= =======KERNEL PANIC=======
**********************Call Stack********************* **Call Stack*
Call Stack 0 -- 4860d8 addr:f784c Call Stack 0 -- 4860d8 addr:f784c
Call Stack 1 -- 47b2b2 addr:f788c Call Stack 1 -- 47b2b2 addr:f788c
Call Stack 2 -- 3e562c addr:f789c Call Stack 2 -- 3e562c addr:f789c
...@@ -35,27 +39,26 @@ Call Stack 3 -- 4101de addr:f78ac ...@@ -35,27 +39,26 @@ Call Stack 3 -- 4101de addr:f78ac
Call Stack 4 -- 3e5f32 addr:f78cc Call Stack 4 -- 3e5f32 addr:f78cc
Call Stack 5 -- 3f78c0 addr:f78ec Call Stack 5 -- 3f78c0 addr:f78ec
Call Stack 6 -- 3f5e24 addr:f78fc Call Stack 6 -- 3f5e24 addr:f78fc
********************Call Stack end******************* Call Stack end***
``` ```
为解析上述调用栈信息,需要使用到Hi3861\_wifiiot\_app.asm文件,该文件记录了代码中函数在Flash上的符号地址以及反汇编信息。asm文件会随版本打包一同构建输出,存放在./out/wifiiot/路径下。 为解析上述调用栈信息,需要使用到Hi3861_wifiiot_app.asm文件,该文件记录了代码中函数在Flash上的符号地址以及反汇编信息。asm文件会随版本打包一同构建输出,存放在./out/wifiiot/路径下。
1. 将调用栈CallStack信息保存到txt文档中,以便于编辑。(可选)
2. 打开asm文件,并搜索CallStack中的地址,列出对应的函数名 信息。通常只需找出前几个栈信息对应的函数,就可明确异常代码方向。
```
Call Stack 0 -- 4860d8 addr:f784c -- WadRecvCB
Call Stack 1 -- 47b2b2 addr:f788c -- wal_sdp_process_rx_data
Call Stack 2 -- 3e562c addr:f789c
Call Stack 3 -- 4101de addr:f78ac
Call Stack 4 -- 3e5f32 addr:f78cc
Call Stack 5 -- 3f78c0 addr:f78ec
Call Stack 6 -- 3f5e24 addr:f78fc
```
3. 根据以上调用栈信息,可以定位WadRecvCB函数中出现了异常。 1. 将调用栈CallStack信息保存到txt文档中,以便于编辑。(可选)
![](figures/zh-cn_image_0000001185334336.png) 2. 打开asm文件,并搜索CallStack中的地址,列出对应的函数名信息。通常只需找出前几个栈信息对应的函数,就可明确异常代码方向。
```
Call Stack 0 -- 4860d8 addr:f784c -- WadRecvCB
Call Stack 1 -- 47b2b2 addr:f788c -- wal_sdp_process_rx_data
Call Stack 2 -- 3e562c addr:f789c
Call Stack 3 -- 4101de addr:f78ac
Call Stack 4 -- 3e5f32 addr:f78cc
Call Stack 5 -- 3f78c0 addr:f78ec
Call Stack 6 -- 3f5e24 addr:f78fc
```
4. 完成代码排查及修改。 3. 根据以上调用栈信息,可以定位WadRecvCB函数中出现了异常。
![zh-cn_image_0000001271354733](figures/zh-cn_image_0000001271354733.png)
4. 完成代码排查及修改。
# 常见问题<a name="ZH-CN_TOPIC_0000001171934016"></a>
- [编译构建过程中,提示“No module named 'Crypto'”](#section982315398121)
- [编译构建过程中,提示“No module named 'ecdsa'”](#section102035451216)
- [编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”](#section4498158162320)
- [编译构建过程中,提示找不到“-lgcc”](#section11181036112615)
- [编译构建过程中,提示找不到“python”](#section1571810194619)
- [编译构建过程中,提示找不到“python3”](#section108385316482)
- [安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”](#section1221016541119)
- [安装python3过程中,提示“-bash: make: command not found”](#section1913477181213)
- [安装python3过程中,提示“zlib not available”](#section108211415131210)
- [安装python3过程中,提示“No module named '\_ctypes'”](#section2062268124)
- [安装 kconfiglib时,遇到lsb\_release错误](#section691681635814)
## 编译构建过程中,提示“No module named 'Crypto'”<a name="section982315398121"></a>
- **现象描述**
编译构建过程中出现以下错误:
```
ModuleNotFoundError: No module named 'Crypto'
```
- **可能原因**
环境中未安装“Crypto”。
- **解决办法**
方法1:通过命令“pip3 install Crypto”,在线安装。
方法2:离线安装。
通过网页[https://pypi.org/project/pycrypto/\#files](https://pypi.org/project/pycrypto/#files),下载源码。
![](figures/zh-cn_image_0000001171615542.png)
将源码放置在Linux服务器中,解压,并安装“python3 setup.py install”。
完成上述安装后,重新构建。
## 编译构建过程中,提示“No module named 'ecdsa'”<a name="section102035451216"></a>
- **现象描述**
编译构建过程中出现以下错误:
```
ModuleNotFoundError:No module named 'ecdsa'
```
- **可能原因**
环境中未安装“ecdsa”。
- **解决办法**
方法1:通过命令“pip3 install ecdsa”,在线安装。
方法2:离线安装
通过网页[https://pypi.org/project/ecdsa/\#files](https://pypi.org/project/ecdsa/#files),下载安装包。
![](figures/zh-cn_image_0000001171455574.png)
将安装包放置Linux服务器中,并安装“pip3 install ecdsa-0.15-py2.py3-none-any.whl”。
完成上述安装后,重新构建。
## 编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”<a name="section4498158162320"></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/zh-cn_image_0000001217013871.png)
将源码放置在Linux服务器中,并安装“pip3 install six-1.14.0-py2.py3-none-any.whl”。
完成上述安装后,重新构建。
## 编译构建过程中,提示找不到“-lgcc”<a name="section11181036112615"></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="section1571810194619"></a>
- **现象描述**
编译构建过程中出现以下错误:
```
-bash: /usr/bin/python: No such file or directory
```
- **可能原因**1
没有装python。
- **解决办法**
请使用如下命令安装Python,下方以Python3.8为例。
```
sudo apt-get install python3.8
```
- **可能原因2**
usr/bin目录下没有python软链接
![](figures/zh-cn_image_0000001171774098.png)
- **解决办法**
请运行以下命令添加软链接:
```
# cd /usr/bin/
# which python3
# ln -s /usr/local/bin/python3 python
# python --version
```
例:
![](figures/zh-cn_image_0000001171934032.png)
## 编译构建过程中,提示找不到“python3”<a name="section108385316482"></a>
- **现象描述**
![](figures/11.png)
- **可能原因**
没有装python3。
- **解决办法**
请使用如下命令安装Python3。
```
sudo apt-get install python3.8
```
## 安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”<a name="section1221016541119"></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="section1913477181213"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
-bash: make: command not found
```
- **可能原因**
环境中未安装“make”。
- **解决办法**
1. 通过命令“apt-get install make”在线安装。
2. 完成后,重新安装python3。
## 安装python3过程中,提示“zlib not available”<a name="section108211415131210"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
zipimport.ZipImportError: can't decompress data; zlib not avaliable
```
- **可能原因**
环境中未安装“zlib”。
- **解决办法**
方法1:通过命令“apt-get install zlib”在线安装。
方法2:如果软件源中没有该软件,请从“www.zlib.net”下载版本代码,并离线安装。
![](figures/10.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="section2062268124"></a>
- **现象描述**
安装python3过程中出现以下错误:
```
ModuleNotFoundError:No module named ‘_ctypes’
```
- **可能原因**
环境中未安装“libffi”和“libffi-devel”。
- **解决办法**
1、通过命令“apt-get install libffi\* -y”,在线安装。
2、完成后,重新安装python3。
## 安装 kconfiglib时,遇到lsb\_release错误<a name="section691681635814"></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"。
# 联网
完成版本编译及烧录后,下面开始介绍如何在串口终端上执行AT命令,使Hi3861 WLAN模组联网。
1. 保持Windows工作台和WLAN模组的连接状态,在DevEco Device Tool最下方,点击“DevEco:Serial Monitor”按钮。
**图1** 打开DevEco Device Tool串口终端示意图
![zh-cn_image_0000001227114644](figures/zh-cn_image_0000001227114644.png)
2. 复位Hi3861 WLAN模组,终端界面显示“ready to OS start”,则启动成功。
**图2** Hi3861 WLAN模组复位成功示意图
![zh-cn_image_0000001226794704](figures/zh-cn_image_0000001226794704.png)
3. 在串口终端中,依次执行如下AT命令,启动STA模式,连接指定AP热点,并开启DHCP功能。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 开发板启动后,串口会打印测试用例信息,待测试用例信息打印完成后再执行AT指令,否则AT指令会被测试用例信息覆盖。
```
AT+STARTSTA # 启动STA模式
AT+SCAN # 扫描周边AP
AT+SCANRESULT # 显示扫描结果
AT+CONN="SSID",,2,"PASSWORD" # 连接指定AP,其中SSID/PASSWORD为待连接的热点名称和密码
AT+STASTAT # 查看连接结果
AT+DHCP=wlan0,1 # 通过DHCP向AP请求wlan0的IP地址
```
4. 查看Hi3861 WLAN模组与网关联通是否正常,如下图所示。
```
AT+IFCFG # 查看模组接口IP
AT+PING=X.X.X.X # 检查模组与网关的联通性,其中X.X.X.X需替换为实际的网关地址
```
**图3** Hi3861 WLAN模组联网成功示意图
![zh-cn_image_0000001226954648](figures/zh-cn_image_0000001226954648.png)
# 安装开发板环境<a name="ZH-CN_TOPIC_0000001216935343"></a> # 安装Hi3861开发板环境
- [Hi3861工具要求](#section466851916410)
- [硬件要求](#section19202111020215)
- [软件要求](#section727451210318)
- [安装Linux编译工具](#section497484245614) ## Hi3861工具要求
- [安装编译依赖基础软件(仅Ubuntu 20+需要)](#section45512412251)
- [安装Scons](#section7438245172514)
- [安装python模块](#section88701892341)
- [安装gcc\_riscv32(WLAN模组类编译工具链)](#section34435451256)
## Hi3861工具要求<a name="section466851916410"></a> ### 硬件要求
### 硬件要求<a name="section19202111020215"></a> - Linux工作台
- Linux工作台 - Hi3861 WLAN模组
- Hi3861开发板
- USB Type-C线(Linux工作台通过USB与Hi3861开发板连接)
### 软件要求<a name="section727451210318"></a> - USB Type-C线(Linux工作台通过USB与Hi3861开发板连接)
>![](../public_sys-resources/icon-notice.gif) **须知:**
>本节描述采用安装包方式安装相关工具的操作步骤。如果使用Docker方式安装,无需安装[表1](#table6299192712513)中的相关工具,请直接从[新建应用程序](quickstart-lite-steps-hi3861-application-framework.md)开始操作。
Hi3861开发板需要的工具如下表所示。 ### 软件要求
**表 1** Hi3861开发板需要安装的工具
<a name="table6299192712513"></a> Hi3861 WLAN模组需要的工具如下表所示。
<table><thead align="left"><tr id="row122993276512"><th class="cellrowborder" valign="top" width="51.15%" id="mcps1.2.3.1.1"><p id="p1829914271858"><a name="p1829914271858"></a><a name="p1829914271858"></a>开发工具</p>
</th>
<th class="cellrowborder" valign="top" width="48.85%" id="mcps1.2.3.1.2"><p id="p429918274517"><a name="p429918274517"></a><a name="p429918274517"></a>用途</p> **表1** Hi3861 WLAN模组需要安装的编译工具
</th>
</tr>
</thead>
<tbody><tr id="row935218593572"><td class="cellrowborder" valign="top" width="51.15%" headers="mcps1.2.3.1.1 "><p id="p45551740589"><a name="p45551740589"></a><a name="p45551740589"></a>编译基础软件包(仅ubuntu 20+需要)</p>
</td>
<td class="cellrowborder" valign="top" width="48.85%" headers="mcps1.2.3.1.2 "><p id="p655594115814"><a name="p655594115814"></a><a name="p655594115814"></a>编译依赖的基础软件包</p>
</td>
</tr>
<tr id="row1397335913612"><td class="cellrowborder" valign="top" width="51.15%" headers="mcps1.2.3.1.1 "><p id="p097355911620"><a name="p097355911620"></a><a name="p097355911620"></a>SCons3.0.4+</p>
</td>
<td class="cellrowborder" valign="top" width="48.85%" headers="mcps1.2.3.1.2 "><p id="p1973195917619"><a name="p1973195917619"></a><a name="p1973195917619"></a>编译构建工具</p>
</td>
</tr>
<tr id="row1968013216717"><td class="cellrowborder" valign="top" width="51.15%" headers="mcps1.2.3.1.1 "><p id="p1991501391312"><a name="p1991501391312"></a><a name="p1991501391312"></a>python模块:setuptools、kconfiglib、pycryptodome、six、ecdsa</p>
</td>
<td class="cellrowborder" valign="top" width="48.85%" headers="mcps1.2.3.1.2 "><p id="p968120325715"><a name="p968120325715"></a><a name="p968120325715"></a>编译构建工具</p>
</td>
</tr>
<tr id="row020914491313"><td class="cellrowborder" valign="top" width="51.15%" headers="mcps1.2.3.1.1 "><p id="p7209104910317"><a name="p7209104910317"></a><a name="p7209104910317"></a>gcc riscv32</p>
</td>
<td class="cellrowborder" valign="top" width="48.85%" headers="mcps1.2.3.1.2 "><p id="p102093498311"><a name="p102093498311"></a><a name="p102093498311"></a>编译构建工具</p>
</td>
</tr>
</tbody>
</table>
## 安装Linux编译工具<a name="section497484245614"></a> | 开发工具 | 用途 |
| -------- | -------- |
| SCons3.0.4+ | 编译构建工具 |
| python模块:setuptools、kconfiglib、pycryptodome、six、ecdsa | 编译构建工具 |
| gcc&nbsp;riscv32 | 编译构建工具 |
### 安装编译依赖基础软件(仅Ubuntu 20+需要)<a name="section45512412251"></a>
执行以下命令进行安装: ## 安装编译工具
``` 编译Hi3861 WLAN模组需要一些特定的编译工具,在Ubuntu下通过以下步骤安装。
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
```
### 安装Scons<a name="section7438245172514"></a>
1. 运行如下命令,安装SCons安装包。 ### 安装Scons
```
python3 -m pip install scons
```
2. 运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。
```
scons -v
```
**图 1** SCons安装成功界面,版本要求3.0.4以上<a name="fig922558123418"></a>
![](figures/SCons安装成功界面-版本要求3-0-4以上.png "SCons安装成功界面-版本要求3-0-4以上")
### 安装python模块<a name="section88701892341"></a>
1. 运行如下命令,安装python模块setuptools。
```
pip3 install setuptools
```
2. 安装GUI menuconfig工具(Kconfiglib),建议安装Kconfiglib 13.2.0+版本,任选如下一种方式。
- **命令行方式:**
```
sudo pip3 install kconfiglib
```
- **安装包方式:**
1. 下载.whl文件(例如:kconfiglib-13.2.0-py2.py3-none-any.whl)。
下载路径:“[https://pypi.org/project/kconfiglib\#files](https://pypi.org/project/kconfiglib#files)”
1. 运行如下命令,安装.whl文件。
```
sudo pip3 install kconfiglib-13.2.0-py2.py3-none-any.whl
```
3. 安装pycryptodome,任选如下一种方式。
安装升级文件签名依赖的Python组件包,包括:pycryptodome、six、ecdsa。安装ecdsa依赖six,请先安装six,再安装ecdsa。
- **命令行方式:**
```
sudo pip3 install pycryptodome
```
- **安装包方式:**
1. 下载.whl文件(例如:pycryptodome-3.9.9-cp38-cp38-manylinux1\_x86\_64.whl)。
下载路径:“[https://pypi.org/project/pycryptodome/\#files](https://pypi.org/project/pycryptodome/#files)”。
1. 运行如下命令,安装.whl文件。
```
sudo pip3 install pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl
```
4. 安装six,任选如下一种方式。
- **命令行方式:**
```
sudo pip3 install six --upgrade --ignore-installed six
```
- **安装包方式:**
1. 下载.whl文件(例如:six-1.12.0-py2.py3-none-any.whl)。
下载路径:“[https://pypi.org/project/six/\#files](https://pypi.org/project/six/#files)”
1. 运行如下命令,安装.whl文件。
```
sudo pip3 install six-1.12.0-py2.py3-none-any.whl
```
5. 安装ecdsa,任选如下一种方式。
- **命令行方式:**
```
sudo pip3 install ecdsa
```
- **安装包方式:**
1. 下载.whl文件(例如:ecdsa-0.14.1-py2.py3-none-any.whl)。
下载路径:“[https://pypi.org/project/ecdsa/\#files](https://pypi.org/project/ecdsa/#files)”
1. 运行如下命令,安装.whl文件。
```
sudo pip3 install ecdsa-0.14.1-py2.py3-none-any.whl
```
### 安装gcc\_riscv32(WLAN模组类编译工具链)<a name="section34435451256"></a>
>![](../public_sys-resources/icon-notice.gif) **须知:**
>- Hi3861开发板平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,以免产品需遵从GPLV3许可证。
>- 通过下述步骤2-15,我们编译好了gcc\_riscv32 镜像,提供给开发者[直接下载](https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz)使用。直接下载 gcc\_riscv32 镜像的开发者可省略下述2-15步。
1. 打开Linux编译服务器终端。
2. 环境准备,请安装"gcc, g++, bison, flex, makeinfo"软件,确保工具链能正确编译。
```
sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install flex bison && sudo apt-get install texinfo
```
3. 下载riscv-gnu-toolchain交叉编译工具链。
```
git clone --recursive https://gitee.com/mirrors/riscv-gnu-toolchain.git
```
4. 打开文件夹riscv-gnu-toolchain,先删除空文件夹,以防止下载newlib,binutils,gcc时冲突。
```
cd riscv-gnu-toolchain && rm -rf riscv-newlib && rm -rf riscv-binutils && rm -rf riscv-gcc
```
5. 下载riscv-newlib-3.0.0。
```
git clone -b riscv-newlib-3.0.0 https://github.com/riscv/riscv-newlib.git
```
6. 下载riscv-binutils-2.31.1。
```
git clone -b riscv-binutils-2.31.1 https://github.com/riscv/riscv-binutils-gdb.git
```
7. 下载riscv-gcc-7.3.0。
```
git clone -b riscv-gcc-7.3.0 https://github.com/riscv/riscv-gcc
```
8. 添加riscv-gcc-7.3.0补丁。
访问gcc官方补丁链接[89411](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=026216a753ef0a757a9e368a59fa667ea422cf09;hp=2a23a1c39fb33df0277abd4486a3da64ae5e62c2),[86724](https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff;f=gcc/graphite.h;h=be0a22b38942850d88feb159603bb846a8607539;hp=4e0e58c60ab83f1b8acf576e83330466775fac17;hb=b1761565882ed6a171136c2c89e597bc4dd5b6bf;hpb=fbd5f023a03f9f60c6ae36133703af5a711842a3),按照补丁链接中要求的修改,手动将变更添加到对应的.c和.h文件中,注意由于patch版本与下载的gcc版本有所偏差,行数有可能对应不上,请自行查找patch中的关键字定位到对应行。
9. 下载[GMP 6.1.2](https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2),并解压安装。
```
tar -xvf gmp-6.1.2.tar.bz2 && mkdir build_gmp && cd build_gmp && ../gmp-6.1.2/configure --prefix=/usr/local/gmp-6.1.2 --disable-shared --enable-cxx && make && make install
```
10. 下载[mpfr-4.0.2 ](https://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.gz),并解压安装。
```
tar -xvf mpfr-4.0.2.tar.gz && mkdir build_mpfr && cd build_mpfr && ../mpfr-4.0.2/configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2 --disable-shared && make && make install
```
11. 下载[mpc-1.1.0](https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz) ,并解压安装。
```
tar -xvf mpc-1.1.0.tar.gz && mkdir build_mpc && cd build_mpc && ../mpc-1.1.0/configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 --disable-shared && make && make install
```
12. 打开文件夹riscv-gnu-toolchain,新建工具链输出目录。
```
cd /opt && mkdir gcc_riscv32
```
13. 编译binutils。
```
mkdir build_binutils && cd build_binutils && ../riscv-binutils-gdb/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32/riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install && cd ..
```
14. 编译newlib。
```
mkdir build_newlib && cd build_newlib && ../riscv-newlib/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" \CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install && cd ..
```
15. 编译gcc。
```
mkdir build_gcc && cd build_gcc && ../riscv-gcc/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --with-headers="/opt/gcc-riscv32/riscv32-unknown-elf/include" --with-mpc=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 && make -j16 && make install
```
16. 设置环境变量。
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果直接采用编译好的riscv32 gcc包,请先执行以下命令将压缩包解压到根目录:
>```
>tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
>```
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/gcc_riscv32/bin:$PATH
```
17. 生效环境变量。
```
source ~/.bashrc
```
18. Shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
```
riscv32-unknown-elf-gcc -v
```
1. 运行如下命令,安装SCons安装包。
```
python3 -m pip install scons
```
2. 运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。
```
scons -v
```
**图1** SCons安装成功界面,版本要求3.0.4以上
![zh-cn_image_0000001271234749](figures/zh-cn_image_0000001271234749.png)
### 安装python模块
1. 运行如下命令,安装python模块setuptools。
```
pip3 install setuptools
```
2. 安装GUI menuconfig工具(Kconfiglib),建议安装Kconfiglib 13.2.0+版本,任选如下一种方式。
- **命令行方式:**
```
sudo pip3 install kconfiglib
```
- **安装包方式:**
1. 下载.whl文件(例如:kconfiglib-13.2.0-py2.py3-none-any.whl)。
下载路径:“[https://pypi.org/project/kconfiglib#files](https://pypi.org/project/kconfiglib#files)
2. 运行如下命令,安装.whl文件。
```
sudo pip3 install kconfiglib-13.2.0-py2.py3-none-any.whl
```
3. 安装pycryptodome,任选如下一种方式。
安装升级文件签名依赖的Python组件包,包括:pycryptodome、six、ecdsa。安装ecdsa依赖six,请先安装six,再安装ecdsa。
- **命令行方式:**
```
sudo pip3 install pycryptodome
```
- **安装包方式:**
1. 下载.whl文件(例如:pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl)。
下载路径:“[https://pypi.org/project/pycryptodome/#files](https://pypi.org/project/pycryptodome/#files)”。
2. 运行如下命令,安装.whl文件。
```
sudo pip3 install pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl
```
4. 安装six,任选如下一种方式。
- **命令行方式:**
```
sudo pip3 install six --upgrade --ignore-installed six
```
- **安装包方式:**
1. 下载.whl文件(例如:six-1.12.0-py2.py3-none-any.whl)。
下载路径:“[https://pypi.org/project/six/#files](https://pypi.org/project/six/#files)
2. 运行如下命令,安装.whl文件。
```
sudo pip3 install six-1.12.0-py2.py3-none-any.whl
```
5. 安装ecdsa,任选如下一种方式。
- **命令行方式:**
```
sudo pip3 install ecdsa
```
- **安装包方式:**
1. 下载.whl文件(例如:ecdsa-0.14.1-py2.py3-none-any.whl)。
下载路径:“[https://pypi.org/project/ecdsa/#files](https://pypi.org/project/ecdsa/#files)
2. 运行如下命令,安装.whl文件。
```
sudo pip3 install ecdsa-0.14.1-py2.py3-none-any.whl
```
### 安装gcc_riscv32(WLAN模组类编译工具链)
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> - Hi3861开发板平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,以免产品需遵从GPLV3许可证。
>
> - 通过下述步骤2-14,我们编译好了gcc_riscv32镜像,提供给开发者[直接下载](https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz)使用。直接下载gcc_riscv32镜像的开发者可省略下述2-14步。
1. 打开Linux编译服务器终端。
2. 下载riscv-gnu-toolchain交叉编译工具链。
```
git clone --recursive https://gitee.com/mirrors/riscv-gnu-toolchain.git
```
3. 打开文件夹riscv-gnu-toolchain,先删除空文件夹,以防止下载newlib,binutils,gcc时冲突。
```
cd riscv-gnu-toolchain && rm -rf riscv-newlib && rm -rf riscv-binutils && rm -rf riscv-gcc
```
4. 下载riscv-newlib-3.0.0。
```
git clone -b riscv-newlib-3.0.0 https://github.com/riscv/riscv-newlib.git
```
5. 下载riscv-binutils-2.31.1。
```
git clone -b riscv-binutils-2.31.1 https://github.com/riscv/riscv-binutils-gdb.git
```
6. 下载riscv-gcc-7.3.0。
```
git clone -b riscv-gcc-7.3.0 https://github.com/riscv/riscv-gcc
```
7. 添加riscv-gcc-7.3.0补丁。
访问gcc官方补丁链接[89411](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=026216a753ef0a757a9e368a59fa667ea422cf09;hp=2a23a1c39fb33df0277abd4486a3da64ae5e62c2)[86724](https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff;f=gcc/graphite.h;h=be0a22b38942850d88feb159603bb846a8607539;hp=4e0e58c60ab83f1b8acf576e83330466775fac17;hb=b1761565882ed6a171136c2c89e597bc4dd5b6bf;hpb=fbd5f023a03f9f60c6ae36133703af5a711842a3),按照补丁链接中要求的修改,手动将变更添加到对应的.c和.h文件中,注意由于patch版本与下载的gcc版本有所偏差,行数有可能对应不上,请自行查找patch中的关键字定位到对应行。
8. 下载[GMP 6.1.2](https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2),并解压安装。
```
tar -xvf gmp-6.1.2.tar.bz2 && mkdir build_gmp && cd build_gmp && ../gmp-6.1.2/configure --prefix=/usr/local/gmp-6.1.2 --disable-shared --enable-cxx && make && make install
```
9. 下载[mpfr-4.0.2 ](https://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.gz),并解压安装。
```
tar -xvf mpfr-4.0.2.tar.gz && mkdir build_mpfr && cd build_mpfr && ../mpfr-4.0.2/configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2 --disable-shared && make && make install
```
10. 下载[mpc-1.1.0](https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz) ,并解压安装。
```
tar -xvf mpc-1.1.0.tar.gz && mkdir build_mpc && cd build_mpc && ../mpc-1.1.0/configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 --disable-shared && make && make install
```
11. 打开文件夹riscv-gnu-toolchain,新建工具链输出目录。
```
cd /opt && mkdir gcc_riscv32
```
12. 编译binutils。
```
mkdir build_binutils && cd build_binutils && ../riscv-binutils-gdb/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32/riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install && cd ..
```
13. 编译newlib。
```
mkdir build_newlib && cd build_newlib && ../riscv-newlib/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" \CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install && cd ..
```
14. 编译gcc。
```
mkdir build_gcc && cd build_gcc && ../riscv-gcc/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --with-headers="/opt/gcc-riscv32/riscv32-unknown-elf/include" --with-mpc=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 && make -j16 && make install
```
15. 设置环境变量。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果直接采用编译好的riscv32 gcc包,请先执行以下命令将压缩包解压到根目录:
>
> ```
> tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
> ```
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/gcc_riscv32/bin:$PATH
```
16. 生效环境变量。
```
source ~/.bashrc
```
17. Shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
```
riscv32-unknown-elf-gcc -v
```
# Hi3861开发板<a name="ZH-CN_TOPIC_0000001171774078"></a> # Hi3861开发板
- **[安装开发板环境](quickstart-lite-steps-hi3861-setting.md)**
- **[新建应用程序](quickstart-lite-steps-hi3861-application-framework.md)**
- **[编译](quickstart-lite-steps-hi3861-building.md)** - **[安装Hi3861开发板环境](quickstart-lite-steps-hi3861-setting.md)**
- **[烧录](quickstart-lite-steps-hi3861-burn.md)** - **[编写“Hello World”程序](quickstart-lite-steps-hi3861-application-framework.md)**
- **[调试验证](quickstart-lite-steps-hi3861-debug.md)** - **[编译](quickstart-lite-steps-hi3861-building.md)**
- **[运行](quickstart-lite-steps-hi3861-running.md)** - **[烧录](quickstart-lite-steps-hi3861-burn.md)**
- **[常见问题](quickstart-lite-steps-hi3861-faqs.md)** - **[联网](quickstart-lite-steps-hi3861-netconfig.md)**
- **[调试验证](quickstart-lite-steps-hi3861-debug.md)**
- **[运行](quickstart-lite-steps-hi3816-running.md)**
\ No newline at end of file
# 运行“Hello World”<a name="ZH-CN_TOPIC_0000001171934018"></a> # 运行“Hello World”
- **[Hi3861开发板](quickstart-lite-steps-hi3861.md)**
- **[Hi3516开发板](quickstart-lite-steps-hi3516.md)**
- **[Hi3518开发板](quickstart-lite-steps-hi3518.md)**
- **[Hi3861开发板](quickstart-lite-steps-hi3861.md)**
- **[Hi3516开发板](quickstart-lite-steps-hi3516.md)**
\ No newline at end of file
# 轻量和小型系统入门<a name="ZH-CN_TOPIC_0000001112826850"></a> # 轻量和小型系统入门
- **[轻量与小型系统入门概述](quickstart-lite-overview.md)**
- **[搭建轻量与小型系统环境](quickstart-lite-env-setup.md)**
- **[运行“Hello World”](quickstart-lite-steps.md)**
- **[附录](quickstart-lite-introduction.md)**
- **[轻量和小型系统快速入门-安装包](quickstart-docker-lite.md)**
- **[轻量和小型系统快速入门-IDE](quickstart-ide-lite.md)**
\ No newline at end of file
# Hi3516开发板介绍<a name="ZH-CN_TOPIC_0000001188526456"></a>
- [开发板简介](#zh-cn_topic_0000001053666242_section047719215429)
- [开发板规格](#zh-cn_topic_0000001053666242_section15192203316533)
## 开发板简介<a name="zh-cn_topic_0000001053666242_section047719215429"></a>
Hi3516DV300是新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP\(Image Signal Processor\)、H.265视频压缩编码器、高性能NNIE引擎,在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。
**图 1** Hi3516单板正面外观图<a name="fig202901538183412"></a>
![](figures/Hi3516单板正面外观图.png "Hi3516单板正面外观图")
## 开发板规格<a name="zh-cn_topic_0000001053666242_section15192203316533"></a>
**表 1** Hi3516开发板规格清单
<a name="zh-cn_topic_0000001053666242_table31714894311"></a>
<table><thead align="left"><tr id="zh-cn_topic_0000001053666242_row10171198194310"><th class="cellrowborder" valign="top" width="22.52%" id="mcps1.2.3.1.1"><p id="zh-cn_topic_0000001053666242_a2b235e9ed55f4338886788f140e648a0"><a name="zh-cn_topic_0000001053666242_a2b235e9ed55f4338886788f140e648a0"></a><a name="zh-cn_topic_0000001053666242_a2b235e9ed55f4338886788f140e648a0"></a>规格类型</p>
</th>
<th class="cellrowborder" valign="top" width="77.48%" id="mcps1.2.3.1.2"><p id="zh-cn_topic_0000001053666242_p9702458104014"><a name="zh-cn_topic_0000001053666242_p9702458104014"></a><a name="zh-cn_topic_0000001053666242_p9702458104014"></a>规格清单</p>
</th>
</tr>
</thead>
<tbody><tr id="zh-cn_topic_0000001053666242_row0171168114311"><td class="cellrowborder" valign="top" width="22.52%" headers="mcps1.2.3.1.1 "><p id="zh-cn_topic_0000001053666242_p1698185431418"><a name="zh-cn_topic_0000001053666242_p1698185431418"></a><a name="zh-cn_topic_0000001053666242_p1698185431418"></a><strong id="zh-cn_topic_0000001053666242_b127621861200"><a name="zh-cn_topic_0000001053666242_b127621861200"></a><a name="zh-cn_topic_0000001053666242_b127621861200"></a>处理器及内部存储</strong></p>
</td>
<td class="cellrowborder" valign="top" width="77.48%" headers="mcps1.2.3.1.2 "><a name="zh-cn_topic_0000001053666242_ul1147113537186"></a><a name="zh-cn_topic_0000001053666242_ul1147113537186"></a><ul id="zh-cn_topic_0000001053666242_ul1147113537186"><li>Hi3516DV300芯片</li><li>DDR3 1GB</li><li>eMMC4.5,8GB容量</li></ul>
</td>
</tr>
<tr id="zh-cn_topic_0000001053666242_row21721687435"><td class="cellrowborder" valign="top" width="22.52%" headers="mcps1.2.3.1.1 "><p id="zh-cn_topic_0000001053666242_p817216810435"><a name="zh-cn_topic_0000001053666242_p817216810435"></a><a name="zh-cn_topic_0000001053666242_p817216810435"></a><strong id="zh-cn_topic_0000001053666242_b1172016266246"><a name="zh-cn_topic_0000001053666242_b1172016266246"></a><a name="zh-cn_topic_0000001053666242_b1172016266246"></a>外部器件</strong></p>
</td>
<td class="cellrowborder" valign="top" width="77.48%" headers="mcps1.2.3.1.2 "><a name="zh-cn_topic_0000001053666242_ul179543016208"></a><a name="zh-cn_topic_0000001053666242_ul179543016208"></a><ul id="zh-cn_topic_0000001053666242_ul179543016208"><li>以太网口</li><li>音频视频<a name="zh-cn_topic_0000001053666242_ul5941311869"></a><a name="zh-cn_topic_0000001053666242_ul5941311869"></a><ul id="zh-cn_topic_0000001053666242_ul5941311869"><li>1路语音输入</li><li>1路单声道(AC_L)输出,接3W功放(LM4871)</li><li>MicroHDMI(1路HDMI 1.4)</li></ul>
</li><li>摄像头<a name="zh-cn_topic_0000001053666242_ul924263620"></a><a name="zh-cn_topic_0000001053666242_ul924263620"></a><ul id="zh-cn_topic_0000001053666242_ul924263620"><li>传感器IMX335</li><li>镜头M12,焦距4mm,光圈1.8</li></ul>
</li><li>显示屏<a name="zh-cn_topic_0000001053666242_ul101471711667"></a><a name="zh-cn_topic_0000001053666242_ul101471711667"></a><ul id="zh-cn_topic_0000001053666242_ul101471711667"><li>LCD连接器(2.35寸)</li><li>LCD连接器(5.5寸)</li></ul>
</li><li>外部器件及接口<a name="zh-cn_topic_0000001053666242_ul089255556"></a><a name="zh-cn_topic_0000001053666242_ul089255556"></a><ul id="zh-cn_topic_0000001053666242_ul089255556"><li>SD卡接口</li><li>JTAG/I2S接口</li><li>ADC接口</li><li>舵机接口</li><li>Grove连接器</li><li>USB2.0(Type C)</li><li>功能按键3个,2个用户自定义按键,1个升级按键</li><li>LED指示灯,绿灯,红灯</li></ul>
</li></ul>
</td>
</tr>
</tbody>
</table>
# RK3568开发板介绍<a name="ZH-CN_TOPIC_0000001188686354"></a>
参见:[润和HH-SCDAYU200开发套件](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/README.md)
\ No newline at end of file
# 附录<a name="ZH-CN_TOPIC_0000001234044677"></a> # 附录
- **[Hi3516开发板介绍](quickstart-standard-appendix-hi3516.md)**
- **[RK3568开发板介绍](quickstart-standard-appendix-rk3568.md)**
- **[开发板介绍](quickstart-standard-board-introduction.md)**
- **[参考信息](quickstart-standard-reference.md)**
\ No newline at end of file
# Hi3516开发板介绍
## 开发板简介
Hi3516DV300是新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP(Image Signal Processor)、H.265视频压缩编码器、高性能NNIE引擎,在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。
**图1** Hi3516单板正面外观图
![zh-cn_image_0000001226922318](figures/zh-cn_image_0000001226922318.png)
## 开发板规格
**表1** Hi3516开发板规格清单
| 规格类型 | 规格清单 |
| -------- | -------- |
| **处理器及内部存储** | -&nbsp;Hi3516DV300芯片<br/>-&nbsp;DDR3&nbsp;1GB<br/>-&nbsp;eMMC4.5,8GB容量 |
| **外部器件** | -&nbsp;以太网口<br/>-&nbsp;音频视频<br/>&nbsp;&nbsp;-&nbsp;1路语音输入<br/>&nbsp;&nbsp;-&nbsp;1路单声道(AC_L)输出,接3W功放(LM4871)<br/>&nbsp;&nbsp;-&nbsp;MicroHDMI(1路HDMI&nbsp;1.4)<br/>-&nbsp;摄像头<br/>&nbsp;&nbsp;-&nbsp;传感器IMX335<br/>&nbsp;&nbsp;-&nbsp;镜头M12,焦距4mm,光圈1.8<br/>-&nbsp;显示屏<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(2.35寸)<br/>&nbsp;&nbsp;-&nbsp;LCD连接器(5.5寸)<br/>-&nbsp;外部器件及接口<br/>&nbsp;&nbsp;-&nbsp;SD卡接口<br/>&nbsp;&nbsp;-&nbsp;JTAG/I2S接口<br/>&nbsp;&nbsp;-&nbsp;ADC接口<br/>&nbsp;&nbsp;-&nbsp;舵机接口<br/>&nbsp;&nbsp;-&nbsp;Grove连接器<br/>&nbsp;&nbsp;-&nbsp;USB2.0(Type&nbsp;C)<br/>&nbsp;&nbsp;-&nbsp;功能按键3个,2个用户自定义按键,1个升级按键<br/>&nbsp;&nbsp;-&nbsp;LED指示灯,绿灯,红灯 |
# RK3568开发板介绍
## 开发板简介
RK3568开发板基于Rockchip RK3568芯片,集成双核心架构GPU以及高效能NPU;搭载四核64位Cortex-A55处理器,采用22nm先进工艺,主频高达2.0GHz;支持蓝牙、Wi-Fi、音频、视频和摄像头等功能,拥有丰富的扩展接口,支持多种视频输入输出接口;配置双千兆自适应RJ45以太网口,可满足NVR、工业网关等多网口产品需求。
**图1** RK3568开发板正面
![zh-cn_image_0000001271442261](figures/zh-cn_image_0000001271442261.png)
**图2** RK3568开发板背面
![zh-cn_image_0000001226602394](figures/zh-cn_image_0000001226602394.png)
## 开发板规格
**表1** RK3568开发板规格说明
| 规格类型 | 规格清单 |
| -------- | -------- |
| 显示接口 | -&nbsp;1×HDMI2.0(Type-A)接口,支持4K/60fps输出<br/>-&nbsp;2×MIPI接口,支1920\*1080\@60fps输出<br/>-&nbsp;1×eDP接口,支持2K\@60fps输出 |
| 音频接口 | -&nbsp;1×8ch&nbsp;I2S/TDM/PDM<br/>-&nbsp;1×HDMI音频输出<br/>-&nbsp;1×喇叭输出<br/>-&nbsp;1×耳机输出<br/>-&nbsp;1×麦克风,板载音频输入 |
| 以太网 | 2×GMAC(10/100/1000M) |
| 无线网络 | SDIO接口,支持WIFI6&nbsp;5G/2.5G,BT4.2 |
| 摄像头接口 | MIPI-CSI2,1x4-lane/2x2-lane\@2.5Gbps/lane |
| USB | -&nbsp;2×USB2.0&nbsp;Host,Type-A<br/>-&nbsp;1×USB3.0&nbsp;Host,Type-A<br/>-&nbsp;1×USB3.0&nbsp;OTG |
| PCIe | 1×2Lanes&nbsp;PCIe3.0&nbsp;Connector&nbsp;(RC&nbsp;Mode) |
| SATA | 1×SATA3.0&nbsp;Connector |
| SDMMC | 1×Micro&nbsp;SD&nbsp;Card3.0 |
| 按键 | -&nbsp;1×Vol+/Recovery<br/>-&nbsp;1×Reset<br/>-&nbsp;1×Power<br/>-&nbsp;1×Vol-<br/>-&nbsp;1×Mute |
| 调试 | 1×调试串口 |
| RTC | 1×RTC |
| IR | 1×IR |
| 三色灯 | 3×LED |
| G-sensor | 1×G-sensor |
| FAN | 1×Fan |
| 扩展接口 | 20Pin扩展接口包括:<br/>-&nbsp;2×ADC接口<br/>-&nbsp;2×I2C接口<br/>-&nbsp;7×GPIO口(或者3×gpio&nbsp;+&nbsp;4×uart信号)<br/>-&nbsp;3×VCC电源(12V、3.3V、5V) |
| 底板尺寸 | 180mm×130mm |
| PCB规格 | 4&nbsp;层板 |
# 开发板介绍
- **[Hi3516开发板介绍](quickstart-standard-board-introduction-hi3516.md)**
- **[RK3568开发板介绍](quickstart-standard-board-introduction-rk3568.md)**
\ No newline at end of file
# 标准系统快速入门-安装包
- **[标准系统入门概述](quickstart-standard-overview.md)**
- **[搭建标准系统环境](quickstart-standard-env-setup.md)**
- **[运行“Hello World”](quickstart-standard-running.md)**
- **[常见问题](quickstart-standard-faqs.md)**
- **[附录](quickstart-standard-appendix.md)**
\ No newline at end of file
# 开发环境准备<a name="ZH-CN_TOPIC_0000001193328250"></a> # 搭建标准系统环境
- [系统要求](#zh-cn_topic_0000001072959308_section1865184385215)
- [安装DevEco Device Tool](#zh-cn_topic_0000001072959308_section86587531620)
DevEco Device Tool Ubuntu版本支持OpenHarmony源码开发、编译、烧录的一站式开发环境,因此,本章节为您介绍在Ubuntu环境下,如何搭建一套完整的可视化开发环境。 ## 系统要求
## 系统要求<a name="zh-cn_topic_0000001072959308_section1865184385215"></a> - Windows系统要求:Windows10 64位系统。
- Ubuntu18及以上版本,内存推荐16 GB及以上。 - Ubuntu系统要求:Ubuntu18.04及以上版本,内存推荐16 GB及以上。
- 系统的用户名不能含有中文字符。
- 只能使用普通用户角色搭建开发环境。
## 安装DevEco Device Tool<a name="zh-cn_topic_0000001072959308_section86587531620"></a> - Windows系统和Ubuntu系统的用户名不能包含中文字符。
DevEco Device Tool基于Visual Studio Code进行扩展,在Visual Studio Code上以插件方式运行,Visual Studio Code版本为1.60及以上。同时,DevEco Device Tool还依赖Python工具,并要求Python为3.8\~3.9版本。 - Windows和Ubuntu上安装的DevEco Device Tool为3.0 Release版本。
在安装过程中,DevEco Device Tool会自动检查Visual Studio Code和Python,如果检测到Visual Studio Code、Python未安装或版本不符合要求,安装程序会自动安装Visual Studio Code和Python。
1. 将Ubuntu Shell环境修改为bash。 ## 安装必要的库和工具
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
``` 编译OpenHarmony需要一些库和工具,可以通过以下步骤进行安装。
ls -l /bin/sh
```
![](figures/zh-cn_image_0000001194078294.png) 相应操作在Ubuntu环境中进行。
2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。 1. 使用如下apt-get命令安装后续操作所需的库和工具:
```
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales
```
``` > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
sudo dpkg-reconfigure dash > 以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中:
``` >
> - Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
>
> - java要求java8及以上版本,此处以java8为例。
![](figures/zh-cn_image_0000001238878219.png) 2. 将python 3.8设置为默认python版本。
查看python 3.8的位置:
2. 下载[DevEco Device Tool 3.0 Beta2](https://device.harmonyos.com/cn/ide#download_beta)Linux版本,下载时,请先使用华为开发者帐号进行登录后下载。如未注册华为开发者账号,请先[注册](https://developer.huawei.com/consumer/cn/doc/start/registration-and-verification-0000001053628148)
3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。 ```
1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.200.zip为软件包名称,请根据实际进行修改。 which python3.8
```
``` 将python和python3切换为python3.8:
unzip devicetool-linux-tool-3.0.0.300.zip
``` ```
sudo update-alternatives --install /usr/bin/python python {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
sudo update-alternatives --install /usr/bin/python3 python3 {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
```
2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。
``` ## 安装DevEco Device Tool
chmod u+x devicetool-linux-tool-3.0.0.300.sh
```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改 通过Windows系统远程访问Ubuntu环境进行烧录等操作,需要先在Windows和Ubuntu下分别安装DevEco Device Tool
>![](../public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>安装过程中,会自动检查Visual Studio Code和Python是否安装,且版本符合要求,其中Visual Studio Code为1.60及以上版本,Python为3.8\~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装 > DevEco Device Tool 是OpenHarmony的一站式开发工具,支持源码开发、编译、烧录,调测等,本文主要用其远端链接Ubuntu环境进行烧录和运行
```
sudo ./devicetool-linux-tool-3.0.0.300.sh -- --install-plugins
```
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 ### 安装Window版本DevEco Device Tool
![](figures/zh-cn_image_0000001239348791.png) 1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。
5. 安装完成后,在Ubuntu左下角的![](figures/zh-cn_image_0000001075566984.png)中,启动Visual Studio Code。 2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
6. 启动Visual Studio Code,DevEco Device Tool运行依赖C/C++、CodeLLDB插件,请点击Visual Studio Code左侧的![](figures/button.png)按钮,分别搜索和安装C/C++、CodeLLDB插件。
>![](../public_sys-resources/icon-note.gif) **说明:** 3. 设置DevEco Device Tool的安装路径,建议安装到非系统盘符,点击**Next**
>如果在插件市场安装C/C++和CodeLLDB插件不成功,可手动下载插件后进行安装,具体请参考:[离线安装C/C++和CodeLLDB插件](https://device.harmonyos.com/cn/docs/documentation/guide/offline_plugin_install-0000001074376846)。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您已安装DevEco Device Tool 3.0 Beta2及以前的版本,则在安装新版本时,会先卸载旧版本,卸载过程中出现如下错误提示时,请点击“Ignore”继续安装,该错误不影响新版本的安装。
>
> ![zh-cn_image_0000001239275843](figures/zh-cn_image_0000001239275843.png)
![](figures/deveco-device-tool-install-sucessful.png) ![zh-cn_image_0000001270076961](figures/zh-cn_image_0000001270076961.png)
7. 重启Visual Studio Code,点击![](figures/zh-cn_image_0000001239226427.png)进入DevEco Device Tool工具界面。至此,DevEco Device Tool Ubuntu开发环境安装完成。![](figures/zh-cn_image_0000001194668634.png) 4. 根据安装向导提示,勾选要自动安装的软件。
1. 在弹出VSCode installation confirm页面,勾选“Install VScode 1.62.2automatically”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果检测到Visual Studio Code已安装,且版本为1.62及以上,则会跳过该步骤。
![zh-cn_image_0000001237801283](figures/zh-cn_image_0000001237801283.png)
2. 在弹出的Python select page选择“Download from Huawei mirror”,点击**Next**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果系统已安装可兼容的Python版本(Python 3.8~3.9版本),可选择“Use one of compatible on your PC”。
![zh-cn_image_0000001193983334](figures/zh-cn_image_0000001193983334.png)
5. 在以下界面点击**Next**,进行软件下载和安装。
![zh-cn_image_0000001239634067](figures/zh-cn_image_0000001239634067.png)
6. 继续等待DevEco Device Tool安装向导自动安装DevEco Device Tool插件,直至安装完成,点击**Finish**,关闭DevEco Device Tool安装向导。
![zh-cn_image_0000001239650137](figures/zh-cn_image_0000001239650137.png)
7. 打开Visual Studio Code,进入DevEco Device Tool工具界面。至此,DevEco Device Tool Windows开发环境安装完成。
![zh-cn_image_0000001225760456](figures/zh-cn_image_0000001225760456.png)
### 安装Ubuntu版本DevEco Device Tool
1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
```
ls -l /bin/sh
```
![zh-cn_image_0000001226764302](figures/zh-cn_image_0000001226764302.png)
2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。
```
sudo dpkg-reconfigure dash
```
![zh-cn_image_0000001243641075](figures/zh-cn_image_0000001243641075.png)
2. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Linux版本。
3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。
1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.400.zip为软件包名称,请根据实际进行修改。
```
unzip devicetool-linux-tool-3.0.0.400.zip
```
2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
```
chmod u+x devicetool-linux-tool-3.0.0.400.sh
```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.400.sh请根据实际进行修改。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
```
sudo ./devicetool-linux-tool-3.0.0.300.sh
```
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png)
## 配置Windows远程访问Ubuntu环境
### 安装SSH服务并获取远程访问的IP地址
1. 在Ubuntu系统中,打开终端工具,执行如下命令安装SSH服务。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果执行该命令失败,提示openssh-server和openssh-client依赖版本不同,请根据CLI界面提示信息,安装openssh-client相应版本后(例如:sudo apt-get install openssh-client=1:8.2p1-4),再重新执行该命令安装openssh-server。
```
sudo apt-get install openssh-server
```
2. 执行如下命令,启动SSH服务。
```
sudo systemctl start ssh
```
3. 执行如下命令,获取当前用户的IP地址,用于Windows系统远程访问Ubuntu环境。
```
ifconfig
```
![zh-cn_image_0000001215737140](figures/zh-cn_image_0000001215737140.png)
### 安装Remote SSH
1. 打开Windows系统下的Visual Studio Code,点击![zh-cn_image_0000001239080359](figures/zh-cn_image_0000001239080359.png),在插件市场的搜索输入框中输入“remote-ssh”。
![zh-cn_image_0000001193920448](figures/zh-cn_image_0000001193920448.png)
2. 点击Remote-SSH的**Install**按钮,安装Remote-SSH。安装成功后,在**INSTALLED**下可以看到已安装Remote-SSH。
![zh-cn_image_0000001238880335](figures/zh-cn_image_0000001238880335.png)
### 远程连接Ubuntu环境
1. 打开Windows系统的Visual Studio Code,点击![zh-cn_image_0000001238760373](figures/zh-cn_image_0000001238760373.png),在REMOTE EXOPLORER页面点击+按钮。
![zh-cn_image_0000001215878922](figures/zh-cn_image_0000001215878922.png)
2. 在弹出的SSH连接命令输入框中输入“ssh _username_\@_ip_address_”,其中ip_address为要连接的远程计算机的IP地址,username为登录远程计算机的帐号。
![zh-cn_image_0000001215879750](figures/zh-cn_image_0000001215879750.png)
3. 在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
![zh-cn_image_0000001260519729](figures/zh-cn_image_0000001260519729.png)
4. 在SSH TARGETS中,找到远程计算机,点击![zh-cn_image_0000001194080414](figures/zh-cn_image_0000001194080414.png),打开远程计算机。
![zh-cn_image_0000001215720398](figures/zh-cn_image_0000001215720398.png)
5. 在弹出的输入框中,选择**Linux**,然后在选择**Continue**,然后输入登录远程计算机的密码,连接远程计算机 。
![zh-cn_image_0000001215897530](figures/zh-cn_image_0000001215897530.png)
连接成功后,等待在远程计算机.vscode-server文件夹下自动安装插件,安装完成后,根据界面提示在Windows系统下重新加载Visual Studio Code,便可以在Windows的DevEco Device Tool界面进行源码开发、编译、烧录等操作。
### 注册访问Ubuntu环境的公钥
在完成以上操作后,您就可以通过Windows远程连接Ubuntu环境进行开发了,但在使用过程中,需要您频繁的输入远程连接密码来进行连接。为解决该问题,您可以使用SSH公钥来进行设置。
1. 打开Git bash命令行窗口,执行如下命令,生成SSH公钥,请注意,在执行命令过程中,请根据界面提示进行操作。username和ip请填写连接Ubuntu系统时需要的参数。
```
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip
```
![zh-cn_image_0000001271532317](figures/zh-cn_image_0000001271532317.png)
2. 在Visual Studio Code中,点击远程连接的设置按钮,并选择打开config文件。
![zh-cn_image_0000001226034634](figures/zh-cn_image_0000001226034634.png)
3. 在config配置文件中添加SSK Key文件信息,如下图所示,然后保存即可。
![zh-cn_image_0000001270356233](figures/zh-cn_image_0000001270356233.png)
## 获取源码
在Ubuntu环境下通过以下步骤拉取OpenHarmony源码。
### 准备工作
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装git客户端和git-lfs。(上述工具已在安装必要的库和工具小节安装。如已安装,请忽略)
更新软件源:
```
sudo apt-get update
```
通过以下命令安装:
```
sudo apt-get install git git-lfs
```
4. 配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
5. 执行如下命令安装码云repo工具。
```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
### 获取源码
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> Master主干为开发分支,开发者可通过Master主干获取最新特性。发布分支代码相对比较稳定,开发者可基于发布分支代码进行商用功能开发。
- **OpenHarmony主干代码获取**
方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
方式二:通过repo + https下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- **OpenHarmony发布分支代码获取**
OpenHarmony各个版本发布分支的源码获取方式请参考[Release-Notes](../../release-notes/Readme.md)
### 执行prebuilts
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
## 安装编译工具
hb是OpenHarmony的编译工具,可通过以下步骤在Ubuntu下进行安装。想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build.md)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如需安装代理,请参考[配置代理](../quick-start/quickstart-standard-reference.md#配置代理)。
1. 运行如下命令安装hb并更新至最新版本
```
pip3 install --user build/lite
```
2. 设置环境变量
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/.local/bin:$PATH
```
执行如下命令更新环境变量。
```
source ~/.bashrc
```
3. 在源码目录执行"hb -h",界面打印以下信息即表示安装成功:
```
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
```
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> - 可采用以下命令卸载hb:
>
> ```
> pip3 uninstall ohos-build
> ```
>
> - 若安装hb的过程中遇到问题,请参见下文[常见问题](../quick-start/quickstart-standard-faq-hb.md)进行解决。
# 烧录异常
## 烧写选择串口后提示“Error: Opening COMxx: Access denied”
- **现象描述**
点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。
**图1** 打开串口失败图
![zh-cn_image_0000001271202461](figures/zh-cn_image_0000001271202461.png)
- **可能原因**
串口已经被占用。
- **解决办法**
1. 按图依次选择下拉框,查找带有serial-xx的终端。
**图2** 查找是否存在占用串口的终端
![zh-cn_image_0000001271202473](figures/zh-cn_image_0000001271202473.png)
2. 点击标号中的垃圾桶图标,关闭串口。
**图3** 关闭串口终端
![zh-cn_image_0000001271202469](figures/zh-cn_image_0000001271202469.png)
3. 重新点击烧写,选择串口并开始烧写程序。
**图4** 重新启动烧写任务
![zh-cn_image_0000001271562449](figures/zh-cn_image_0000001271562449.png)
## Windows电脑与单板网络连接失败
- **现象描述**
点击烧写并选择串口后,无法获取文件。
**图5** 网络不通,单板无法获取文件图
![zh-cn_image_0000001226922306](figures/zh-cn_image_0000001226922306.png)
- **可能原因**
单板网络与Windows电脑不联通。
Windows电脑防火墙未允许Visual Studio Code联网。
- **解决方法**
1. 检查网线是否连接。
2. 点击Windows防火墙。
**图6** 网络防火墙设置图
![zh-cn_image_0000001227082322](figures/zh-cn_image_0000001227082322.png)
3. 点击“允许应用通过防火墙”。
**图7** 防火墙和网络保护界面图
![zh-cn_image_0000001271202457](figures/zh-cn_image_0000001271202457.png)
4. 查找Visual Studio Code应用。
**图8** 查找Visual Studio Code应用图
![zh-cn_image_0000001271562445](figures/zh-cn_image_0000001271562445.png)
5. 勾选Visual Studio Code的专用和公用网络的访问权限。
**图9** 允许Visual Studio Code应用访问网络
![zh-cn_image_0000001271442273](figures/zh-cn_image_0000001271442273.png)
## 烧写失败
- **现象描述**
点击烧写并选择串口后,出现无法烧写的情况。
- **可能原因**
安装IDE插件DevEco后未重启。
- **解决方法**
重启IDE。
# 编译异常
## Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt_pkg”
- **现象描述**
Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt_pkg"
- **可能原因**
python3 apt安装兼容性问题。
- **解决办法**
执行如下命令重新安装python3-apt。
```
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
```
## 编译构建过程中,提示找不到“python”
- **现象描述**
编译构建过程中出现以下错误:
```
-bash: /usr/bin/python: No such file or directory
```
- **可能原因**1
没有装python。
- **解决办法**
请使用如下命令安装Python,下方以Python3.8为例。
```
sudo apt-get install python3.8
```
- **可能原因2**
usr/bin目录下没有python软链接
![zh-cn_image_0000001226922322](figures/zh-cn_image_0000001226922322.png)
- **解决办法**
请运行以下命令添加软链接:
```
# cd /usr/bin/
# which python3
# ln -s /usr/local/bin/python3 python
# python --version
```
例:
![zh-cn_image_0000001271562453](figures/zh-cn_image_0000001271562453.png)
## 编译构建过程中,提示找不到“python3”
- **现象描述**
![zh-cn_image_0000001226602414](figures/zh-cn_image_0000001226602414.png)
- **可能原因**
没有装python3。
- **解决办法**
请使用如下命令安装Python3。
```
sudo apt-get install python3.8
```
## 安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”
- **现象描述**
安装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”
- **现象描述**
安装python3过程中出现以下错误:
```
-bash: make: command not found
```
- **可能原因**
环境中未安装“make”。
- **解决办法**
1. 通过命令“apt-get install make”在线安装。
2. 完成后,重新安装python3。
## 安装python3过程中,提示“No module named '_ctypes'”
- **现象描述**
安装python3过程中出现以下错误:
```
ModuleNotFoundError:No module named ‘_ctypes’
```
- **可能原因**
环境中未安装“libffi”和“libffi-devel”。
- **解决办法**
1. 通过命令“apt-get install libffi\* -y”,在线安装。
2. 完成后,重新安装python3。
## 编译构建过程中,提示“No module named 'Crypto'”
- **现象描述**
编译构建过程中出现以下错误:
```
ModuleNotFoundError: No module named 'Crypto'
```
- **可能原因**
环境中未安装“Crypto”。
- **解决办法**
方法1:通过命令“pip3 install Crypto”,在线安装。
方法2:离线安装。
通过网页[https://pypi.org/project/pycrypto/#files](https://pypi.org/project/pycrypto/#files),下载源码。
![zh-cn_image_0000001227082334](figures/zh-cn_image_0000001227082334.png)
将源码放置在Linux服务器中,解压,并安装“python3 setup.py install”。
完成上述安装后,重新构建。
# hb安装异常
## hb安装过程中出现乱码、段错误
- **现象描述**
执行“python3 -m pip install --user ohos-build”出现乱码、段错误(segmentation fault)。
- **可能原因**
pip版本过低。
- **解决办法**
执行如下命令升级pip。
```
python3 -m pip install -U pip
```
## hb安装过程中提示"cannot import 'sysconfig' from 'distutils'"
- **现象描述**
执行“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'"
- **现象描述**
执行“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"
- **现象描述**
执行“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
```
# 常见问题<a name="ZH-CN_TOPIC_0000001188205126"></a> # 常见问题
- [编译构建过程中,提示"ImportError: No module named apt\_pkg"](#section1864714601214)
## 编译构建过程中,提示"ImportError: No module named apt\_pkg"<a name="section1864714601214"></a>
- **现象描述** - **[hb安装异常](quickstart-standard-faq-hb.md)**
Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt\_pkg"。
- **可能原因**
python3 apt安装兼容性问题。
- **解决办法**
执行如下命令重新安装python3-apt。
```
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
```
- **[编译异常](quickstart-standard-faq-compose.md)**
- **[烧录异常](quickstart-standard-faq-burning.md)**
\ No newline at end of file
# 标准系统快速入门-IDE
- **[标准系统入门概述](quickstart-ide-standard-overview.md)**
- **[准备标准系统环境](quickstart-ide-standard-env-setup.md)**
- **[创建源码工程](quickstart-ide-standard-create-project.md)**
- **[运行“Hello World”](quickstart-ide-standard-running.md)**
- **[附录](quickstart-ide-standard-appendix.md)**
\ No newline at end of file
# 标准系统入门简介<a name="ZH-CN_TOPIC_0000001188365096"></a> # 标准系统入门概述
- [快速入门流程](#section7825218111517)
开发者可通过本文快速掌握OpenHarmony标准系统的环境搭建、编译、烧录、运行等操作。标准系统的开发有以下两种方法: ## 简介
- 使用Windows环境进行开发和烧录,使用Linux环境进行编译。 OpenHarmony标准系统适用于参考内存≥128MiB的设备。通过本文,开发者可以快速熟悉OpenHarmony标准系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。
- 统一使用Linux环境进行开发、编译和烧录。
因目前Windows系统不支持编译,暂时无法全部使用Windows环境进行开发,开发者可根据使用习惯选择合适的开发方法。 考虑到开发者的开发习惯,OpenHarmony为开发者提供了以下两种入门指导:
本文将介绍第二种方法,**所有操作均在Linux环境下进行** - IDE方式:完全采用IDE(Deveco Device Tool)进行一站式开发,编译依赖工具的安装及编译、烧录、运行都通过IDE进行操作
## 快速入门流程<a name="section7825218111517"></a> - 安装包方式:通过命令行进行编译依赖工具的下载安装,编译操作也通过命令实现。烧录、运行等操作使用IDE。
OpenHarmony还为开发者提供了[Docker环境](../get-code/gettools-acquire.md),在很大程度上简化了编译前的环境配置,习惯使用安装包方式的开发者也可以选择Docker环境进行编译 。
标准系统快速入门流程如下图所示,其中编译源码环节可根据实际情况选择docker方式或安装包方式其中一种即可 本文采用安装包方式进行介绍,习惯使用Deveco Device Tool的开发者可参考[标准系统快速入门(IDE方式)](../quick-start/quickstart-standard-ide.md)
>![](../public_sys-resources/icon-note.gif) **说明:**
>Docker环境已经封装了相关编译工具,开发者在使用该Docker环境时可以省去Ubuntu编译环境及开发板环境的的搭建操作。
**图 1** 标准系统快速入门流程<a name="fig20982640223"></a> ## 开发环境
![](figures/标准系统快速入门流程.png "标准系统快速入门流程")
开发者通常习惯采用Windows+Ubuntu环境进行OpenHarmony开发:
- Windows:用于源码开发、烧录等。
- Ubuntu:用于源码编译。
本文将介绍如何基于Windows+Ubuntu环境进行OpenHarmony的开发。
## 开发板
本文选取了两款典型开发板:Hi3516DV300、RK3516,并基于上述两款开发板进行开发介绍。开发板的具体外观和规格可参见[本文附录](../quick-start/quickstart-standard-board-introduction.md),开发者可根据需要自行购买开发板。
## 开发流程
标准系统快速入门流程如下图所示。
**图1** 标准系统快速入门开发流程
![zh-cn_image_0000001227082314](figures/zh-cn_image_0000001227082314.png)
# 参考信息
## 使用build.sh脚本编译源码
1. 进入源码根目录,执行如下命令进行版本编译。
```
./build.sh --product-name name --ccache
```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> _name_为产品名称,例如Hi3516DV300、rk3568等。
2. 检查编译结果。编译完成后,log中显示如下:
```
post_process
=====build name successful.
```
编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。
## 配置代理
### 配置Python代理
1. 新建代理配置文件。
```
mkdir ~/.pipvim ~/.pip/pip.conf
```
2. 在文件中写入如下代理信息并保存退出。
```
[global]
index-url = http://代理网址
trusted-host = 可信任的镜像地址
timeout = 120
```
### 配置NPM代理
1. 新建代理配置文件。
```
vim ~/.npmrc
```
2. 在文件中写入如下代理信息并保存退出。
```
registry=http://代理网址
strict-ssl=false
```
3. 将以下内容添加到.bashrc中并保存退出。
```
export NPM_REGISTRY=http://代理网址
source .bashrc
```
# 源码编译<a name="ZH-CN_TOPIC_0000001233803245"></a> # 编译
- [使用Docker方式获取编译工具链](#section181431248132513)
- [执行prebuilts](#section111934551605)
- [安装Docker](#section1466184743915)
- [获取Docker环境](#section615912103552)
- [使用安装包方式获取编译工具链](#section65647482593) OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-standard-reference.md#使用buildsh脚本编译源码)
- [安装依赖工具](#section83441888010)
- [执行prebuilts](#section6389714142011)
- [编译](#section92391739152318)
安装编译工具链后,即可对源码进行编译。在Linux环境下获取编译工具链有以下两种方式,二者选其一即可 在Ubuntu环境下进入源码根目录,执行如下命令进行编译
1. Docker方式
OpenHarmony标准系统为开发者提供的Docker环境已经将对应的编译工具链进行了封装,开发者可省略对应工具的安装。 1. 设置编译路径。
```
hb set
```
2. 安装包方式 2. 选择当前路径。
```
.
```
使用安装包方式获取编译工具链时,开发者需自行安装相应的依赖工具 3. 在built-in下选择Hi3516DV300并回车
4. 执行编译。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 单独编译一个部件(例如hello),可使用“hb build -T _目标名称_”进行编译。
>
> - 增量编译整个产品,可使用“hb build”进行编译。
>
> - 完整编译整个产品,可使用“hb build -f”进行编译。
>
> 此处以完整编译整个产品为例进行说明。
## 使用Docker方式获取编译工具链<a name="section181431248132513"></a>
```
hb build -f
```
### 执行prebuilts<a name="section111934551605"></a>
**图1** Hi3516编译设置图例
在源码根目录下执行脚本,安装编译器及二进制工具。 ![zh-cn_image_0000001271562433](figures/zh-cn_image_0000001271562433.png)
```
bash build/prebuilts_download.sh
```
### 安装Docker<a name="section1466184743915"></a>
请参考[官方指导](https://docs.docker.com/engine/install/)
### 获取Docker环境<a name="section615912103552"></a>
1. 获取Docker镜像。
```
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
```
2. 进入源码根目录执行如下命令,从而进入Docker构建环境。
```
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
```
## 使用安装包方式获取编译工具链<a name="section65647482593"></a>
### 安装依赖工具<a name="section83441888010"></a>
1. 使用如下apt-get命令安装后续操作所需的库和工具:
```
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales
```
>![](../public_sys-resources/icon-note.gif) **说明:**
>以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中:
>- Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
>- java要求java8及以上版本,此处以java8为例。
2. 将python 3.8设置为默认python版本。
查看python 3.8的位置:
```
which python3.8
```
将python和python3切换为python3.8:
```
sudo update-alternatives --install /usr/bin/python python {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
sudo update-alternatives --install /usr/bin/python3 python3 {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
```
### 执行prebuilts<a name="section6389714142011"></a>
在源码根目录下执行脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
## 编译<a name="section92391739152318"></a>
1. 进入源码根目录,执行如下命令进行版本编译。
>![](../public_sys-resources/icon-note.gif) **说明:**
>使用Docker方式获取编译工具链的,请直接通过[获取Docker环境](#section615912103552)最后一步进入的Docker构建环境执行如下命令。
```
./build.sh --product-name Hi3516DV300 --ccache
```
2. 检查编译结果。编译完成后,log中显示如下:
```
build system image successful.
=====build Hi3516DV300 successful.
```
编译所生成的文件都归档在out/\{device\_name\}/目录下,结果镜像输出在out/\{device\_name\}/packages/phone/images/ 目录下。
>![](../public_sys-resources/icon-note.gif) **说明:**
>其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。
3. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-running-hi3516-burn.md)
>![](../public_sys-resources/icon-note.gif) **说明:**
>若使用Docker环境进行编译,执行exit命令即可退出Docker。
5. 编译结束后,出现“build success”字样,则证明构建成功。
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> 编译结果文件及编译日志文件获取路径:out/hi3516dv300。
# 镜像烧录<a name="ZH-CN_TOPIC_0000001188683564"></a>
- [前提条件](#section1956213516576)
- [使用网口烧录](#section14587120161217)
标准系统烧录,在DevEco Device Tool V2.2 Beta1及以上版本支持,下方烧录操作均在DevEco Device Tool中进行。
DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334-10.png)图标打开DevEco Device Tool。
Hi3516DV300支持烧录标准系统,其烧录方式包括USB烧录、网口烧录和串口烧录三种方式,其中:
- **Windows系统:支持USB烧录、网口烧录和串口烧录**
- **Linux系统:支持串口烧录和网口烧录。**
同一种烧录方式(如网口烧录),在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。
下方以Linux系统下,USB烧录方式为例进行OpenHarmony标准系统烧录,其他两种烧录方式请参照[Hi3516DV300烧录指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_upload-0000001052148681)
## 前提条件<a name="section1956213516576"></a>
1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。
![](figures/import-project.png)
2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import**
![](figures/import-project-confirm.png)
3. MCU选择**HiSilicon\_Arm\_Linux**下的Hi3516DV300,Board选择hi3516dv300,Framework选择“Ohos-sources”,然后点击**Import**完成导入。
![](figures/hisilicon-arm-linux.png)
## 使用USB口烧录<a name="section14587120161217"></a>
1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3516-0000001152041033)[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)。
2. 查看并记录对应的串口号。
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
Windows系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。
![](figures/record-the-serial-port-number.png)
Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。
![](figures/Snap22.png)
3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。
![](figures/zh-cn_image_0000001177608370.png)
4. 在“hi3516dv300”页签,设置烧录选项,包括upload\_partitions、upload\_port和upload\_protocol。
- upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、boot、updater、misc、system、vendor和userdata。
- upload\_port:选择已查询的串口号。
- upload\_protocol:选择烧录协议,固定选择“hiburn-usb”。
![](figures/zh-cn_image_0000001177478136.png)
5. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、boot、updater、misc、system、vendor和userdata。
1. 在“hi3516dv300\_fastboot”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。
![](figures/zh-cn_image_0000001222997983.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
>![](../public_sys-resources/icon-note.gif) **说明:**
>在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![](figures/zh-cn_image_0000001222794413.png)
3. 按照相同的方法修改boot、updater和misc的烧录文件信息。
6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
7. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击fastboot下的**Erase**按钮,擦除U-Boot。
![](figures/zh-cn_image_0000001163045527.png)
8. 执行**Erase**擦除操作后,显示如下提示信息时,请重启开发板(插拔USB连线)。
![](figures/zh-cn_image_0000001114129426.png)
9. 重新上电后,显示如下信息时,表示擦除U-Boot成功。
![](figures/zh-cn_image_0000001113969536.png)
10. 擦除完成后,点击hi3516dv300下的**Upload**按钮,启动烧录。
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果您是第一次在工作台烧录Hi3516DV300/Hi3518EV300开发板,可能烧录失败,提示“not find the Devices”,请根据[Hi3516DV300/Hi3518EV300开发板USB驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)进行处理后再重新烧录。
![](figures/1-11.png)
11. 启动烧录后,界面提示如下信息时,表示烧录成功。
![](figures/zh-cn_image_0000001160649343.png)
12. 烧录完成后,请根据标准系统镜像运行进行下一步操作,完成系统启动。
# 烧录
在Windows下采用USB烧录方式进行Hi3516DV300的烧录,具体步骤如下:
### 导入源码
在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-standard-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001171426014](figures/zh-cn_image_0000001171426014.png)
2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
![zh-cn_image_0000001227711882](figures/zh-cn_image_0000001227711882.png)
3. 如果您打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击**Import**
![zh-cn_image_0000001135394334](figures/zh-cn_image_0000001135394334.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择Hi3516DV300。
![zh-cn_image_0000001271912277](figures/zh-cn_image_0000001271912277.png)
6. 点击**Open**打开工程或源码。
### 烧录
完成源码导入后,通过以下步骤进行烧录:
1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
2. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
3. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001216516128](figures/zh-cn_image_0000001216516128.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
4. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。
- upload_port:选择已查询到的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png)
6. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。
1. 在“hi3516dv300_fastboot”页签,在New Option选项中选择需要修改的项,例如partition_bin(烧录文件路径)、partition_addr(烧录文件起始地址)、partition_length(烧录文件分区长度)等。
![zh-cn_image_0000001198889702](figures/zh-cn_image_0000001198889702.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001243290907](figures/zh-cn_image_0000001243290907.png)
3. 按照相同的方法修改kernel、rootfs和userfs的烧录文件信息。
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击hi3516dv300下的**Upload**按钮,启动烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果您是第一次在工作台烧录Hi3516DV300/Hi3518EV300开发板,可能烧录失败,提示“not find the Devices”,然后根据[Hi3516DV300/Hi3518EV300开发板USB驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)进行处理后再重新烧录。
![zh-cn_image_0000001267231481](figures/zh-cn_image_0000001267231481.png)
9. 在终端窗口显示如下提示信息时,按住复位键,插拔USB线,最后松开复位键启动烧录。
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png)
启动烧录后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png)
10. 烧录成功后,请根据镜像运行章节进行操作,启动系统。
# 编写“Hello World”程序<a name="ZH-CN_TOPIC_0000001216743252"></a> # 编写“Hello World”程序
下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。 下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。
## 示例目录<a name="section1731810561374"></a>
## 示例目录
示例完整目录如下。 示例完整目录如下。
``` ```
applications/sample/hello applications/sample/hello
│ │── BUILD.gn │ │── BUILD.gn
...@@ -22,135 +24,135 @@ productdefine/common ...@@ -22,135 +24,135 @@ productdefine/common
└── Hi3568DV300.json └── Hi3568DV300.json
``` ```
## 开发步骤<a name="section102591026124318"></a>
请在源码目录中通过以下步骤创建“Hello World”应用程序: ## 开发步骤
1. 创建目录,编写业务代码。 请在源码目录中通过以下步骤创建“Hello World”应用程序:
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OH)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv)
{
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n************************************************\n");
printf("\n\t\tHello World!\n");
printf("\n************************************************\n");
}
```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
```
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // HELLOWORLD_H
```
2. 新建编译组织文件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示:
```
import("//build/ohos.gni") # 导入编译模板
ohos_executable("helloworld") { # 可执行模块
sources = [ # 模块源码
"src/helloworld.c"
]
include_dirs = [ # 模块依赖头文件目录
"include"
]
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内部依赖
part_name = "hello" # 所属部件名称,必选
install_enable = true # 是否默认安装(缺省默认不安装),可选
}
```
2. 新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
```
{
"name": "@ohos/hello",
"description": "Hello world example.",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "applications/sample/hello"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hello",
"subsystem": "sample",
"syscap": [],
"features": [],
"adapted_system_type": [ "mini", "small", "standard" ],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": []
}
}
}
```
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub\_component,假如有提供给其它部件的接口,需要在inner\_kits中说明,假如有测试用例,需要在test中说明,inner\_kits与test没有也可以不添加。
3. 修改子系统配置文件。
在build/subsystem\_config.json中添加新建的子系统的配置。
```
"sample": {
"path": "applications/sample/hello",
"name": "sample"
},
```
4. 修改产品配置文件。
在productdefine/common/products/Hi3516DV300.json中添加对应的hello部件,直接添加到原有部件后即可。
```
"usb:usb_manager_native":{},
"applications:prebuilt_hap":{},
"sample:hello":{},
"wpa_supplicant-2.9:wpa_supplicant-2.9":{},
```
1. 创建目录,编写业务代码。
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OH)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv)
{
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n\n");
printf("\n\t\tHello World!\n");
printf("\n\n");
}
```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
```
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // HELLOWORLD_H
```
2. 新建编译组织文件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示:
```
import("//build/ohos.gni") # 导入编译模板
ohos_executable("helloworld") { # 可执行模块
sources = [ # 模块源码
"src/helloworld.c"
]
include_dirs = [ # 模块依赖头文件目录
"include"
]
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内部依赖
part_name = "hello" # 所属部件名称,必选
install_enable = true # 是否默认安装(缺省默认不安装),可选
}
```
2. 新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
```
{
"name": "@ohos/hello",
"description": "Hello world example.",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "applications/sample/hello"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hello",
"subsystem": "sample",
"syscap": [],
"features": [],
"adapted_system_type": [ "mini", "small", "standard" ],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": []
}
}
}
```
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
3. 修改子系统配置文件。
在build/subsystem_config.json中添加新建的子系统的配置。
```
"sample": {
"path": "applications/sample/hello",
"name": "sample"
},
```
4. 修改产品配置文件。
在productdefine/common/products/Hi3516DV300.json中添加对应的hello部件,直接添加到原有部件后即可。
```
"usb:usb_manager_native":{},
"applications:prebuilt_hap":{},
"sample:hello":{},
"wpa_supplicant-2.9:wpa_supplicant-2.9":{},
```
# 镜像运行<a name="ZH-CN_TOPIC_0000001188523652"></a>
- [启动系统](#section85351839162211)
- [运行“Hello World”](#section137849131182)
- [下一步](#section5600113114323)
## 启动系统<a name="section85351839162211"></a>
烧录完成后通过以下步骤运行系统:
>![](../public_sys-resources/icon-note.gif) **说明:**
>初次烧写标准系统,需要完成以下配置,后续烧写或者启动,可以跳过以下操作。
1. 在DevEco Device Tool中,点击Monitor,打开串口工具。
![](figures/open-the-serial-port-tool.png)
2. 重启开发板,在倒计时结束前,按任意键进入系统。
![](figures/press-any-key-to-enter-the-system.gif)
3. 通过以下两条命令设置启动参数。
```
setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)';
```
```
setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000'
```
![](figures/setenv-bootargs.png)
4. 保存参数设置。
```
save
```
![](figures/Save-the-parameter-settings.png)
5. 重启开发板,完成系统启动。
```
reset
```
![](figures/start-the-system.png)
## 运行“Hello World”<a name="section137849131182"></a>
设备启动后打开串口工具,在任意目录下输入命令helloworld后回车,即出现“Hello World!”字样。
![](figures/zh-cn_image_0000001193533352.png)
## 下一步<a name="section5600113114323"></a>
恭喜!您已经完成了OpenHarmony标准系统的快速入门,接下来可[开发一个小示例](../guide/device-clock-guide.md),进一步熟悉OpenHarmony的开发。
# 运行
## 启动系统
烧录完成后在Windows下通过以下步骤启动系统:
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 初次烧写标准系统,需要完成以下配置,后续烧写或者启动,可以跳过以下操作。
1. 在DevEco Device Tool中,点击Monitor,打开串口工具。
![zh-cn_image_0000001226762374](figures/zh-cn_image_0000001226762374.png)
2. 重启开发板,在倒计时结束前,按任意键进入系统。
![zh-cn_image_0000001271442265](figures/zh-cn_image_0000001271442265.gif)
3. 通过以下两条命令设置启动参数。
```
setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)';
```
```
setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000'
```
![zh-cn_image_0000001271322437](figures/zh-cn_image_0000001271322437.png)
4. 保存参数设置。
```
save
```
![zh-cn_image_0000001271562437](figures/zh-cn_image_0000001271562437.png)
5. 重启开发板,完成系统启动。
```
reset
```
![zh-cn_image_0000001226762378](figures/zh-cn_image_0000001226762378.png)
## 运行“Hello World”
设备启动后打开串口工具,在任意目录下输入命令helloworld后回车,界面打印“Hello World!”,程序运行成功。
![zh-cn_image_0000001226602398](figures/zh-cn_image_0000001226602398.png)
## 下一步
恭喜!您已经完成了OpenHarmony标准系统的快速入门,接下来可[开发一个小示例](../guide/device-clock-guide.md),进一步熟悉OpenHarmony的开发。
# Hi3516开发板<a name="ZH-CN_TOPIC_0000001188686298"></a> # Hi3516开发板
- **[创建应用程序](quickstart-standard-running-hi3516-create.md)**
- **[源码编译](quickstart-standard-running-hi3516-build.md)**
- **[镜像烧录](quickstart-standard-running-hi3516-burn.md)** - **[编写“Hello World”程序](quickstart-standard-running-hi3516-create.md)**
- **[镜像运行](quickstart-standard-running-hi3516-run.md)** - **[编译](quickstart-standard-running-hi3516-build.md)**
- **[烧录](quickstart-standard-running-hi3516-burning.md)**
- **[运行](quickstart-standard-running-hi3516-running.md)**
\ No newline at end of file
# 源码编译<a name="ZH-CN_TOPIC_0000001188207862"></a> # 编译
- [使用Docker方式获取编译工具链](#section181431248132513)
- [执行prebuilts](#section111934551605)
- [安装Docker](#section1466184743915)
- [获取Docker环境](#section615912103552)
- [使用安装包方式获取编译工具链](#section65647482593) OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-standard-reference.md#使用buildsh脚本编译源码)
- [安装依赖工具](#section83441888010)
- [执行prebuilts](#section6389714142011)
- [编译](#section92391739152318)
安装编译工具链后,即可对源码进行编译。在Linux环境下获取编译工具链有以下两种方式,二者选其一即可 在Ubuntu环境下进入源码根目录,执行如下命令进行编译
1. Docker方式
OpenHarmony标准系统为开发者提供的Docker环境已经将对应的编译工具链进行了封装,开发者可省略对应工具的安装。 1. 设置编译路径。
```
hb set
```
2. 安装包方式 2. 选择当前路径。
```
.
```
使用安装包方式获取编译工具链时,开发者需自行安装相应的依赖工具 3. 在built-in下选择rk3568并回车
4. 执行编译。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 单独编译一个部件(例如hello),可使用“hb build -T _目标名称_”进行编译。
>
> - 增量编译整个产品,可使用“hb build”进行编译。
>
> - 完整编译整个产品,可使用“hb build -f”进行编译。
>
> 此处以完整编译整个产品为例进行说明。
## 使用Docker方式获取编译工具链<a name="section181431248132513"></a>
```
hb build -f
```
### 执行prebuilts<a name="section111934551605"></a>
**图1** RK3568编译设置图例
在源码根目录下执行脚本,安装编译器及二进制工具。 ![zh-cn_image_0000001226922302](figures/zh-cn_image_0000001226922302.png)
```
bash build/prebuilts_download.sh
```
### 安装Docker<a name="section1466184743915"></a>
请参考[官方指导](https://docs.docker.com/engine/install/)
### 获取Docker环境<a name="section615912103552"></a>
1. 获取Docker镜像。
```
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:1.0.0
```
2. 进入源码根目录执行如下命令,从而进入Docker构建环境。
```
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
```
## 使用安装包方式获取编译工具链<a name="section65647482593"></a>
### 安装依赖工具<a name="section83441888010"></a>
请在终端中输入如下命令安装编译相关的依赖工具:
```
sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby
```
>![](../public_sys-resources/icon-note.gif) **说明:**
>以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中Python要求安装Python 3.7及以上版本,此处以Python 3.8为例。
### 执行prebuilts<a name="section6389714142011"></a>
在源码根目录下执行脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
## 编译<a name="section92391739152318"></a>
1. 进入源码根目录,执行如下命令进行版本编译。
>![](../public_sys-resources/icon-note.gif) **说明:**
>使用Docker方式获取编译工具链的,请直接通过[获取Docker环境](#section615912103552)最后一步进入的Docker构建环境执行如下命令。
```
./build.sh --product-name rk3568 --ccache
```
2. 检查编译结果。编译完成后,log中显示如下:
```
post_process
=====build rk3568 successful.
```
编译所生成的文件都归档在out/\{device\_name\}/目录下,结果镜像输出在out/\{device\_name\}/packages/phone/images/ 目录下。
>![](../public_sys-resources/icon-note.gif) **说明:**
>其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。
3. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-running-hi3516-burn.md)
>![](../public_sys-resources/icon-note.gif) **说明:**
>若使用Docker环境进行编译,执行exit命令即可退出Docker。
5. 编译结束后,出现“rk3568 build success”字样,则证明构建成功。
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **须知:**
> 编译结果文件及编译日志文件获取路径:out/rk3568。
# 镜像烧录<a name="ZH-CN_TOPIC_0000001233805979"></a>
请参考:[HiHope\_DAYU200烧写工具及指南](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/HiHope-DAYU200%E9%95%9C%E5%83%8F%E7%83%A7%E5%BD%95%E6%8C%87%E5%8D%97.pdf)
# 烧录
在Windows环境下通过以下步骤进行RK3568的烧录:
### 导入源码
在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-standard-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001171426014](figures/zh-cn_image_0000001171426014.png)
2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
![zh-cn_image_0000001272032361](figures/zh-cn_image_0000001272032361.png)
3. 如果您打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击**Import**
![zh-cn_image_0000001135394334](figures/zh-cn_image_0000001135394334.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择rk3568。
![zh-cn_image_0000001227712350](figures/zh-cn_image_0000001227712350.png)
6. 点击**Open**打开工程或源码。
### 烧录
完成源码导入后,通过以下步骤进行烧录:
1. [下载](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows/DriverAssitant_v5.1.1.zip)并安装驱动DriverInstall.exe,双击DriverInstall.exe打开安装程序,点击“驱动安装”按钮,按提示安装USB驱动。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果已经安装旧版本的烧写工具,请先点击"驱动卸载"按钮卸载驱动,然后再点击"驱动安装"按钮安装驱动。
2. 请连接好电脑和待烧录开发板,连接USB接口。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色连接进行按钮。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 打开DevEco Device Tool,在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001239661509](figures/zh-cn_image_0000001239661509.png)
5. 在“hh_scdy200”页签,设置烧录选项,包括upload_partitions和upload_protocol。
- upload_partitions:选择待烧录的文件。
- upload_protocol:选择烧录协议,固定选择“upgrade”。
![zh-cn_image_0000001194504874](figures/zh-cn_image_0000001194504874.png)
6. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:loader、parameter、uboot、boot_linux、system、vendor和userdata。
1. 在“hh_scdy200_loader”页签,在New Option选项中选择需要修改的项,例如partition_bin(烧录文件路径)、partition_addr(烧录文件起始地址)、partition_length(烧录文件分区长度)等。
![zh-cn_image_0000001224173270](figures/zh-cn_image_0000001224173270.png)
2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001268653461](figures/zh-cn_image_0000001268653461.png)
3. 按照相同的方法修改parameter、uboot、boot_linux、system、vendor和userdata的烧录文件信息。
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击工程的Open按钮,打开工程文件,点击![zh-cn_image_0000001239221905](figures/zh-cn_image_0000001239221905.png)图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击hh_scdy200下的**Upload**按钮,启动烧录。
![zh-cn_image_0000001194821710](figures/zh-cn_image_0000001194821710.png)
9. 等待开发板烧录完成,当屏幕提示如下信息时,表示烧录成功。
![zh-cn_image_0000001194984912](figures/zh-cn_image_0000001194984912.png)
# 编写“Hello World”程序<a name="ZH-CN_TOPIC_0000001260983173"></a> # 编写“Hello World”程序
下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。 下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。
## 示例目录<a name="section1731810561374"></a>
示例完整目录如下。 ## 示例目录
示例完整目录如下。
``` ```
applications/sample/hello applications/sample/hello
│ │── BUILD.gn │ │── BUILD.gn
...@@ -21,135 +23,133 @@ productdefine/common ...@@ -21,135 +23,133 @@ productdefine/common
└── rk3568.json └── rk3568.json
``` ```
## 开发步骤<a name="section6771191495218"></a>
请在源码目录中通过以下步骤创建“Hello World”应用程序:
1. 创建目录,编写业务代码。 ## 开发步骤
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OH)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv)
{
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n************************************************\n");
printf("\n\t\tHello World!\n");
printf("\n************************************************\n");
}
```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
```
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // HELLOWORLD_H
```
2. 新建编译组织文件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示:
```
import("//build/ohos.gni") # 导入编译模板
ohos_executable("helloworld") { # 可执行模块
sources = [ # 模块源码
"src/helloworld.c"
]
include_dirs = [ # 模块依赖头文件目录
"include"
]
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内部依赖
part_name = "hello" # 所属部件名称,必选
install_enable = true # 是否默认安装(缺省默认不安装),可选
}
```
2. 新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
```
{
"name": "@ohos/hello",
"description": "Hello world example.",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "applications/sample/hello"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hello",
"subsystem": "sample",
"syscap": [],
"features": [],
"adapted_system_type": [ "mini", "small", "standard" ],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": []
}
}
}
```
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub\_component,假如有提供给其它部件的接口,需要在inner\_kits中说明,假如有测试用例,需要在test中说明,inner\_kits与test没有也可以不添加。
3. 修改子系统配置文件。
在build/subsystem\_config.json中添加新建的子系统的配置。
```
"sample": {
"path": "applications/sample/hello",
"name": "sample"
},
```
4. 修改产品配置文件。
在productdefine/common/products/rk3568.json中添加对应的hello部件,直接添加到原有部件后即可。
```
"usb:usb_manager_native":{},
"applications:prebuilt_hap":{},
"sample:hello":{},
"wpa_supplicant-2.9:wpa_supplicant-2.9":{},
```
请在源码目录中通过以下步骤创建“Hello World”应用程序:
1. 创建目录,编写业务代码。
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OH)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
```
#include <stdio.h>
#include "helloworld.h"
int main(int argc, char **argv)
{
HelloPrint();
return 0;
}
void HelloPrint()
{
printf("\n\n");
printf("\n\t\tHello World!\n");
printf("\n\n");
}
```
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
```
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void HelloPrint();
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // HELLOWORLD_H
```
2. 新建编译组织文件。
1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示:
```
import("//build/ohos.gni") # 导入编译模板
ohos_executable("helloworld") { # 可执行模块
sources = [ # 模块源码
"src/helloworld.c"
]
include_dirs = [ # 模块依赖头文件目录
"include"
]
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内部依赖
part_name = "hello" # 所属部件名称,必选
install_enable = true # 是否默认安装(缺省默认不安装),可选
}
```
2. 新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
```
{
"name": "@ohos/hello",
"description": "Hello world example.",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "applications/sample/hello"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hello",
"subsystem": "sample",
"syscap": [],
"features": [],
"adapted_system_type": [ "mini", "small", "standard" ],
"rom": "10KB",
"ram": "10KB",
"deps": {
"components": [],
"third_party": []
},
"build": {
"sub_component": [
"//applications/sample/hello:helloworld"
],
"inner_kits": [],
"test": []
}
}
}
```
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
3. 修改子系统配置文件。
在build/subsystem_config.json中添加新建的子系统的配置。
```
"sample": {
"path": "applications/sample/hello",
"name": "sample"
},
```
4. 修改产品配置文件。
在productdefine/common/products/rk3568.json中添加对应的hello部件,直接添加到原有部件后即可。
```
"usb:usb_manager_native":{},
"applications:prebuilt_hap":{},
"sample:hello":{},
"wpa_supplicant-2.9:wpa_supplicant-2.9":{},
```
# 镜像运行<a name="ZH-CN_TOPIC_0000001233927469"></a>
- [启动系统](#section646361191511)
- [运行“Hello World”](#section11845976150)
## 启动系统<a name="section646361191511"></a>
镜像烧录完成并连接电源线之后,系统将会自动启动。开发板附带的屏幕呈现以下界面,表明系统已运行成功。
**图 1** 系统启动效果图<a name="fig1642274764110"></a>
![](figures/系统启动效果图.jpg "系统启动效果图")
## 运行“Hello World”<a name="section11845976150"></a>
- 设备启动后打开串口工具(以putty为例),波特率设置为1500000,连接设备。
![](figures/rk3568-run-configuration.png)
- 打开串口后,在任意目录(以设备根目录为例)下输入命令helloworld后回车,即出现“Hello World!”字样。
![](figures/rk3568-helloworld.png)
# 运行
## 启动系统
镜像烧录完成重启开发板后,系统将会自动启动。开发板附带的屏幕呈现以下界面,表明系统已运行成功。
**图1** 系统启动效果图
![zh-cn_image_0000001226602406](figures/zh-cn_image_0000001226602406.jpg)
## 运行“Hello World”
1. 设备启动后打开串口工具(以putty为例),波特率设置为1500000,连接设备。
![zh-cn_image_0000001226922310](figures/zh-cn_image_0000001226922310.png)
2. 打开串口后,在任意目录(以设备根目录为例)下输入命令helloworld后回车,界面打印“Hello World!”,程序运行成功。
![zh-cn_image_0000001271202465](figures/zh-cn_image_0000001271202465.png)
# RK3568开发板<a name="ZH-CN_TOPIC_0000001234047409"></a> # RK3568开发板
- **[创建应用程序](quickstart-standard-running-rk3568-create.md)**
- **[源码编译](quickstart-standard-running-rk3568-build.md)**
- **[镜像烧录](quickstart-standard-running-rk3568-burn.md)** - **[编写“Hello World”程序](quickstart-standard-running-rk3568-create.md)**
- **[镜像运行](quickstart-standard-running-rk3568-run.md)** - **[编译](quickstart-standard-running-rk3568-build.md)**
- **[烧录](quickstart-standard-running-rk3568-burning.md)**
- **[运行](quickstart-standard-running-rk3568-running.md)**
\ No newline at end of file
# 运行“Hello World”<a name="ZH-CN_TOPIC_0000001188526386"></a> # 运行“Hello World”
- **[Hi3516开发板](quickstart-standard-running-hi3516.md)**
- **[RK3568开发板](quickstart-standard-running-rk3568.md)**
- **[Hi3516开发板](quickstart-standard-running-hi3516.md)**
- **[RK3568开发板](quickstart-standard-running-rk3568.md)**
\ No newline at end of file
# 获取源码<a name="ZH-CN_TOPIC_0000001188523654"></a>
### 前提条件<a name="section1787412417496"></a>
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装[git客户端](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
4. 安装码云repo工具,可以执行如下命令。
```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
### 获取方式<a name="section1715918316415"></a>
>![](../public_sys-resources/icon-note.gif) **说明:**
>Master主干为开发分支,开发者可通过Master主干获取最新特性。发布版本代码相对比较稳定,开发者可基于发布版本代码进行商用功能开发。
- **OpenHarmony主干代码获取**
方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
方式二:通过repo + https下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- **OpenHarmony发布版本代码获取**
OpenHarmony发布版本获取源码方式请参考[Release-Notes](../get-code/../../release-notes/OpenHarmony-v3.0.2-LTS.md)。
# 标准系统入门<a name="ZH-CN_TOPIC_0000001111221726"></a> # 标准系统入门
- **[标准系统入门简介](quickstart-standard-overview.md)**
- **[标准系统开发环境准备(仅Hi3516需要)](quickstart-standard-env-setup.md)**
- **[获取源码](quickstart-standard-sourcecode-acquire.md)**
- **[运行“Hello World”](quickstart-standard-running.md)**
- **[常见问题](quickstart-standard-faqs.md)**
- **[附录](quickstart-standard-appendix.md)**
- **[标准系统快速入门-安装包](quickstart-standard-docker.md)**
- **[标准系统快速入门-IDE](quickstart-standard-ide.md)**
\ No newline at end of file
# 快速入门<a name="ZH-CN_TOPIC_0000001157479389"></a> # 快速入门
- **[轻量和小型系统入门](quickstart-lite.md)**
- **[标准系统入门](quickstart-standard.md)**
- **[轻量和小型系统入门](quickstart-lite.md)**
- **[标准系统入门](quickstart-standard.md)**
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册