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

!4264 更新 readme 等文件

Merge pull request !4264 from ester.zhou/OpenHarmony-3.1-Release
# TextInput # TextInput
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
>
> This component is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.
提供单行文本输入组件。
The **<TextInput>** component provides single-line text input.
## 权限列表
## Required Permissions
None
## 子组件
## Child Components
None
## 接口
## APIs
TextInput(value?:{placeholder?: string controller?: TextInputController}) TextInput(value?:{placeholder?: string controller?: TextInputController})
- Parameters - 参数
| Name | Type | Mandatory | Default Value | Description | | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- | | ----------------------- | ---------------------------------------- | ---- | ---- | --------------- |
| placeholder | string | No | - | Text displayed when there is no input. | | placeholder | string | 否 | - | 无输入时的提示文本。 |
| controller<sup>8+</sup> | [TextInputController](#textinputcontroller8) | No | - | Text input controller. | | controller<sup>8+</sup> | [TextInputController](#textinputcontroller8) | 否 | - | 设置TextInput控制器。 |
## Attributes ## 属性
In addition to universal attributes, the following attributes are supported. 除支持通用属性外,还支持以下属性:
| Name | Type | Default Value | Description | | 名称 | 参数类型 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- | | ------------------------ | ---------------------------------------- | ----------------- | ---------------------------------------- |
| type | InputType | InputType.Normal | Input box type. | | type | InputType | InputType.Normal | 设置输入框类型。 |
| placeholderColor | Color | - | Placeholder color. | | placeholderColor | Color | - | 设置placeholder颜色。 |
| placeholderFont | {<br/>size?: Length,<br/>weight?: number\|[FontWeight](ts-universal-attributes-text-style.md),<br/>family?: string,<br/>style?: [FontStyle](ts-universal-attributes-text-style.md)<br/>} | - | Placeholder text style.<br/>- **size**: font size. If the value is of the number type, the unit fp is used.<br/>- **weight**: font weight. For the number type, the value ranges from 100 to 900, at an interval of 100. The default value is **400**. A larger value indicates a larger font weight.<br/>- **family**: font family. Use commas (,) to separate multiple fonts, for example, **'Arial, sans-serif'**. The priority of the fonts is the sequence in which they are placed.<br/>- **style**: font style. | | placeholderFont | {<br/>size?:&nbsp;Length,<br/>weight?:&nbsp;number\|[FontWeight](ts-universal-attributes-text-style.md),<br/>family?:&nbsp;string,<br/>style?:&nbsp;[FontStyle](ts-universal-attributes-text-style.md)<br/>} | - | 设置placeholder文本样式:<br/>-&nbsp;size:&nbsp;设置文本尺寸,Length为number类型时,使用fp单位。<br/>-&nbsp;weight:&nbsp;设置文本的字体粗细,number类型取值[100,&nbsp;900],取值间隔为100,默认为400,取值越大,字体越粗。<br/>-&nbsp;family:&nbsp;设置文本的字体列表。使用多个字体,使用','进行分割,优先级按顺序生效。例如:'Arial,&nbsp;sans-serif'。<br/>-&nbsp;style:&nbsp;设置文本的字体样式。 |
| enterKeyType | EnterKeyType | EnterKeyType.Done | How the Enter key is labeled. | | enterKeyType | EnterKeyType | EnterKeyType.Done | 设置输入法回车键类型。 |
| caretColor | Color | - | Color of the caret (also known as the text insertion cursor). | | caretColor | Color | - | 设置输入框光标颜色。 |
| maxLength<sup>8+</sup> | number | - | Maximum number of characters in the text input. | | maxLength | number | - | 设置文本的最大输入字符数。 |
| inputFilter<sup>8+</sup> | {<br/>value: [ResourceStr](../../ui/ts-types.md)<sup>8+</sup>,<br/>error?: (value: string)<br/>} | - | Regular expression for input filtering. Only inputs that comply with the regular expression can be displayed. Other inputs are ignored. The specified regular expression can match single characters, but not strings. Example: ^(? =.\*\d)(? =.\*[a-z])(? =.\*[A-Z]).{8,10}$. Strong passwords containing 8 to 10 characters cannot be filtered.<br/>- **value**: indicates the regular expression to set.<br/>- **error**: returns the ignored content when regular expression matching fails. | | inputFilter<sup>8+</sup> | {<br/>value:&nbsp;[ResourceStr](../../ui/ts-types.md)<sup>8+</sup>,<br/>error?:&nbsp;(value:&nbsp;string)<br/>} | - | 正则表达式,满足表达式的输入允许显示,不满足正则表达式的输入被忽略。仅支持单个字符匹配,不支持字符串匹配。例如:^(?=.\*\d)(?=.\*[a-z])(?=.\*[A-Z]).{8,10}$,8到10位的强密码不支持过滤。<br/>-&nbsp;value:设置正则表达式。<br/>-&nbsp;error:正则匹配失败时,返回被忽略的内容。 |
- EnterKeyType enums - EnterKeyType枚举说明
| Name | Description | | 名称 | 描述 |
| -------- | -------- | | ------------------- | --------- |
| EnterKeyType.Go | The Enter key is labeled "Go." | | EnterKeyType.Go | 显示Go文本。 |
| EnterKeyType.Search | The Enter key is labeled "Search." | | EnterKeyType.Search | 显示为搜索样式。 |
| EnterKeyType.Send | The Enter key is labeled "Send." | | EnterKeyType.Send | 显示为发送样式。 |
| EnterKeyType.Next | The Enter key is labeled "Next." | | EnterKeyType.Next | 显示为下一个样式。 |
| EnterKeyType.Done | The Enter key is labeled "Done." | | EnterKeyType.Done | 标准样式。 |
- InputType enums - InputType枚举说明
| Name | Description | | 名称 | 描述 |
| -------- | -------- | | ------------------ | ------------- |
| InputType.Normal | Normal input mode. | | InputType.Normal | 基本输入模式。 |
| InputType.Password | Password input mode. | | InputType.Password | 密码输入模式。 |
| InputType.Email | Email address input mode. | | InputType.Email | e-mail地址输入模式。 |
| InputType.Number | Digit input mode. | | InputType.Number | 纯数字输入模式。 |
## 事件
| 名称 | 功能描述 |
| ---------------------------------------- | ---------------------------------------- |
| onChange(value:&nbsp;string)&nbsp;=&gt;&nbsp;void | 输入发生变化时,触发回调。 |
| onSubmit(callback:&nbsp;(enterKey:&nbsp;EnterKeyType)&nbsp;=&gt;&nbsp;void) | 回车键或者软键盘回车键触发该回调,参数为当前软键盘回车键类型。 |
| onEditChanged(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void)<sup>(deprecated) </sup> | 输入状态变化时,触发回调。 |
| onEditChange(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void) <sup>8+</sup> | 输入状态变化时,触发回调。 |
| onCopy<sup>8+</sup>(callback:(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 长按输入框内部区域弹出剪贴板后,点击剪切板复制按钮,触发回调。<br/>value:复制的文本内容。 |
| onCut<sup>8+</sup>(callback:(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 长按输入框内部区域弹出剪贴板后,点击剪切板剪切按钮,触发回调。<br/>value:剪切的文本内容。 |
| onPaste<sup>8+</sup>(callback:(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 长按输入框内部区域弹出剪贴板后,点击剪切板粘贴按钮,触发回调。<br/>value:粘贴的文本内容。 |
### TextInputController<sup>8+</sup> ### TextInputController<sup>8+</sup>
Implements the controller of the **&lt;TextInput&gt;** component. TextInput组件的控制器。
| Name | Description |
| -------- | -------- |
| caretPosition(value: number):void | Position of the input cursor.<br/>**value**: indicates the length from the start of the string to the position where the input cursor is located. |
### Objects to Import
#### 导入对象
``` ```
controller: TextInputController = new TextInputController() controller: TextInputController = new TextInputController()
``` ```
#### caretPosition
caretPosition(value:&nbsp;number): void
### controller.createPosition 设置光标移动到指定位置。
- 参数
caretPosition(value: number): void
Sets the cursor in a specified position. | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| ----- | ------ | ---- | ---- | ---------------------------------------- |
| value | number | 是 | - | 设置输入光标的位置。<br/>value:从字符串开始到光标所在位置的字符长度。 |
- Parameters
| Name | Type | Mandatory | Default Value | Description |
| -------- | -------- | -------- | -------- | -------- |
| value | number | Yes | - | Position of the input cursor.<br/>**value**: indicates the length from the start of the string to the position where the input cursor is located. |
## 示例
## Events
| Name | Description |
| -------- | -------- |
| onChange(value: string) =&gt; void | Triggered when the input changes. |
| onSubmit(callback: (enterKey: EnterKeyType) =&gt; void) | Triggered when the Enter key on the physical or soft keyboard is pressed. |
| onEditChanged(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void)<sup>(deprecated) </sup> | Triggered when the input status changes. |
| onEditChange(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void) <sup>8+</sup> | Triggered when the input status changes. |
| onCopy<sup>8+</sup>(callback:(value: string) =&gt; void) | Triggered when the copy button on the pasteboard, which displays when the text box is long pressed, is clicked.<br/>**value**: text to be copied. |
| onCut<sup>8+</sup>(callback:(value: string) =&gt; void) | Triggered when the cut button on the pasteboard, which displays when the text box is long pressed, is clicked.<br/>**value**: text to be cut. |
| onPaste<sup>8+</sup>(callback:(value: string) =&gt; void) | Triggered when the paste button on the pasteboard, which displays when the text box is long pressed, is clicked.<br/>**value**: text to be pasted. |
## Example
### Single-line Text Input
### 单行文本输入
``` ```
@Entry @Entry
...@@ -139,11 +126,10 @@ struct TextInputExample1 { ...@@ -139,11 +126,10 @@ struct TextInputExample1 {
``` ```
![en-us_image_0000001212378402](figures/en-us_image_0000001212378402.gif) ![zh-cn_image_0000001252769643](figures/zh-cn_image_0000001252769643.gif)
### Setting the Input Cursor
### 设置光标
``` ```
@Entry @Entry
...@@ -163,4 +149,4 @@ struct TextInputExample2 { ...@@ -163,4 +149,4 @@ struct TextInputExample2 {
} }
``` ```
![en-us_image_0000001212058468](figures/en-us_image_0000001212058468.png) ![zh-cn_image_0000001208256092](figures/zh-cn_image_0000001208256092.png)
# @Builder # @Builder
The @Builder decorated method is used to define the declarative UI description of a component and quickly generate multiple layouts in a custom component. The functionality and syntax of the @Builder decorator are the same as those of the [build Function](ts-function-build.md). The **@Builder** decorated method is used to define the declarative UI description of a component and quickly generate multiple layouts in a custom component. The functionality and syntax of the **@Builder** decorator are the same as those of the [build Function](ts-function-build.md).
``` ```
...@@ -42,30 +41,29 @@ struct CompA { ...@@ -42,30 +41,29 @@ struct CompA {
} }
} }
``` ```
## @BuilderParam<sup>8+<sup>
## @BuilderParam<sup>8+</sup> The **@BuilderParam** decorator is used to modify the function type attributes (for example, `@BuilderParam content: () => any;`) in a custom component. When the custom component is initialized, the attributes modified by the **@BuilderParam** decorator must be assigned values.
The @BuilderParam decorator is used to modify the function type attributes (for example, @BuilderParam content: () => any) in a custom component. When the custom component is initialized, the attributes modified by the @BuilderParam decorator must be assigned values.
### Background ### Background
In certain circumstances, you may need to add a specific function, such as a click-to-jump action, to a custom component. However, embedding an event method directly inside of the component can add the function to all places where the component is initialized. This is where the @BuilderParam decorator come into the picture. When initializing a custom component, you can assign a @Builder decorated method to the @BuilderParam decorated attribute, thereby adding the specific function to the custom component. In certain circumstances, you may need to add a specific function, such as a click-to-jump action, to a custom component. However, embedding an event method directly inside of the component will add the function to all places where the component is initialized. This is where the **@BuilderParam** decorator comes into the picture. When initializing a custom component, you can assign a **@Builder** decorated method to the **@BuilderParam** decorated attribute, thereby adding the specific function to the custom component.
### Component Initialization Through Parameters ### Component Initialization Through Parameters
When initializing a custom component through parameters, assign a **@Builder** decorated method to the **@BuilderParam** decorated attribute — **content**, and call the value of **content** in the custom component. If no parameter is passed when assigning a value to the **@BuilderParam** decorated attribute (for example, `content: this.specificParam`), define the type of the attribute as a function without a return value (for example, `@BuilderParam content: () => void`). If any parameter is passed when assigning a value to the **@BuilderParam** decorated attribute (for example, `callContent: this.specificParam1("111")`), define the type of the attribute as `any` (for example,`@BuilderParam callContent: any;`).
When initializing a custom component through parameters, assign a @Builder decorated method to the @BuilderParam decorated attribute —content, and call the value of content in the custom component.
``` ```
@Component @Component
struct CustomContainer { struct CustomContainer {
header: string = ""; header: string = "";
@BuilderParam content: () => any; @BuilderParam noParam: () => void;
@BuilderParam withParam: any;
footer: string = ""; footer: string = "";
build() { build() {
Column() { Column() {
Text(this.header) Text(this.header)
.fontSize(50) .fontSize(50)
this.content() this.noParam()
this.withParam()
Text(this.footer) Text(this.footer)
.fontSize(50) .fontSize(50)
} }
...@@ -75,7 +73,12 @@ struct CustomContainer { ...@@ -75,7 +73,12 @@ struct CustomContainer {
@Entry @Entry
@Component @Component
struct CustomContainerUser { struct CustomContainerUser {
@Builder specificParam(label: string) { @Builder specificNoParam() {
Column() {
Text("noParam").fontSize(50)
}
}
@Builder SpecificWithParam(label: string) {
Column() { Column() {
Text(label).fontSize(50) Text(label).fontSize(50)
} }
...@@ -85,25 +88,23 @@ struct CustomContainerUser { ...@@ -85,25 +88,23 @@ struct CustomContainerUser {
Column() { Column() {
CustomContainer({ CustomContainer({
header: "Header", header: "Header",
content: this.specificParam("111") noParam: this.specificNoParam,
withParam: this.SpecificWithParam("WithParam"),
footer: "Footer", footer: "Footer",
}) })
} }
} }
} }
``` ```
### Component Initialization Through Trailing Closure ### Component Initialization Through Trailing Closure
In a custom component, use the **@BuilderParam** decorated attribute to receive a trailing closure. When the custom component is initialized, the component name is followed by a pair of braces ({}) to form a trailing closure (`CustomComponent(){}`). You can consider a trailing closure as a container and add content to it. For example, you can add a component (`{Column(){Text("content")}`) to a trailing closure. The syntax of the closure is the same as that of [build](../ui/ts-function-build.md). In this scenario, the custom component has one and only one **@BuilderParam** decorated attribute.
In a custom component, use the @BuilderParam decorated attribute to receive a trailing closure. When the custom component is initialized, the component name is followed by a pair of braces ({}) to form a trailing closure (CustomComponent(){}). You can consider a trailing closure as a container and add content to it. For example, you can add a component ({Column(){Text("content")}) to the closure. The syntax of the closure is the same as that of [build](ts-function-build.md). In this scenario, the custom component has one and only one @BuilderParam decorated attribute. Example: Add a **\<Column>** component and a click event to the closure, and call the **specificParam** method decorated by **@Builder** in the new **\<Column>** component. After the **\<Column>** component is clicked, the value of the component's `header` attribute will change to `changeHeader`. In addition, when the component is initialized, the content of the trailing closure will be assigned to the `closer` attribute decorated by **@BuilderParam**.
Example: Add a &lt;Column> component and a click event to the closure, and call the specificParam method decorated by @Builder in the new &lt;Column&gt; component. After the &lt;Column&gt; component is clicked, the value of the component's header attribute will be changed to changeHeader. In addition, when the component is initialized, the content of the trailing closure will be assigned to the closer attribute decorated by @BuilderParam.
``` ```
@Component @Component
struct CustomContainer { struct CustomContainer {
header: string = ""; header: string = "";
@BuilderParam closer: () => any; @BuilderParam closer: () => void;
build() { build() {
Column() { Column() {
Text(this.header) Text(this.header)
......
...@@ -6,7 +6,7 @@ Use the camera module APIs to capture frames \(photographing\). ...@@ -6,7 +6,7 @@ Use the camera module APIs to capture frames \(photographing\).
## Available APIs<a name="en-us_topic_0000001052170554_section56549532016"></a> ## Available APIs<a name="en-us_topic_0000001052170554_section56549532016"></a>
**Table 1** APIs for photographing **Table 1** APIs for photographing
<a name="en-us_topic_0000001052170554_table2069447114914"></a> <a name="en-us_topic_0000001052170554_table2069447114914"></a>
<table><thead align="left"><tr id="en-us_topic_0000001052170554_row4903852104914"><th class="cellrowborder" valign="top" width="18.811881188118814%" id="mcps1.2.4.1.1"><p id="en-us_topic_0000001052170554_p2903252174918"><a name="en-us_topic_0000001052170554_p2903252174918"></a><a name="en-us_topic_0000001052170554_p2903252174918"></a>Class</p> <table><thead align="left"><tr id="en-us_topic_0000001052170554_row4903852104914"><th class="cellrowborder" valign="top" width="18.811881188118814%" id="mcps1.2.4.1.1"><p id="en-us_topic_0000001052170554_p2903252174918"><a name="en-us_topic_0000001052170554_p2903252174918"></a><a name="en-us_topic_0000001052170554_p2903252174918"></a>Class</p>
......
# Development Guidelines<a name="EN-US_TOPIC_0000001054903130"></a> # Screen and Camera Control Development<a name="EN-US_TOPIC_0000001054903130"></a>
- **[Photographing](device-camera-control-demo-photoguide.md)** - **[Photographing](device-camera-control-demo-photoguide.md)**
......
...@@ -5,7 +5,7 @@ This use case takes **camera\_sample** \(contained in the source code\) as an ...@@ -5,7 +5,7 @@ This use case takes **camera\_sample** \(contained in the source code\) as an
- You can obtain source code of the sample from **applications/sample/camera/media/camera\_sample.cpp**. - You can obtain source code of the sample from **applications/sample/camera/media/camera\_sample.cpp**.
- Before running the sample camera, you need to compile, burn, and run the image. For details, see [Hi3516 Development Board](../quick-start/quickstart-lite-introduction-hi3516#section26131214194212). - Before running the sample camera, you need to compile, burn, and run the image. For details, see [Hi3516 Development Board](../quick-start/quickstart-lite-introduction-hi3516#section26131214194212).
>![](../public_sys-resources/icon-note.gif) **NOTE:** >![](../public_sys-resources/icon-note.gif) **NOTE**<br/>
>After the development board is started, the home screen is loaded and displayed above the media layer by default. To prevent covering **camera\_sample**, you should remove the home screen during compilation or packaging. >After the development board is started, the home screen is loaded and displayed above the media layer by default. To prevent covering **camera\_sample**, you should remove the home screen during compilation or packaging.
>How to Remove: In **build/lite/components/applications.json**, comment out or delete the **//applications/sample/camera/launcher:launcher\_hap** line from the **target** field of **camera\_sample\_app**. >How to Remove: In **build/lite/components/applications.json**, comment out or delete the **//applications/sample/camera/launcher:launcher\_hap** line from the **target** field of **camera\_sample\_app**.
...@@ -18,7 +18,7 @@ This use case takes **camera\_sample** \(contained in the source code\) as an ...@@ -18,7 +18,7 @@ This use case takes **camera\_sample** \(contained in the source code\) as an
Recompile the source code repository and burn the code into the development board. Then you can find the **camera\_sample** file in the **bin** directory of the board. Recompile the source code repository and burn the code into the development board. Then you can find the **camera\_sample** file in the **bin** directory of the board.
>![](../public_sys-resources/icon-notice.gif) **NOTICE:** >![](../public_sys-resources/icon-notice.gif) **NOTICE**<br/>
>You should insert a TF card \(up to 128 GB supported\) for photographing and video recording before system startup. This way, the TF card will be automatically mounted to the **/sdcard** directory. If you insert the TF card after the system is started, you have to manually mount the TF card. >You should insert a TF card \(up to 128 GB supported\) for photographing and video recording before system startup. This way, the TF card will be automatically mounted to the **/sdcard** directory. If you insert the TF card after the system is started, you have to manually mount the TF card.
>To view the photos and videos in the TF card, copy them to a computer. If you just want to preview photos and videos, you do not need to insert a TF card. >To view the photos and videos in the TF card, copy them to a computer. If you just want to preview photos and videos, you do not need to insert a TF card.
...@@ -26,14 +26,14 @@ This use case takes **camera\_sample** \(contained in the source code\) as an ...@@ -26,14 +26,14 @@ This use case takes **camera\_sample** \(contained in the source code\) as an
1. Run the **cd** command to go to the end path of the executable program and start **camera\_sample** by running the command in the following figure. 1. Run the **cd** command to go to the end path of the executable program and start **camera\_sample** by running the command in the following figure.
**Figure 1** Starting camera\_sample<a name="fig380985885020"></a> **Figure 1** Starting camera\_sample<a name="fig380985885020"></a>
![](figures/starting-camera_sample.png "starting-camera_sample") ![](figures/starting-camera_sample.png "starting-camera_sample")
The control commands are displayed as shown in the preceding figure. Press **S** to stop the current operation \(including video recording and preview\), and press **Q** to exit the program. The control commands are displayed as shown in the preceding figure. Press **S** to stop the current operation \(including video recording and preview\), and press **Q** to exit the program.
2. Press **1** to take a photo in JPG format. The photo is saved in the **/sdcard** directory and named **Capture\***. 2. Press **1** to take a photo in JPG format. The photo is saved in the **/sdcard** directory and named **Capture\***.
**Figure 2** Serial port logs displayed after the photographing command is executed<a name="fig17819185018384"></a> **Figure 2** Serial port logs displayed after the photographing command is executed<a name="fig17819185018384"></a>
![](figures/serial-port-logs-displayed-after-the-photographing-command-is-executed.png "serial-port-logs-displayed-after-the-photographing-command-is-executed") ![](figures/serial-port-logs-displayed-after-the-photographing-command-is-executed.png "serial-port-logs-displayed-after-the-photographing-command-is-executed")
To view the saved file, exit the program and enter the file system. To start the program again, return to the previous step. To view the saved file, exit the program and enter the file system. To start the program again, return to the previous step.
...@@ -41,24 +41,24 @@ This use case takes **camera\_sample** \(contained in the source code\) as an ...@@ -41,24 +41,24 @@ This use case takes **camera\_sample** \(contained in the source code\) as an
**Figure 3** Saved files<a name="fig166391743154619"></a> **Figure 3** Saved files<a name="fig166391743154619"></a>
![](figures/saved-files.png "saved-files") ![](figures/saved-files.png "saved-files")
3. Press **2** to start recording. The video file is in MP4 format and saved in the **/sdcard** directory with the name **Record\***. Press **S** to stop recording. 3. Press **2** to start recording. The video file is in MP4 format and saved in the **/sdcard** directory with the name **Record\***. Press **S** to stop recording.
**Figure 4** Serial port logs displayed after the recording command is executed<a name="fig6340814174317"></a> **Figure 4** Serial port logs displayed after the recording command is executed<a name="fig6340814174317"></a>
![](figures/serial-port-logs-displayed-after-the-recording-command-is-executed.png "serial-port-logs-displayed-after-the-recording-command-is-executed") ![](figures/serial-port-logs-displayed-after-the-recording-command-is-executed.png "serial-port-logs-displayed-after-the-recording-command-is-executed")
4. Press **3** to start preview. The preview is displayed on the screen. Press **S** to stop preview. 4. Press **3** to start preview. The preview is displayed on the screen. Press **S** to stop preview.
**Figure 5** Serial port logs displayed after the preview command is executed<a name="fig9658148124414"></a> **Figure 5** Serial port logs displayed after the preview command is executed<a name="fig9658148124414"></a>
![](figures/serial-port-logs-displayed-after-the-preview-command-is-executed.png "serial-port-logs-displayed-after-the-preview-command-is-executed") ![](figures/serial-port-logs-displayed-after-the-preview-command-is-executed.png "serial-port-logs-displayed-after-the-preview-command-is-executed")
The following figure shows the preview. The following figure shows the preview.
**Figure 6** Preview effect<a name="fig24541759597"></a> **Figure 6** Preview effect<a name="fig24541759597"></a>
![](figures/preview-effect.jpg "preview-effect") ![](figures/preview-effect.jpg "preview-effect")
5. Press **Q** to exit. 5. Press **Q** to exit.
**Figure 7** Serial port logs displayed after the exit command is executed<a name="fig1755682174514"></a> **Figure 7** Serial port logs displayed after the exit command is executed<a name="fig1755682174514"></a>
![](figures/serial-port-logs-displayed-after-the-exit-command-is-executed.png "serial-port-logs-displayed-after-the-exit-command-is-executed") ![](figures/serial-port-logs-displayed-after-the-exit-command-is-executed.png "serial-port-logs-displayed-after-the-exit-command-is-executed")
# Overview<a name="EN-US_TOPIC_0000001055101239"></a> # Screen and Camera Control Overview<a name="EN-US_TOPIC_0000001055101239"></a>
This document describes how to use the IoT camera development board \(Hi3516D V300\) and its camera and screen to implement photographing, video recording, and video preview. This document describes how to use the IoT camera development board \(Hi3516D V300\) and its camera and screen to implement photographing, video recording, and video preview.
This document helps you take a deep dive into OpenHarmony camera control. With this reference, you can develop devices, such as peephole cameras, smart rear-view mirrors, and smart displays. This document helps you take a deep dive into OpenHarmony camera control. With this reference, you can develop devices, such as peephole cameras, smart rear-view mirrors, and smart displays.
If you want to view the running effect first, see [Use Case](device-camera-control-example.md). To customize application behavior, modify the sample code by referring to APIs described in the "Development Guidelines" section. If you want to view the running effect first, see [Use Case](device-camera-control-example.md). To customize application behavior, modify the sample code by referring to APIs described in the "Development Guidelines" section.
For basic concepts of camera development, see [Camera Development Overview](../subsystems/subsys-multimedia-camera-overview.md). For basic concepts of camera development, see [Camera Development Overview](../subsystems/subsys-multimedia-camera-overview.md).
# Screen and Camera Control<a name="EN-US_TOPIC_0000001111199426"></a> # Screen and Camera Control<a name="EN-US_TOPIC_0000001111199426"></a>
- **[Overview](device-camera-control-overview.md)** - **[Screen and Camera Control Overview](device-camera-control-overview.md)**
- **[Development Guidelines](device-camera-control-demo.md)** - **[Screen and Camera Control Development](device-camera-control-demo.md)**
- **[Use Case](device-camera-control-example.md)** - **[Use Case](device-camera-control-example.md)**
......
...@@ -247,7 +247,7 @@ To build such an app, we can create a page that has a flexible layout with two r ...@@ -247,7 +247,7 @@ To build such an app, we can create a page that has a flexible layout with two r
## Signing and Packaging<a name="section10601181101516"></a> ## Signing and Packaging<a name="section10601181101516"></a>
After finishing writing the app code, you need to sign and package the app before running it on a real device. For details, see [Signing and Packaging Guide](https://developer.harmonyos.com/en/docs/documentation/doc-guides/ohos-debugging-and-running-0000001263040487#section17660437768)). After finishing writing the app code, you need to sign and package the app before running it on a real device. For details, see [Signing and Packaging Guide](https://developer.harmonyos.com/en/docs/documentation/doc-guides/ohos-debugging-and-running-0000001263040487#section17660437768).
## Running on the Real Device<a name="section092721731511"></a> ## Running on the Real Device<a name="section092721731511"></a>
......
# Development Guidelines<a name="EN-US_TOPIC_0000001055086133"></a> # Camera Control Development<a name="EN-US_TOPIC_0000001055086133"></a>
- **[Photographing](device-iotcamera-control-demo-photodevguide.md)** - **[Photographing](device-iotcamera-control-demo-photodevguide.md)**
......
# Use Case<a name="EN-US_TOPIC_0000001055686082"></a> # Use Case<a name="EN-US_TOPIC_0000001055686082"></a>
- A Hi318 compilation result file of sample code is stored in **out/ipcamera\_hi3518ev300/dev\_tools/bin/camera\_sample**. You can copy the file to a TF card, or modify the compilation script of **camera\_sample** to copy the result to **rootfs.img**. - For details about the development board, compilation, burning, and image running, see [Hi3518 Development Board](../quick-start/quickstart-lite-introduction-hi3518.md#section14815247616). A compilation result file of sample code is stored in **out/ipcamera\_hi3518ev300/dev\_tools/bin/camera\_sample**. You can copy the file to a TF card, or modify the compilation script of **camera\_sample** to copy the result to **rootfs.img**.
Modify **output\_dir** in **applications/sample/camera/media/BUILD.gn**. Modify **output\_dir** in **applications/sample/camera/media/BUILD.gn**.
......
# Overview<a name="EN-US_TOPIC_0000001055366100"></a> # Camera Control Overview<a name="EN-US_TOPIC_0000001055366100"></a>
This document describes how to use the IoT camera development board and the built-in camera of the development kit to implement photographing and video recording. This document describes how to use the IoT camera development board and the built-in camera of the development kit to implement photographing and video recording.
You can perform operations provided in [Use Case](device-iotcamera-control-example.md) to learn more about development board peripheral control and then develop devices such as cameras. You can perform operations provided in [Use Case](device-iotcamera-control-example.md) to learn more about development board peripheral control and then develop devices such as cameras.
If you want to view the sample effect first, see [Use Case](device-iotcamera-control-example.md). To customize application behavior, modify the sample code by referring to APIs described in the next section. If you want to view the sample effect first, see [Use Case](device-iotcamera-control-example.md). To customize application behavior, modify the sample code by referring to APIs described in the next section.
For details about basic concepts for camera development, see the [camera development overview](../subsystems/subsys-multimedia-camera-overview.md). For details about basic concepts for camera development, see [Camera Overview](../subsystems/subsys-multimedia-camera-overview.md).
# Camera Control<a name="EN-US_TOPIC_0000001157319429"></a> # Camera Control<a name="EN-US_TOPIC_0000001157319429"></a>
- **[Overview](device-iotcamera-control-overview.md)** - **[Camera Control Overview](device-iotcamera-control-overview.md)**
- **[Development Guidelines](device-iotcamera-control-demo.md)** - **[Camera Control Development](device-iotcamera-control-demo.md)**
- **[Use Case](device-iotcamera-control-example.md)** - **[Use Case](device-iotcamera-control-example.md)**
......
...@@ -97,7 +97,7 @@ Based on the Hi3861 platform, the OpenHarmony WLAN module provides abundant peri ...@@ -97,7 +97,7 @@ Based on the Hi3861 platform, the OpenHarmony WLAN module provides abundant peri
## Verification<a name="section1949121910344"></a> ## Verification<a name="section1949121910344"></a>
For details about the compilation and burning processes, see [Building Source Code](../quick-start/quickstart-ide-lite-steps-hi3861-building.md) and [Burning Images](../quick-start/quickstart-ide-lite-steps-hi3861-burn.md) in the _Getting Started with Hi3861_. For details about the compilation and burning processes, see [Building Source Code](../quick-start/quickstart-lite-steps-hi3861-connection.md#section191121332125319) and [Burning Images](../quick-start/quickstart-lite-steps-hi3861-connection.md#section3288165814218) in the _Getting Started with Hi3861_.
After the preceding two steps are complete, press the **RST** button to reset the module. If the LED blinks periodically as expected, the verification is passed. After the preceding two steps are complete, press the **RST** button to reset the module. If the LED blinks periodically as expected, the verification is passed.
......
...@@ -23,14 +23,14 @@ The download steps for other resources are the same as those in the mainline ver ...@@ -23,14 +23,14 @@ The download steps for other resources are the same as those in the mainline ver
# Porting Procedure # Porting Procedure
- [Mini System SoC Porting Guide](porting-minichip.md) - [Mini System SoC Porting Guide](porting-minichip.md)
- [Porting Preparations](porting-chip-prepare.md) - Porting Preparations
- [Before You Start](oem_transplant_chip_prepare_knows.md) - [Before You Start](porting-chip-prepare-knows.md)
- [Building Adaptation Process](porting-chip-prepare-process.md) - [Building Adaptation Process](porting-chip-prepare-process.md)
- [Kernel Porting](porting-chip-kernel.md) - Kernel Porting
- [Overview](porting-chip-kernel-overview.md) - [Overview](porting-chip-kernel-overview.md)
- [Basic Kernel Adaptation](porting-chip-kernel-adjustment.md) - [Basic Kernel Adaptation](porting-chip-kernel-adjustment.md)
- [Kernel Porting Verification](porting-chip-kernel-verify.md) - [Kernel Porting Verification](porting-chip-kernel-verify.md)
- [Board-Level OS Porting](porting-chip-board.md) - Board-Level OS Porting
- [Overview](porting-chip-board-overview.md) - [Overview](porting-chip-board-overview.md)
- [Board-Level Driver Adaptation](porting-chip-board-driver.md) - [Board-Level Driver Adaptation](porting-chip-board-driver.md)
- [Implementation of APIs at the HAL](porting-chip-board-hal.md) - [Implementation of APIs at the HAL](porting-chip-board-hal.md)
...@@ -38,22 +38,22 @@ The download steps for other resources are the same as those in the mainline ver ...@@ -38,22 +38,22 @@ The download steps for other resources are the same as those in the mainline ver
- [lwIP Module Adaptation](porting-chip-board-lwip.md) - [lwIP Module Adaptation](porting-chip-board-lwip.md)
- [Third-party Module Adaptation](porting-chip-board-bundle.md) - [Third-party Module Adaptation](porting-chip-board-bundle.md)
- [XTS](porting-chip-board-xts.md) - [XTS](porting-chip-board-xts.md)
- [FAQ](porting-chip-faqs.md) - [FAQs](porting-chip-faqs.md)
- [Small System SoC Porting Guide](porting-smallchip.md) - Small System SoC Porting Guide
- [Porting Preparations](porting-smallchip-prepare.md) - Porting Preparations
- [Before You Start](porting-smallchip-prepare-needs.md) - [Before You Start](porting-smallchip-prepare-needs.md)
- [Compilation and Building](porting-smallchip-prepare-building.md) - [Compilation and Building](porting-smallchip-prepare-building.md)
- [Kernel Porting](porting-smallchip-kernel.md) - Kernel Porting
- [LiteOS Cortex-A](porting-smallchip-kernel-a.md) - [LiteOS Cortex-A](porting-smallchip-kernel-a.md)
- [Linux Kernel](porting-smallchip-kernel-linux.md) - [Linux Kernel](porting-smallchip-kernel-linux.md)
- [Driver Porting](porting-smallchip-driver.md) - Driver Porting
- [Overview](porting-smallchip-driver-overview.md) - [Overview](porting-smallchip-driver-overview.md)
- [Platform Driver Porting](porting-smallchip-driver-plat.md) - [Platform Driver Porting](porting-smallchip-driver-plat.md)
- [Device Driver Porting](porting-smallchip-driver-oom.md) - [Device Driver Porting](porting-smallchip-driver-oom.md)
- Standard System SoC Porting Guide - Standard System SoC Porting Guide
- [Standard System Porting Guide](standard-system-porting-guide.md) - [Standard System Porting Guide](standard-system-porting-guide.md)
- [A Method for Rapidly Porting the OpenHarmony Linux Kernel](porting-linux-kernel.md) - [A Method for Rapidly Porting the OpenHarmony Linux Kernel](porting-linux-kernel.md)
- [Third-Party Library Porting Guide for Mini and Small Systems](porting-thirdparty.md) - Third-Party Library Porting Guide for Mini and Small Systems
- [Overview](porting-thirdparty-overview.md) - [Overview](porting-thirdparty-overview.md)
- [Porting a Library Built Using CMake](porting-thirdparty-cmake.md) - [Porting a Library Built Using CMake](porting-thirdparty-cmake.md)
- [Porting a Library Built Using Makefile](porting-thirdparty-makefile.md) - [Porting a Library Built Using Makefile](porting-thirdparty-makefile.md)
......
...@@ -73,11 +73,11 @@ kernel_version = "3.0.0" --- Kernel version, which corresponds to ...@@ -73,11 +73,11 @@ kernel_version = "3.0.0" --- Kernel version, which corresponds to
Run the `hb set` command, enter the project root directory, and press `Enter`. The `hb` command traverses all `config.json` files in the `//vendor/<product_company>/<product_name>` directory and provides product compilation options. In the `config.json` file, `product_name` indicates the product name, `device_company` and `board` are used to locate the `//device/board/<device_company>/<board>` directory and find the matching `<any_dir_name>/config.gni` file. If multiple file matches are found, it indicates that the board has been adapted to multiple kernels. In this case, `kernel_type` and `kernel_version` in the `config.json` file can be used to uniquely match the `config.gni` file and thereby determine the board with which kernel needs to be compiled and adapted. If the information shown below is displayed, the `hb set` configuration is correct. Run the `hb set` command, enter the project root directory, and press `Enter`. The `hb` command traverses all `config.json` files in the `//vendor/<product_company>/<product_name>` directory and provides product compilation options. In the `config.json` file, `product_name` indicates the product name, `device_company` and `board` are used to locate the `//device/board/<device_company>/<board>` directory and find the matching `<any_dir_name>/config.gni` file. If multiple file matches are found, it indicates that the board has been adapted to multiple kernels. In this case, `kernel_type` and `kernel_version` in the `config.json` file can be used to uniquely match the `config.gni` file and thereby determine the board with which kernel needs to be compiled and adapted. If the information shown below is displayed, the `hb set` configuration is correct.
![hb set](figure/bes2600_hb_set.png) ![hb set](figures/bes2600_hb_set.png)
​ You can run the `hb env` command to view the selected precompilation environment variables. ​ You can run the `hb env` command to view the selected precompilation environment variables.
![hb env](figure/bes2600_hb_env.png) ![hb env](figures/bes2600_hb_env.png)
Before running the `hb build` command, complete the LiteOS-M kernel adaptation. For details, see [Kernel Porting](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-bes2600w-on-minisystem-display-demo.md#%E5%86%85%E6%A0%B8%E7%A7%BB%E6%A4%8D). Before running the `hb build` command, complete the LiteOS-M kernel adaptation. For details, see [Kernel Porting](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-bes2600w-on-minisystem-display-demo.md#%E5%86%85%E6%A0%B8%E7%A7%BB%E6%A4%8D).
...@@ -263,7 +263,7 @@ In this example, the configuration file of `defconfig` is saved in `$(PRODUCT_PA ...@@ -263,7 +263,7 @@ In this example, the configuration file of `defconfig` is saved in `$(PRODUCT_PA
When the configuration is complete, run the `make menuconfig` command in the `kernel/liteos_m` directory to select `SoC Series`/`SoC`/`Board`. When the configuration is complete, run the `make menuconfig` command in the `kernel/liteos_m` directory to select `SoC Series`/`SoC`/`Board`.
![board make menuconfig](figure/bes2600_board_make_menuconfig.png) ![board make menuconfig](figures/bes2600_board_make_menuconfig.png)
The result is automatically saved in `$(PRODUCT_PATH)/kernel_configs/debug.config` and will be exported when `make menuconfig` is executed. The result is automatically saved in `$(PRODUCT_PATH)/kernel_configs/debug.config` and will be exported when `make menuconfig` is executed.
...@@ -432,7 +432,7 @@ static int32_t FsDriverInit(struct HdfDeviceObject *object) ...@@ -432,7 +432,7 @@ static int32_t FsDriverInit(struct HdfDeviceObject *object)
In the mini system, adapting the C library is a complex process. For details, see *Solution to Smooth Switchover Between musl and newlib for LiteOS-M Kernel*. The toolchain uses the `newlib` C library of the [gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2](https://gitee.com/link?target=https%3A%2F%2Fdeveloper.arm.com%2F-%2Fmedia%2FFiles%2Fdownloads%2Fgnu-rm%2F10.3-2021.10%2Fgcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2). In light of this, the `newlib` C library is used for system porting. Select `newlib` in `make menuconfig` of the kernel, as shown below. In the mini system, adapting the C library is a complex process. For details, see *Solution to Smooth Switchover Between musl and newlib for LiteOS-M Kernel*. The toolchain uses the `newlib` C library of the [gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2](https://gitee.com/link?target=https%3A%2F%2Fdeveloper.arm.com%2F-%2Fmedia%2FFiles%2Fdownloads%2Fgnu-rm%2F10.3-2021.10%2Fgcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2). In light of this, the `newlib` C library is used for system porting. Select `newlib` in `make menuconfig` of the kernel, as shown below.
![image-20211212191013553](figure/bes2600_newlib_make_menuconfig.png) ![image-20211212191013553](figures/bes2600_newlib_make_menuconfig.png)
#### malloc Adaptation #### malloc Adaptation
......
# Overview<a name="EN-US_TOPIC_0000001153683022"></a> # Porting Overview<a name="EN-US_TOPIC_0000001153683022"></a>
## Porting Process<a name="section1283115812294"></a> ## Porting Process<a name="section1283115812294"></a>
...@@ -10,7 +10,7 @@ After the minimum system is ported, you can port the board-level system by: ...@@ -10,7 +10,7 @@ After the minimum system is ported, you can port the board-level system by:
4. Verifying service functions 4. Verifying service functions
**Figure 1** Process for board-level driver adaptation<a name="fig14619153362215"></a> **Figure 1** Process for board-level driver adaptation<a name="fig14619153362215"></a>
![](figure/process-for-board-level-driver-adaptation.png "process-for-board-level-driver-adaptation") ![process-for-board-level-driver-adaptation](figures/process-for-board-level-driver-adaptation.png)
## Board-Level Directory Specifications<a name="section6204129143013"></a> ## Board-Level Directory Specifications<a name="section6204129143013"></a>
......
# Board-Level OS Porting<a name="EN-US_TOPIC_0000001062604739"></a> # Board-Level OS Porting<a name="EN-US_TOPIC_0000001062604739"></a>
- **[Overview](porting-chip-board-overview.md)** - **[Porting Overview](porting-chip-board-overview.md)**
- **[Board-Level Driver Adaptation](porting-chip-board-driver.md)** - **[Board-Level Driver Adaptation](porting-chip-board-driver.md)**
......
# FAQ<a name="EN-US_TOPIC_0000001153683024"></a> # FAQs<a name="EN-US_TOPIC_0000001153683024"></a>
## How Do I Mount the Heap Memory to the Kernel?<a name="section965418378552"></a> ## How Do I Mount the Heap Memory to the Kernel?<a name="section965418378552"></a>
......
...@@ -12,7 +12,7 @@ Basic adaptation consists of the following steps: ...@@ -12,7 +12,7 @@ Basic adaptation consists of the following steps:
**Figure 1** Startup process<a name="fig10838105524917"></a> **Figure 1** Startup process<a name="fig10838105524917"></a>
![](figure/startup-process.png) ![](figures/startup-process.png)
In the **startup.S** file, you must ensure that the entry function \(for example, **reset\_vector**\) of the interrupt vector table is stored in the RAM start address specified by the link configuration files. The link configuration files of IAR, Keil, and GCC projects are **xxx.icf**, **xxx.sct**, and **xxx.ld**, respectively. The startup file provided by the vendor does not need to be modified if the **startup.S** file has initialized the system clock and returned to the **main** function. Otherwise, the preceding functions need to be implemented. In the **startup.S** file, you must ensure that the entry function \(for example, **reset\_vector**\) of the interrupt vector table is stored in the RAM start address specified by the link configuration files. The link configuration files of IAR, Keil, and GCC projects are **xxx.icf**, **xxx.sct**, and **xxx.ld**, respectively. The startup file provided by the vendor does not need to be modified if the **startup.S** file has initialized the system clock and returned to the **main** function. Otherwise, the preceding functions need to be implemented.
...@@ -34,6 +34,7 @@ The following table shows some typical configuration items: ...@@ -34,6 +34,7 @@ The following table shows some typical configuration items:
**Table 1** Typical configuration items **Table 1** Typical configuration items
<a name="table1343954214199"></a> <a name="table1343954214199"></a>
<table><thead align="left"><tr id="row1244014425196"><th class="cellrowborder" valign="top" width="34.81%" id="mcps1.2.3.1.1"><p id="p1544044212197"><a name="p1544044212197"></a><a name="p1544044212197"></a>Item</p> <table><thead align="left"><tr id="row1244014425196"><th class="cellrowborder" valign="top" width="34.81%" id="mcps1.2.3.1.1"><p id="p1544044212197"><a name="p1544044212197"></a><a name="p1544044212197"></a>Item</p>
</th> </th>
<th class="cellrowborder" valign="top" width="65.19%" id="mcps1.2.3.1.2"><p id="p7440194281913"><a name="p7440194281913"></a><a name="p7440194281913"></a>Description</p> <th class="cellrowborder" valign="top" width="65.19%" id="mcps1.2.3.1.2"><p id="p7440194281913"><a name="p7440194281913"></a><a name="p7440194281913"></a>Description</p>
......
# Overview<a name="EN-US_TOPIC_0000001153842840"></a> # Porting Overview<a name="EN-US_TOPIC_0000001153842840"></a>
## Porting Scenario<a name="section93781277367"></a> ## Porting Scenario<a name="section93781277367"></a>
...@@ -16,8 +16,7 @@ The kernel used by module chips is LiteOS Cortex-M, which consists of four modul ...@@ -16,8 +16,7 @@ The kernel used by module chips is LiteOS Cortex-M, which consists of four modul
**Figure 1** Architecture of the LiteOS Cortex-M kernel<a name="fig10838105524917"></a> **Figure 1** Architecture of the LiteOS Cortex-M kernel<a name="fig10838105524917"></a>
<img src="figures/architecture-of-the-liteos-cortex-m-kernel.png" style="zoom:75%;" />
![](figure/architecture-of-the-liteos-cortex-m-kernel.png)
The directory structure of the kernel is described as follows: The directory structure of the kernel is described as follows:
......
# Kernel Porting<a name="EN-US_TOPIC_0000001153842846"></a> # Kernel Porting<a name="EN-US_TOPIC_0000001153842846"></a>
- **[Overview](porting-chip-kernel-overview.md)** - **[Porting Overview](porting-chip-kernel-overview.md)**
- **[Basic Kernel Adaptation](porting-chip-kernel-adjustment.md)** - **[Basic Kernel Adaptation](porting-chip-kernel-adjustment.md)**
......
# Porting Preparations<a name="EN-US_TOPIC_0000001199842513"></a> # Porting Preparations<a name="EN-US_TOPIC_0000001199842513"></a>
- **[Before You Start](oem_transplant_chip_prepare_knows.md)** - **[Before You Start](porting-chip-prepare-knows.md)**
- **[Building Adaptation Process](porting-chip-prepare-process.md)** - **[Building Adaptation Process](porting-chip-prepare-process.md)**
......
...@@ -12,7 +12,7 @@ For easy description, we divide the OpenHarmony architecture into two parts: ...@@ -12,7 +12,7 @@ For easy description, we divide the OpenHarmony architecture into two parts:
OpenHarmony = Kernel mode layer + User mode layer OpenHarmony = Kernel mode layer + User mode layer
![](figure/technical-architecture.png) ![](figures/technical-architecture.png)
The kernel mode layer is the OpenHarmony kernel layer \(purple part in the figure\). It consists of the kernel, such as Linux Kernel and LiteOS, and features, such as Hardware Driver Foundation \(HDF\), running in the kernel mode. The kernel mode layer is the OpenHarmony kernel layer \(purple part in the figure\). It consists of the kernel, such as Linux Kernel and LiteOS, and features, such as Hardware Driver Foundation \(HDF\), running in the kernel mode.
...@@ -35,7 +35,7 @@ Therefore, the OpenHarmony kernel mode layer includes the following: ...@@ -35,7 +35,7 @@ Therefore, the OpenHarmony kernel mode layer includes the following:
- OpenHarmony basic kernel-mode code - OpenHarmony basic kernel-mode code
- OpenHarmony kernel-mode features, such as HDF - OpenHarmony kernel-mode features, such as HDF
![](figure/openharmony_kernel.png) ![](figures/openharmony_kernel.png)
The standard LTS Linux kernel and third-party SoC chip platform code constitute the basis of a third-party Linux kernel. The OpenHarmony kernel mode layer can be composed of either of the following: The standard LTS Linux kernel and third-party SoC chip platform code constitute the basis of a third-party Linux kernel. The OpenHarmony kernel mode layer can be composed of either of the following:
...@@ -84,7 +84,7 @@ The following uses Raspberry Pi 3b \(BCM2837\) as an example to describe how to ...@@ -84,7 +84,7 @@ The following uses Raspberry Pi 3b \(BCM2837\) as an example to describe how to
# Configure the build environment, and use clang provided by the project to build the Raspberry Pi kernel source code. # Configure the build environment, and use clang provided by the project to build the Raspberry Pi kernel source code.
export PATH=$PROJ_ROOT/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PROJ_ROOT/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/:$PATH export PATH=$PROJ_ROOT/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PROJ_ROOT/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/:$PATH
export MAKE_OPTIONS="ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- CC=clang HOSTCC=clang" export MAKE_OPTIONS="ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- CC=clang HOSTCC=clang"
export PRODUCT_PATH=vendor/hisilicon/Hi3516DV300 export PRODUCT_PATH=vendor/hisilicon/hispark_taurus_standard
``` ```
3. Comment out the flags that cannot be recognized by **clang**. 3. Comment out the flags that cannot be recognized by **clang**.
...@@ -175,7 +175,7 @@ For details about how to use the logs, see [Hilog\_lite](https://gitee.com/open ...@@ -175,7 +175,7 @@ For details about how to use the logs, see [Hilog\_lite](https://gitee.com/open
The configuration \(in **Device Drivers** \> **HDF driver framework support**\) is as follows: The configuration \(in **Device Drivers** \> **HDF driver framework support**\) is as follows:
![](figure/menuconfig.png) ![](figures/menuconfig.png)
### Building the Image<a name="section1681965561911"></a> ### Building the Image<a name="section1681965561911"></a>
...@@ -198,7 +198,7 @@ The HDF test cases are used to verify basic functions of the HDF framework and p ...@@ -198,7 +198,7 @@ The HDF test cases are used to verify basic functions of the HDF framework and p
**Test Case Build and Test Method** **Test Case Build and Test Method**
Use the [hdc\_std](https://gitee.com/openharmony/docs/blob/master/en/device-dev/subsystems/oem_subsys_toolchain_hdc_guide.md) tool to push the test case execution file to the device and execute the test cases. The procedure is as follows: Use the [hdc\_std](https://gitee.com/openharmony/docs/blob/master/en/device-dev/subsystems/subsys-toolchain-hdc-guide.md) tool to push the test case execution file to the device and execute the test cases. The procedure is as follows:
1. Build the HDF test cases. 1. Build the HDF test cases.
2. Use the **hdc\_std** tool to push the test case execution file to the device. 2. Use the **hdc\_std** tool to push the test case execution file to the device.
...@@ -211,14 +211,14 @@ The procedure is as follows: ...@@ -211,14 +211,14 @@ The procedure is as follows:
Run the following command: Run the following command:
``` ```
./build.sh --product-name Hi3516DV300 --build-target hdf_test ./build.sh --product-name hispark_taurus_standard --build-target hdf_test
``` ```
Wait until the build is complete. Wait until the build is complete.
2. Copy the test files to the target device \(Raspberry Pi in this example\). 2. Copy the test files to the target device \(Raspberry Pi in this example\).
Method 1: Use the [hdc\_std](https://gitee.com/openharmony/docs/blob/master/en/device-dev/subsystems/oem_subsys_toolchain_hdc_guide.md) tool. Method 1: Use the [hdc\_std](https://gitee.com/openharmony/docs/blob/master/en/device-dev/subsystems/subsys-toolchain-hdc-guide.md) tool.
1. Create the **data/test** directory in Raspberry Pi. 1. Create the **data/test** directory in Raspberry Pi.
......
...@@ -157,7 +157,7 @@ The WLAN driver is divided into two parts. One of the parts manages WLAN devices ...@@ -157,7 +157,7 @@ The WLAN driver is divided into two parts. One of the parts manages WLAN devices
**Figure 1** OpenHarmony WLAN driver architecture<a name="fig155920160203"></a> **Figure 1** OpenHarmony WLAN driver architecture<a name="fig155920160203"></a>
![](figure/hdf_wifi.png) ![](figures/hdf_wifi.png)
As shown in [Figure 1](#fig155920160203), the part on the left manages WLAN devices, and the part on the right manages WLAN traffic. The HDF WLAN framework abstracts these two parts. The porting process of the driver can be considered as the implementation of the APIs required by the two parts. These APIs are described as follows: As shown in [Figure 1](#fig155920160203), the part on the left manages WLAN devices, and the part on the right manages WLAN traffic. The HDF WLAN framework abstracts these two parts. The porting process of the driver can be considered as the implementation of the APIs required by the two parts. These APIs are described as follows:
......
# Overview<a name="EN-US_TOPIC_0000001154372312"></a> # Porting Overview<a name="EN-US_TOPIC_0000001154372312"></a>
Drivers can be classified as platform drivers or device drivers. The platform drivers are generally in the SoC, such as the GPIO, I2C, and SPI drivers. The device drivers are typically outside of the SoC, such as the LCD, TP, and WLAN drivers. Drivers can be classified as platform drivers or device drivers. The platform drivers are generally in the SoC, such as the GPIO, I2C, and SPI drivers. The device drivers are typically outside of the SoC, such as the LCD, TP, and WLAN drivers.
**Figure 1** OpenHarmony driver classification<a name="fig08631434121"></a> **Figure 1** OpenHarmony driver classification<a name="fig08631434121"></a>
![](figure/openharmony-driver-classification.png "openharmony-driver-classification") ![](figures/openharmony-driver-classification.png "openharmony-driver-classification")
The Hardware Driver Foundation \(HDF\) is designed to work across OSs. The HDF driver framework provides strong support for drivers to achieve this goal. During HDF driver development, you are advised to use only the APIs provided by the HDF driver framework. Otherwise, the driver cannot be used across OSs. Before driver development, familiarize yourself with the [HDF](../driver/driver-hdf-overview.md). The Hardware Driver Foundation \(HDF\) is designed to work across OSs. The HDF driver framework provides strong support for drivers to achieve this goal. During HDF driver development, you are advised to use only the APIs provided by the HDF driver framework. Otherwise, the driver cannot be used across OSs. Before driver development, familiarize yourself with the [HDF](../driver/driver-hdf-overview.md).
# Driver Porting<a name="EN-US_TOPIC_0000001200252099"></a> # Driver Porting<a name="EN-US_TOPIC_0000001200252099"></a>
- **[Overview](porting-smallchip-driver-overview.md)** - **[Porting Overview](porting-smallchip-driver-overview.md)**
- **[Platform Driver Porting](porting-smallchip-driver-plat.md)** - **[Platform Driver Porting](porting-smallchip-driver-plat.md)**
......
...@@ -27,7 +27,7 @@ The LiteOS Cortex-A initialization process consists of seven steps: ...@@ -27,7 +27,7 @@ The LiteOS Cortex-A initialization process consists of seven steps:
The figure below shows the overall initialization process. The figure below shows the overall initialization process.
**Figure 1** Overall initialization process<a name="fig68283211926"></a> **Figure 1** Overall initialization process<a name="fig68283211926"></a>
![](figure/overall-initialization-process.png "overall-initialization-process") ![](figures/overall-initialization-process.png "overall-initialization-process")
As can be seen from preceding figure, kernel basic adaptation involves the following parts: As can be seen from preceding figure, kernel basic adaptation involves the following parts:
...@@ -108,7 +108,7 @@ As can be seen from preceding figure, kernel basic adaptation involves the follo ...@@ -108,7 +108,7 @@ As can be seen from preceding figure, kernel basic adaptation involves the follo
- Implementing the **SystemInit** function to initialize services in the user space. Figure 2 shows a typical initialization scenario. - Implementing the **SystemInit** function to initialize services in the user space. Figure 2 shows a typical initialization scenario.
**Figure 2** Service startup process<a name="fig1919217914418"></a> **Figure 2** Service startup process<a name="fig1919217914418"></a>
![](figure/service-startup-process.png "service-startup-process") ![](figures/service-startup-process.png "service-startup-process")
- Implementing the **main** function for basic kernel initialization and initialization of services in the board kernel space. [Figure 3](#fig32611728133919) shows the initialization process, where the kernel startup framework takes the lead in the initialization process. The light blue part in the figure indicates the phase in which external modules can be registered and started in the startup framework. - Implementing the **main** function for basic kernel initialization and initialization of services in the board kernel space. [Figure 3](#fig32611728133919) shows the initialization process, where the kernel startup framework takes the lead in the initialization process. The light blue part in the figure indicates the phase in which external modules can be registered and started in the startup framework.
...@@ -116,7 +116,7 @@ As can be seen from preceding figure, kernel basic adaptation involves the follo ...@@ -116,7 +116,7 @@ As can be seen from preceding figure, kernel basic adaptation involves the follo
>Modules at the same layer cannot depend on each other. >Modules at the same layer cannot depend on each other.
**Figure 3** Kernel startup framework<a name="fig32611728133919"></a> **Figure 3** Kernel startup framework<a name="fig32611728133919"></a>
![](figure/kernel-startup-framework.jpg "kernel-startup-framework") ![](figures/kernel-startup-framework.jpg "kernel-startup-framework")
**Table 2** Startup framework layers **Table 2** Startup framework layers
......
...@@ -54,7 +54,7 @@ You can use the Bootloader provided by the chipset vendor or open-source U-Boot ...@@ -54,7 +54,7 @@ You can use the Bootloader provided by the chipset vendor or open-source U-Boot
Debug the **init** process, start shell, and run a simple program in the user space to check whether the kernel porting is successful. Below is the OS image structure of the OpenHarmony [small system](../quick-start/quickstart-lite-overview.md) and the Linux user-space program startup process. Debug the **init** process, start shell, and run a simple program in the user space to check whether the kernel porting is successful. Below is the OS image structure of the OpenHarmony [small system](../quick-start/quickstart-lite-overview.md) and the Linux user-space program startup process.
**Figure 1** OS image structure and user-space program startup process based on the Linux kernel<a name="fig91631652715"></a> **Figure 1** OS image structure and user-space program startup process based on the Linux kernel<a name="fig91631652715"></a>
![](figure/os-image-structure-and-user-space-program-startup-process-based-on-the-linux-kernel.png "os-image-structure-and-user-space-program-startup-process-based-on-the-linux-kernel") ![](figures/os-image-structure-and-user-space-program-startup-process-based-on-the-linux-kernel.png "os-image-structure-and-user-space-program-startup-process-based-on-the-linux-kernel")
Based on the preceding process, the recommended verification procedure is as follows: Based on the preceding process, the recommended verification procedure is as follows:
...@@ -91,12 +91,12 @@ Based on the preceding process, the recommended verification procedure is as fol ...@@ -91,12 +91,12 @@ Based on the preceding process, the recommended verification procedure is as fol
If the init startup log contains the version number, the init program is started properly: If the init startup log contains the version number, the init program is started properly:
**Figure 2** Log indicating that the init process is started properly<a name="fig1111661083719"></a> **Figure 2** Log indicating that the init process is started properly<a name="fig1111661083719"></a>
![](figure/log-indicating-that-the-init-process-is-started-properly.png "log-indicating-that-the-init-process-is-started-properly") ![](figures/log-indicating-that-the-init-process-is-started-properly.png "log-indicating-that-the-init-process-is-started-properly")
After entering the shell, run the **ls** command. The following figure shows the information printed over the serial port. After entering the shell, run the **ls** command. The following figure shows the information printed over the serial port.
**Figure 3** Information printed after the ls command is executed in the shell<a name="fig64571257103717"></a> **Figure 3** Information printed after the ls command is executed in the shell<a name="fig64571257103717"></a>
![](figure/information-printed-after-the-ls-command-is-executed-in-the-shell.png "information-printed-after-the-ls-command-is-executed-in-the-shell") ![](figures/information-printed-after-the-ls-command-is-executed-in-the-shell.png "information-printed-after-the-ls-command-is-executed-in-the-shell")
3. Configure the NFS. 3. Configure the NFS.
......
...@@ -218,12 +218,12 @@ The following steps show how to configure and modify the toolchains for cross-co ...@@ -218,12 +218,12 @@ The following steps show how to configure and modify the toolchains for cross-co
1. Set up the OpenHarmony environment. 1. Set up the OpenHarmony environment.
Using Hi3518EV300 as an example, compile the OpenHarmony image and burn it to the development board. For details, see [Developing the First Example Program Running on Hi3518](../quick-start/quickstart-lite-steps-hi3516-running.md). Using Hi3516D V300 as an example, compile the OpenHarmony image and burn it to the development board. For details, see [Developing the First Example Program Running on Hi3518](../quick-start/quickstart-lite-steps-hi3516-running.md).
The following screen is displayed after a successful login to the OS. The following screen is displayed after a successful login to the OS.
**Figure 1** Successful startup of OpenHarmony<a name="fig13279524162418"></a> **Figure 1** Successful startup of OpenHarmony<a name="fig13279524162418"></a>
![](figure/successful-startup-of-openharmony.png "successful-startup-of-openharmony") ![](figures/successful-startup-of-openharmony.png "successful-startup-of-openharmony")
2. Mount the **nfs** directory and put the executable file **cctest** into the **test** directory \(listed in [Table 2](#table1452412391911)\) to the **nfs** directory. 2. Mount the **nfs** directory and put the executable file **cctest** into the **test** directory \(listed in [Table 2](#table1452412391911)\) to the **nfs** directory.
3. Perform the test cases. 3. Perform the test cases.
......
...@@ -6,51 +6,60 @@ This document describes the general process for porting a development board, rat ...@@ -6,51 +6,60 @@ This document describes the general process for porting a development board, rat
This document uses the process of porting a development board named **MyProduct** as an example. This development board is provided by **MyProductVendor** and uses the SoC **MySOC** produced by **MySoCVendor**. This document uses the process of porting a development board named **MyProduct** as an example. This development board is provided by **MyProductVendor** and uses the SoC **MySOC** produced by **MySoCVendor**.
### Defining an SoC<a name="section135mcpsimp"></a> ### Defining a Product<a name="section145mcpsimp"></a>
Create a JSON file named after the SoC name in the **//productdefine/common/device** directory and specify the CPU architecture.
For example, to port **MySOC**, which uses a 32-bit ARM kernel, configure the file as follows: Create a config.json file in the directory with the name "//vendor/MyProductVendor/{product_name}. This file is used to describe the SoC used by the product and the required subsystems. configure the file as follows:
//productdefine/common/device/MySOC.json //vendor/MyProductVendor/MyProduct/config.json
``` ```
{ {
"target_os": "ohos", "product_name": "MyProduct",
"target_cpu": "arm" "version": "3.0",
"type": "standard",
"target_cpu": "arm",
"ohos_version": "OpenHarmony 1.0",
"device_company": "MyProductVendor",
"board": "MySOC",
"enable_ramdisk": true,
"subsystems": [
{
"subsystem": "ace",
"components": [
{ "component": "ace_engine_lite", "features":[""] }
]
},
]
} }
``` ```
Currently, **target\_cpu** can be set to **arm** only. In the future, you can set the value depending on the CPU architecture, such as **arm64**, **riscv**, or **x86**. The main configurations are as follows:
### Defining a Product<a name="section145mcpsimp"></a> product_name:The product name.Required
Create a JSON file named after the product name in the **//productdefine/common/products** directory. This file is used to describe the SoC used by the product and the required subsystems. Configure the file as follows: version:version.Required
//productdefine/common/products/MyProduct.json type:Configured at the system level, select from (mini, small, standard).Required
``` target_cpu :The CPU type of the device (depending on the actual situation, the target_cpu here may also be arm64, riscv, x86, etc..).Required
{
"product_name": "MyProduct",
"product_company" : "MyProductVendor",
"product_device": "MySOC",
"version": "2.0",
"type": "standard",
"parts":{
"ace:ace_engine_standard":{},
"ace:napi":{},
...
"xts:phone_tests":{}
}
}
``` ohos_version:Operating system version.Optional
The main configurations are as follows: device_company:device manufacturer name.Required
board:Board name.Required
enable_ramdisk:Whether to start ramdisk.Required
kernel_type and kernel_version: kernel_type with kernel_version is fixed in the standard and does not need to be written.Optional
subsystems:The subsystem that the system needs to be enabled. Subsystems can simply understand a piece of function that is built independently. Required
1. **product\_device**: SoC used by the product. product_company:Not reflected in the configuration, but in the directory name, the next directory of the vendor is product_company, build.gn script can still be accessed.
2. **type**: system level. In this example, set it to **standard**.
3. **parts**: subsystem to enable. A subsystem can be treated as an independently built functional block.
You can find available subsystems in **//build/subsystem\_config.json**. You can also customize subsystems. You can find available subsystems in **//build/subsystem\_config.json**. You can also customize subsystems.
...@@ -83,7 +92,7 @@ Add the following subsystem configuration to the **//build/subsystem\_config.js ...@@ -83,7 +92,7 @@ Add the following subsystem configuration to the **//build/subsystem\_config.js
}, },
``` ```
Then, open the configuration file **//productdefine/common/products/MyProduct.json**, which is used to define the product, and add the new subsystem to the product. Then, open the configuration file **//vendor/MyProductVendor/MyProduct/config.json**, which is used to define the product, and add the new subsystem to the product.
### 2. Building the Kernel<a name="section182mcpsimp"></a> ### 2. Building the Kernel<a name="section182mcpsimp"></a>
...@@ -277,7 +286,7 @@ For details about driver development, see [TOUCHSCREEN](../driver/driver-periph ...@@ -277,7 +286,7 @@ For details about driver development, see [TOUCHSCREEN](../driver/driver-periph
The WLAN driver is divided into two parts. One of the parts manages WLAN devices, and the other part manages WLAN traffic. HDF WLAN provides abstraction for the two parts. Currently, only the WLAN with the SDIO interface is supported. The WLAN driver is divided into two parts. One of the parts manages WLAN devices, and the other part manages WLAN traffic. HDF WLAN provides abstraction for the two parts. Currently, only the WLAN with the SDIO interface is supported.
**Figure 1** WLAN chip<a name="fig16997123013494"></a> **Figure 1** WLAN chip<a name="fig16997123013494"></a>
![](figure/wlan-chip.png "wlan-chip") ![](figures/wlan-chip.png "wlan-chip")
To support a chip, implement a **ChipDriver** for it. The major task is to implement the following interfaces provided by **HDF\_WLAN\_CORE** and **NetDevice**. To support a chip, implement a **ChipDriver** for it. The major task is to implement the following interfaces provided by **HDF\_WLAN\_CORE** and **NetDevice**.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- Getting Started with Mini and Small Systems (IDE Mode, Recommended) - Getting Started with Mini and Small Systems (IDE Mode, Recommended)
- [Mini and Small System Overview](quickstart-ide-lite-overview.md) - [Mini and Small System Overview](quickstart-ide-lite-overview.md)
- Environment Preparation - Environment Preparation
- [Setting Up the Windows+Ubuntu Hybrid Build Environment](quickstart-ide-lite-env-setup-win-ubuntu.md) - [Setting Up the Windows+Ubuntu Hybrid Development Environment](quickstart-ide-lite-env-setup-win-ubuntu.md)
- [Obtaining Source Code](quickstart-ide-lite-sourcecode-acquire.md) - [Obtaining Source Code](quickstart-ide-lite-sourcecode-acquire.md)
- [Creating a Source Code Project](quickstart-ide-lite-create-project.md) - [Creating a Source Code Project](quickstart-ide-lite-create-project.md)
- Running a Hello World Program - Running a Hello World Program
...@@ -19,8 +19,9 @@ ...@@ -19,8 +19,9 @@
- [Burning](quickstart-ide-lite-steps-hi3516-burn.md) - [Burning](quickstart-ide-lite-steps-hi3516-burn.md)
- [Running](quickstart-ide-lite-steps-hi3516-running.md) - [Running](quickstart-ide-lite-steps-hi3516-running.md)
- Appendix - Appendix
- [Introduction to the Hi3861 Development Board](quickstart-ide-lite-introduction-hi3861.md) - Introduction to Development Boards
- [Introduction to the Hi3516 Development Board](quickstart-ide-lite-introduction-hi3516.md) - [Introduction to the Hi3861 Development Board](quickstart-ide-lite-introduction-hi3861.md)
- [Introduction to the Hi3516 Development Board](quickstart-ide-lite-introduction-hi3516.md)
- Getting Started with Mini and Small Systems (Installation Package Mode) - Getting Started with Mini and Small Systems (Installation Package Mode)
- [Mini and Small System Overview](quickstart-lite-overview.md) - [Mini and Small System Overview](quickstart-lite-overview.md)
- [Environment Preparation](quickstart-lite-env-setup.md) - [Environment Preparation](quickstart-lite-env-setup.md)
...@@ -51,7 +52,7 @@ ...@@ -51,7 +52,7 @@
- Getting Started with Standard System (IDE Mode, Recommended) - Getting Started with Standard System (IDE Mode, Recommended)
- [Standard System Overview](quickstart-ide-standard-overview.md) - [Standard System Overview](quickstart-ide-standard-overview.md)
- Environment Preparation - Environment Preparation
- [Setting Up the Windows+Ubuntu Hybrid Build Environment](quickstart-ide-standard-env-setup-win-ubuntu.md) - [Setting Up the Windows+Ubuntu Hybrid Development Environment](quickstart-ide-standard-env-setup-win-ubuntu.md)
- [Obtaining Source Code](quickstart-ide-standard-sourcecode-acquire.md) - [Obtaining Source Code](quickstart-ide-standard-sourcecode-acquire.md)
- [Creating a Source Code Project](quickstart-ide-standard-create-project.md) - [Creating a Source Code Project](quickstart-ide-standard-create-project.md)
- Running a Hello World Program - Running a Hello World Program
...@@ -66,8 +67,9 @@ ...@@ -66,8 +67,9 @@
- [Burning](quickstart-ide-standard-running-rk3568-burning.md) - [Burning](quickstart-ide-standard-running-rk3568-burning.md)
- [Running](quickstart-ide-standard-running-rk3568-running.md) - [Running](quickstart-ide-standard-running-rk3568-running.md)
- Appendix - Appendix
- [Introduction to the Hi3516 Development Board](quickstart-ide-standard-board-introduction-hi3516.md) - Introduction to Development Boards
- [Introduction to the RK3568 Development Board](quickstart-ide-standard-board-introduction-rk3568.md) - [Introduction to the Hi3516 Development Board](quickstart-ide-standard-board-introduction-hi3516.md)
- [Introduction to the RK3568 Development Board](quickstart-ide-standard-board-introduction-rk3568.md)
- Getting Started with Standard System (Installation Package Mode) - Getting Started with Standard System (Installation Package Mode)
- [Standard System Overview](quickstart-standard-overview.md) - [Standard System Overview](quickstart-standard-overview.md)
- [Setting Up Environments for Standard System](quickstart-standard-env-setup.md) - [Setting Up Environments for Standard System](quickstart-standard-env-setup.md)
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
- **[Mini and Small System Overview](quickstart-lite-overview.md)** - **[Mini and Small System Overview](quickstart-lite-overview.md)**
- **[Environment Preparation](quickstart-lite-env-setup.md)** - **[Setting Up Environments for the Mini and Small Systems](quickstart-lite-env-setup.md)**
- **[Running a Hello World Program](quickstart-lite-steps.md)** - **[Running a Hello World Program](quickstart-lite-steps.md)**
......
...@@ -10,7 +10,7 @@ After [setting up the Windows+Ubuntu hybrid development environment](../quick-st ...@@ -10,7 +10,7 @@ After [setting up the Windows+Ubuntu hybrid development environment](../quick-st
2. Select the source code directory to be imported and click **Import**. 2. Select the source code directory to be imported and click **Import**.
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> Make sure the selected directory does not contain Chinese characters or spaces. Otherwise, the building may fail. > Make sure the selected directory does not contain Chinese characters or spaces. Otherwise, the building may fail.
![en-us_image_0000001271477045](figures/en-us_image_0000001271477045.png) ![en-us_image_0000001271477045](figures/en-us_image_0000001271477045.png)
......
# Setting Up the Windows+Ubuntu Hybrid Development Environment # Setting Up the Windows+Ubuntu Hybrid Development Environment
In embedded development, Windows-based tools, such as Visual Studio Code, are widely used in code editing. Yet, as the source code of most development boards, such as Hi3861 and Hi3516, cannot be built in Windows, these development boards require the Ubuntu build environment. In embedded development, Windows-based tools, such as Visual Studio Code, are widely used in code editing. Yet, as the source code of most development boards, such as Hi3861 and Hi3516, cannot be built in Windows, these development boards require the Ubuntu development environment.
In the Windows+Ubuntu hybrid build environment, you can enjoy the benefits of both DevEco Device Tool for Windows and DevEco Device Tool for Ubuntu (where Visual Studio Code is optional). In the Windows+Ubuntu hybrid development environment, you can enjoy the benefits of both DevEco Device Tool for Windows and DevEco Device Tool for Ubuntu (where Visual Studio Code is optional).
## System Requirements ## System Requirements
...@@ -18,9 +18,7 @@ In the Windows+Ubuntu hybrid build environment, you can enjoy the benefits of bo ...@@ -18,9 +18,7 @@ In the Windows+Ubuntu hybrid build environment, you can enjoy the benefits of bo
- DevEco Device Tool: 3.0 Release - DevEco Device Tool: 3.0 Release
## Setting Up the Ubuntu Build Environment ## Setting Up the Ubuntu Development Environment
The setup procedure varies, depending on whether you need a GUI. If you need a GUI, you need to install Visual Studio Code. In this case, follow the instructions in [Setting Up the Ubuntu Development Environment](https://device.harmonyos.com/en/docs/documentation/guide/ide-install-ubuntu-0000001072959308). If you do not need a GUI, perform the steps below:
1. Make sure the Ubuntu shell environment is **bash**. 1. Make sure the Ubuntu shell environment is **bash**.
1. Run the following command and check whether the command output is **bash**. If the command output is not **bash**, go to step 2. 1. Run the following command and check whether the command output is **bash**. If the command output is not **bash**, go to step 2.
...@@ -116,7 +114,7 @@ To remotely access the Ubuntu environment through Windows and enjoy the benefits ...@@ -116,7 +114,7 @@ To remotely access the Ubuntu environment through Windows and enjoy the benefits
![en-us_image_0000001225760456](figures/en-us_image_0000001225760456.png) ![en-us_image_0000001225760456](figures/en-us_image_0000001225760456.png)
## Configuring Windows to Remotely Access the Ubuntu Build Environment ## Configuring Windows to Remotely Access the Ubuntu Development Environment
### Installing the SSH Service and Obtaining the IP Address for Remote Access ### Installing the SSH Service and Obtaining the IP Address for Remote Access
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
- **[Setting Up the Windows+Ubuntu Hybrid Build Environment](quickstart-ide-lite-env-setup-win-ubuntu.md)** - **[Setting Up the Windows+Ubuntu Hybrid Development Environment](quickstart-ide-lite-env-setup-win-ubuntu.md)**
- **[Obtaining Source Code](quickstart-ide-lite-sourcecode-acquire.md)** - **[Obtaining Source Code](quickstart-ide-lite-sourcecode-acquire.md)**
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
Hi3516D V300 is a next-generation system on chip (SoC) designed for the industry-dedicated smart HD IP camera. It introduces a next-generation image signal processor (ISP), the H.265 video compression encoder, and a high-performance NNIE engine, leading the industry in terms of low bit rate, high image quality, intelligent processing and analysis, and low power consumption. Hi3516D V300 is a next-generation system on chip (SoC) designed for the industry-dedicated smart HD IP camera. It introduces a next-generation image signal processor (ISP), the H.265 video compression encoder, and a high-performance NNIE engine, leading the industry in terms of low bit rate, high image quality, intelligent processing and analysis, and low power consumption.
**Figure 1** Hi3516 front view **Figure 1** Hi3516 front view
![en-us_image_0000001271234717](figures/en-us_image_0000001271234717.png) ![en-us_image_0000001271234717](figures/en-us_image_0000001271234717.png)
## Development Board Specifications ## Development Board Specifications
**Table 1** Hi3516 specifications **Table 1** Hi3516 specifications
| Item| Description| | Item| Description|
| -------- | -------- | | -------- | -------- |
| Processor and internal memory| -&nbsp;Hi3516D V300 chip<br>-&nbsp;DDR3&nbsp;1GB<br>-&nbsp;eMMC 4.5, 8 GB capacity| | Processor and internal memory| -&nbsp;Hi3516D V300 chip<br>-&nbsp;DDR3&nbsp;1GB<br>-&nbsp;eMMC 4.5, 8 GB capacity|
| External components| -&nbsp;Ethernet port<br>-&nbsp;Audio and video<br>&nbsp;&nbsp;-&nbsp;1 voice input<br>&nbsp;&nbsp;-&nbsp;1 mono channel (AC_L) output, connected to a 3 W power amplifier (LM4871)<br>&nbsp;&nbsp;-&nbsp;MicroHDMI (1-channel HDMI 1.4)<br>-&nbsp;Camera<br>&nbsp;&nbsp;-&nbsp;Sensor IMX335<br>&nbsp;&nbsp;-&nbsp;M12 lens, 4 mm focal length, and 1.8 aperture<br>-&nbsp;Display<br>&nbsp;&nbsp;-&nbsp;LCD connector (2.35-inch)<br>&nbsp;&nbsp;-&nbsp;LCD connector (5.5-inch)<br>-&nbsp;External components and ports<br>&nbsp;&nbsp;-&nbsp;Memory card port<br>&nbsp;&nbsp;-&nbsp;JTAG/I2S port<br>&nbsp;&nbsp;-&nbsp;ADC port<br>&nbsp;&nbsp;-&nbsp;Steering gear port<br>&nbsp;&nbsp;-&nbsp;Grove connector<br>&nbsp;&nbsp;-&nbsp;USB 2.0 (Type-C)<br>&nbsp;&nbsp;-&nbsp;Three function keys, two user-defined keys, and one upgrade key<br>&nbsp;&nbsp;-&nbsp;LED indicator, green or red| | External components| -&nbsp;Ethernet port<br>-&nbsp;Audio and video<br>&nbsp;&nbsp;-&nbsp;1 voice input<br>&nbsp;&nbsp;-&nbsp;1 mono channel (AC_L) output, connected to a 3 W power amplifier (LM4871)<br>&nbsp;&nbsp;-&nbsp;MicroHDMI (1-channel HDMI 1.4)<br>-&nbsp;Camera<br>&nbsp;&nbsp;-&nbsp;Sensor IMX335<br>&nbsp;&nbsp;-&nbsp;M12 lens, 4 mm focal length, and 1.8 aperture<br>-&nbsp;Display<br>&nbsp;&nbsp;-&nbsp;LCD connector (2.35-inch)<br>&nbsp;&nbsp;-&nbsp;LCD connector (5.5-inch)<br>-&nbsp;External components and ports<br>&nbsp;&nbsp;-&nbsp;Memory card port<br>&nbsp;&nbsp;-&nbsp;JTAG/I2S port<br>&nbsp;&nbsp;-&nbsp;ADC port<br>&nbsp;&nbsp;-&nbsp;Steering gear port<br>&nbsp;&nbsp;-&nbsp;Grove connector<br>&nbsp;&nbsp;-&nbsp;USB 2.0 (Type-C)<br>&nbsp;&nbsp;-&nbsp;Three function keys, two user-defined keys, and one upgrade key<br>&nbsp;&nbsp;-&nbsp;LED indicator, green or red|
...@@ -5,14 +5,14 @@ ...@@ -5,14 +5,14 @@
Hi3861 is a 2 x 5 cm development board. It is a 2.4 GHz WLAN SoC chip that highly integrates the IEEE 802.11b/g/n baseband and radio frequency (RF) circuit. It supports OpenHarmony and provides an open and easy-to-use development and debugging environment. Hi3861 is a 2 x 5 cm development board. It is a 2.4 GHz WLAN SoC chip that highly integrates the IEEE 802.11b/g/n baseband and radio frequency (RF) circuit. It supports OpenHarmony and provides an open and easy-to-use development and debugging environment.
**Figure 1** Hi3861 development board **Figure 1** Hi3861 development board
![en-us_image_0000001226634692](figures/en-us_image_0000001226634692.png) ![en-us_image_0000001226634692](figures/en-us_image_0000001226634692.png)
The Hi3861 development board can also be connected to the Hi3861 mother board to expand its peripheral capabilities. The following figure shows the Hi3861 mother board. The Hi3861 development board can also be connected to the Hi3861 mother board to expand its peripheral capabilities. The following figure shows the Hi3861 mother board.
**Figure 2** Hi3861 mother board **Figure 2** Hi3861 mother board
![en-us_image_0000001226794660](figures/en-us_image_0000001226794660.png) ![en-us_image_0000001226794660](figures/en-us_image_0000001226794660.png)
- The RF circuit includes modules such as the power amplifier (PA), low noise amplifier (LNA), RF Balun, antenna switch, and power management. It supports a standard bandwidth of 20 MHz and a narrow bandwidth of 5 MHz or 10 MHz, and provides a maximum rate of 72.2 Mbit/s at the physical layer. - The RF circuit includes modules such as the power amplifier (PA), low noise amplifier (LNA), RF Balun, antenna switch, and power management. It supports a standard bandwidth of 20 MHz and a narrow bandwidth of 5 MHz or 10 MHz, and provides a maximum rate of 72.2 Mbit/s at the physical layer.
...@@ -35,34 +35,34 @@ The resources of the Hi3861 development board are limited. The entire board has ...@@ -35,34 +35,34 @@ The resources of the Hi3861 development board are limited. The entire board has
## Development Board Specifications ## Development Board Specifications
**Table 1** Hi3861 specifications **Table 1** Hi3861 specifications
| Item| Description| | Item| Description|
| -------- | -------- | | -------- | -------- |
| General specifications| -&nbsp;1 x 1 2.4 GHz frequency band (ch1–ch14)<br>-&nbsp;PHY supports IEEE 802.11b/g/n.<br>-&nbsp;MAC supports IEEE802.11d/e/h/i/k/v/w.<br>-&nbsp;Built-in PA and LNA; integrated TX/RX switch and Balun<br>-&nbsp;Support for STA and AP modes. When functioning as an AP, it supports a maximum of 6 STAs.<br>-&nbsp;Support for WFA WPA/WPA2 personal and WPS2.0.<br>-&nbsp;2/3/4-line PTA solution that coexists with BT/BLE chips.<br>-&nbsp;Input voltage range: 2.3 V to 3.6 V<br>-&nbsp;I/O power voltage: 1.8 V or 3.3 V.<br>-&nbsp;RF self-calibration<br>-&nbsp;Low power consumption:<br>&nbsp;&nbsp;-&nbsp;Ultra Deep Sleep mode: 5 μA@3.3 V<br>&nbsp;&nbsp;-&nbsp;DTIM1: 1.5 mA \@3.3V<br>&nbsp;&nbsp;-&nbsp;DTIM3: 0.8 mA \@3.3V| | General specifications| -&nbsp;1 x 1 2.4 GHz frequency band (ch1–ch14)<br>-&nbsp;PHY supports IEEE 802.11b/g/n.<br>-&nbsp;MAC supports IEEE802.11d/e/h/i/k/v/w.<br>-&nbsp;Built-in PA and LNA; integrated TX/RX switch and Balun<br>-&nbsp;Support for STA and AP modes. When functioning as an AP, it supports a maximum of 6 STAs.<br>-&nbsp;Support for WFA WPA/WPA2 personal and WPS2.0.<br>-&nbsp;2/3/4-line PTA solution that coexists with BT/BLE chips.<br>-&nbsp;Input voltage range: 2.3 V to 3.6 V<br>-&nbsp;I/O power voltage: 1.8 V or 3.3 V.<br>-&nbsp;RF self-calibration<br>-&nbsp;Low power consumption:<br>&nbsp;&nbsp;-&nbsp;Ultra Deep Sleep mode: 5 μA@3.3 V<br>&nbsp;&nbsp;-&nbsp;DTIM1: 1.5 mA \@3.3V<br>&nbsp;&nbsp;-&nbsp;DTIM3: 0.8 mA \@3.3V|
| PHY features| -&nbsp;Supports all data rates of the IEEE802.11b/g/n single antenna.<br>-&nbsp;Supported maximum rate: 72.2 Mbps\@HT20&nbsp;MCS7<br>-&nbsp;20 MHz standard bandwidth and 5 MHz/10 MHz narrow bandwidth.<br>-&nbsp; STBC.<br>-&nbsp;Short-GI.| | PHY features| -&nbsp;Supports all data rates of the IEEE802.11b/g/n single antenna.<br>-&nbsp;Supported maximum rate: 72.2 Mbps\@HT20&nbsp;MCS7<br>-&nbsp;20 MHz standard bandwidth and 5 MHz/10 MHz narrow bandwidth.<br>-&nbsp; STBC.<br>-&nbsp;Short-GI.|
| MAC features| -&nbsp;A-MPDU and A-MSDU.<br>-&nbsp;Blk-ACK.<br>-&nbsp;QoS to meet the quality requirements of different services.| | MAC features| -&nbsp;A-MPDU and A-MSDU.<br>-&nbsp;Blk-ACK.<br>-&nbsp;QoS to meet the quality requirements of different services.|
| CPU subsystem| - &nbsp;High-performance 32-bit microprocessor with a maximum working frequency of 160 MHz.<br>-&nbsp;Embedded SRAM of 352 KB; ROM of 288 KB<br>-&nbsp;Embedded 2 MB flash memory| | CPU subsystem| - &nbsp;High-performance 32-bit microprocessor with a maximum working frequency of 160 MHz.<br>-&nbsp;Embedded SRAM of 352 KB; ROM of 288 KB<br>-&nbsp;Embedded 2 MB flash memory|
| Peripheral ports| -&nbsp;One SDIO interface, two SPI interfaces, two I2C interfaces, three UART interfaces, 15 GPIO interfaces, seven ADC inputs, six PWM interfaces, and one I2S interface (Note: These interfaces are all multiplexed.)<br>-&nbsp;Frequency of the external main crystal: 40 MHz or 24 MHz| | Peripheral ports| -&nbsp;One SDIO interface, two SPI interfaces, two I2C interfaces, three UART interfaces, 15 GPIO interfaces, seven ADC inputs, six PWM interfaces, and one I2S interface (Note: These interfaces are all multiplexed.)<br>-&nbsp;Frequency of the external main crystal: 40 MHz or 24 MHz|
| Others| -&nbsp;Package: QFN-32, 5 mm x 5 mm<br>-&nbsp;Working temperature: -40°C to +85°C| | Others| -&nbsp;Package: QFN-32, 5 mm x 5 mm<br>-&nbsp;Working temperature: -40°C to +85°C|
## OpenHarmony Key Features ## OpenHarmony Key Features
OpenHarmony provides a wide array of available capabilities based on the Hi3861 platform. The following table describes the available key components. OpenHarmony provides a wide array of available capabilities based on the Hi3861 platform. The following table describes the available key components.
**Table 2** Key components of OpenHarmony **Table 2** Key components of OpenHarmony
| Component| Capability| | Component| Capability|
| -------- | -------- | | -------- | -------- |
| WLAN| Provides the WLAN service capability. For example, connecting to or disconnecting from a station or hotspot, and querying the status of a station or hotspot.| | WLAN| Provides the WLAN service capability. For example, connecting to or disconnecting from a station or hotspot, and querying the status of a station or hotspot.|
| IoT controller| Provides the capability of operating peripherals, including the I2C, I2S, ADC, UART, SPI, SDIO, GPIO, PWM and flash memory.| | IoT controller| Provides the capability of operating peripherals, including the I2C, I2S, ADC, UART, SPI, SDIO, GPIO, PWM and flash memory.|
| DSoftBus| Provides the capabilities of device discovery and data transmission in the distributed network.| | DSoftBus| Provides the capabilities of device discovery and data transmission in the distributed network.|
| hichainsdk| Provides the capability of securely transferring data between devices when they are interconnected.| | hichainsdk| Provides the capability of securely transferring data between devices when they are interconnected.|
| huks| Provides capabilities of key management, encryption, and decryption.| | huks| Provides capabilities of key management, encryption, and decryption.|
| System service management| Provides a unified OpenHarmony service development framework based on the service-oriented architecture.| | System service management| Provides a unified OpenHarmony service development framework based on the service-oriented architecture.|
| Boot| Provides the entry identifier for starting a system service. When the system service management is started, the function identified by bootstrap is called to start a system service.| | Boot| Provides the entry identifier for starting a system service. When the system service management is started, the function identified by bootstrap is called to start a system service.|
| System attribute| Provides capabilities of obtaining and setting system attributes.| | System attribute| Provides capabilities of obtaining and setting system attributes.|
| Base library| Provides the common basic library capability, including file operations and KV storage management.| | Base library| Provides the common basic library capability, including file operations and KV storage management.|
| DFX | Provides the DFX capability, such as logging and printing.| | DFX | Provides the DFX capability, such as logging and printing.|
| XTS | Provides a set of OpenHarmony certification test suites.| | XTS | Provides a set of OpenHarmony certification test suites.|
...@@ -6,15 +6,15 @@ Hi3516D V300 supports burning through the USB port, network port, and serial por ...@@ -6,15 +6,15 @@ Hi3516D V300 supports burning through the USB port, network port, and serial por
1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md). 1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md).
2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool. 3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool.
......
...@@ -6,7 +6,7 @@ Hi3861 V100 supports burning through the serial port. To burn source code throug ...@@ -6,7 +6,7 @@ Hi3861 V100 supports burning through the serial port. To burn source code throug
1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3861 V100 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3861.md). 1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3861 V100 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3861.md).
2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -14,7 +14,7 @@ Hi3861 V100 supports burning through the serial port. To burn source code throug ...@@ -14,7 +14,7 @@ Hi3861 V100 supports burning through the serial port. To burn source code throug
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool. 3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool.
......
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
Hi3516D V300 is a next-generation system on chip (SoC) designed for industry-dedicated smart HD IP cameras. It introduces a next-generation image signal processor (ISP), the H.265 video compression encoder, and a high-performance NNIE engine, leading the industry in terms of low bit rate, high image quality, intelligent processing and analysis, and low power consumption. Hi3516D V300 is a next-generation system on chip (SoC) designed for industry-dedicated smart HD IP cameras. It introduces a next-generation image signal processor (ISP), the H.265 video compression encoder, and a high-performance NNIE engine, leading the industry in terms of low bit rate, high image quality, intelligent processing and analysis, and low power consumption.
**Figure 1** Hi3516 front view **Figure 1** Hi3516 front view
![en-us_image_0000001227082182](figures/en-us_image_0000001227082182.png) ![en-us_image_0000001227082182](figures/en-us_image_0000001227082182.png)
## Development Board Specifications ## Development Board Specifications
**Table 1** Hi3516 specifications **Table 1** Hi3516 specifications
| Item| Description| | Item| Description|
| -------- | -------- | | -------- | -------- |
| Processor and internal memory| -&nbsp;Hi3516D V300 chip<br>-&nbsp;DDR3&nbsp;1GB<br>-&nbsp;eMMC 4.5, 8 GB capacity| | Processor and internal memory| -&nbsp;Hi3516D V300 chip<br>-&nbsp;DDR3&nbsp;1GB<br>-&nbsp;eMMC 4.5, 8 GB capacity|
| External components| -&nbsp;Ethernet port<br>-&nbsp;Audio and video<br>&nbsp;&nbsp;-&nbsp;1 voice input<br>&nbsp;&nbsp;-&nbsp;1 mono channel (AC_L) output, connected to a 3 W power amplifier (LM4871)<br>&nbsp;&nbsp;-&nbsp;MicroHDMI (1-channel HDMI 1.4)<br>-&nbsp;Camera<br>&nbsp;&nbsp;-&nbsp;Sensor IMX335<br>&nbsp;&nbsp;-&nbsp;M12 lens, 4 mm focal length, and 1.8 aperture<br>-&nbsp;Display<br>&nbsp;&nbsp;-&nbsp;LCD connector (2.35-inch)<br>&nbsp;&nbsp;-&nbsp;LCD connector (5.5-inch)<br>-&nbsp;External components and ports<br>&nbsp;&nbsp;-&nbsp;Memory card port<br>&nbsp;&nbsp;-&nbsp;JTAG/I2S port<br>&nbsp;&nbsp;-&nbsp;ADC port<br>&nbsp;&nbsp;-&nbsp;Steering gear port<br>&nbsp;&nbsp;-&nbsp;Grove connector<br>&nbsp;&nbsp;-&nbsp;USB 2.0 (Type-C)<br>&nbsp;&nbsp;-&nbsp;Three function keys, two user-defined keys, and one upgrade key<br>&nbsp;&nbsp;-&nbsp;LED indicator, green or red| | External components| -&nbsp;Ethernet port<br>-&nbsp;Audio and video<br>&nbsp;&nbsp;-&nbsp;1 voice input<br>&nbsp;&nbsp;-&nbsp;1 mono channel (AC_L) output, connected to a 3 W power amplifier (LM4871)<br>&nbsp;&nbsp;-&nbsp;MicroHDMI (1-channel HDMI 1.4)<br>-&nbsp;Camera<br>&nbsp;&nbsp;-&nbsp;Sensor IMX335<br>&nbsp;&nbsp;-&nbsp;M12 lens, 4 mm focal length, and 1.8 aperture<br>-&nbsp;Display<br>&nbsp;&nbsp;-&nbsp;LCD connector (2.35-inch)<br>&nbsp;&nbsp;-&nbsp;LCD connector (5.5-inch)<br>-&nbsp;External components and ports<br>&nbsp;&nbsp;-&nbsp;Memory card port<br>&nbsp;&nbsp;-&nbsp;JTAG/I2S port<br>&nbsp;&nbsp;-&nbsp;ADC port<br>&nbsp;&nbsp;-&nbsp;Steering gear port<br>&nbsp;&nbsp;-&nbsp;Grove connector<br>&nbsp;&nbsp;-&nbsp;USB 2.0 (Type-C)<br>&nbsp;&nbsp;-&nbsp;Three function keys, two user-defined keys, and one upgrade key<br>&nbsp;&nbsp;-&nbsp;LED indicator, green or red|
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
Bolstered by the Rockchip RK3568 chip, the RK3568 development board integrates a dual-core GPU and high-efficiency NPU. Its quad-core 64-bit Cortex-A55 processor uses the advanced 22 nm manufacturing process and is clocked at up to 2.0 GHz. The development board is packed with Bluetooth, Wi-Fi, audio, video, and camera features, with a wide range of expansion ports as well as video input and output ports. It comes with dual GE auto-sensing RJ45 ports, so it can be used in multi-connectivity products, such as NVRs and industrial gateways. Bolstered by the Rockchip RK3568 chip, the RK3568 development board integrates a dual-core GPU and high-efficiency NPU. Its quad-core 64-bit Cortex-A55 processor uses the advanced 22 nm manufacturing process and is clocked at up to 2.0 GHz. The development board is packed with Bluetooth, Wi-Fi, audio, video, and camera features, with a wide range of expansion ports as well as video input and output ports. It comes with dual GE auto-sensing RJ45 ports, so it can be used in multi-connectivity products, such as NVRs and industrial gateways.
**Figure 1** Front view of the RK3568 development board **Figure 1** Front view of the RK3568 development board
![en-us_image_0000001271442261](figures/en-us_image_0000001271442261.png) ![en-us_image_0000001271442261](figures/en-us_image_0000001271442261.png)
......
...@@ -10,7 +10,7 @@ After [setting up the Windows+Ubuntu hybrid development environment](../quick-st ...@@ -10,7 +10,7 @@ After [setting up the Windows+Ubuntu hybrid development environment](../quick-st
2. Select the source code directory to be imported and click **Import**. 2. Select the source code directory to be imported and click **Import**.
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> Make sure the selected directory does not contain Chinese characters or spaces. Otherwise, the building may fail. > Make sure the selected directory does not contain Chinese characters or spaces. Otherwise, the building may fail.
![en-us_image_0000001271562277](figures/en-us_image_0000001271562277.png) ![en-us_image_0000001271562277](figures/en-us_image_0000001271562277.png)
...@@ -25,7 +25,7 @@ After [setting up the Windows+Ubuntu hybrid development environment](../quick-st ...@@ -25,7 +25,7 @@ After [setting up the Windows+Ubuntu hybrid development environment](../quick-st
5. On the **Import Project** page, select a product, and the MCU, board, company, and kernel fields will be automatically populated. Then, select the OpenHarmony source code version for **ohosVersion**. The following figure uses **Hi3516DV300** as an example. 5. On the **Import Project** page, select a product, and the MCU, board, company, and kernel fields will be automatically populated. Then, select the OpenHarmony source code version for **ohosVersion**. The following figure uses **Hi3516DV300** as an example.
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> - Set **Product** to **Hi3516DV300** for the Hi3516D V300 development board. > - Set **Product** to **Hi3516DV300** for the Hi3516D V300 development board.
> >
> - Set **Product** to **rk3568** for the RK3568 development board. > - Set **Product** to **rk3568** for the RK3568 development board.
......
# Setting Up the Windows+Ubuntu Hybrid Development Environment # Setting Up the Windows+Ubuntu Hybrid Development Environment
In embedded development, Windows-based tools, such as Visual Studio Code, are widely used in code editing. Yet, as the source code of most development boards, such as Hi3861 and Hi3516, cannot be built in Windows, these development boards require the Ubuntu build environment. In embedded development, Windows-based tools, such as Visual Studio Code, are widely used in code editing. Yet, as the source code of most development boards, such as Hi3861 and Hi3516, cannot be built in Windows, these development boards require the Ubuntu development environment.
In the Windows+Ubuntu hybrid build environment, you can enjoy the benefits of both DevEco Device Tool for Windows and DevEco Device Tool for Ubuntu (where Visual Studio Code is optional). In the Windows+Ubuntu hybrid development environment, you can enjoy the benefits of both DevEco Device Tool for Windows and DevEco Device Tool for Ubuntu (where Visual Studio Code is optional).
## System Requirements ## System Requirements
...@@ -18,9 +18,7 @@ In the Windows+Ubuntu hybrid build environment, you can enjoy the benefits of bo ...@@ -18,9 +18,7 @@ In the Windows+Ubuntu hybrid build environment, you can enjoy the benefits of bo
- DevEco Device Tool: 3.0 Release - DevEco Device Tool: 3.0 Release
## Setting Up the Ubuntu Build Environment ## Setting Up the Ubuntu Development Environment
The setup procedure varies, depending on whether you need a GUI. If you need a GUI, you need to install Visual Studio Code. In this case, follow the instructions in [Setting Up the Ubuntu Development Environment](https://device.harmonyos.com/en/docs/documentation/guide/ide-install-ubuntu-0000001072959308). If you do not need a GUI, perform the steps below:
1. Make sure the Ubuntu shell environment is **bash**. 1. Make sure the Ubuntu shell environment is **bash**.
...@@ -116,7 +114,7 @@ To remotely access the Ubuntu environment through Windows and enjoy the benefits ...@@ -116,7 +114,7 @@ To remotely access the Ubuntu environment through Windows and enjoy the benefits
![en-us_image_0000001225760456](figures/en-us_image_0000001225760456.png) ![en-us_image_0000001225760456](figures/en-us_image_0000001225760456.png)
## Configuring Windows to Remotely Access the Ubuntu Build Environment ## Configuring Windows to Remotely Access the Ubuntu Development Environment
### Installing the SSH Service and Obtaining the IP Address for Remote Access ### Installing the SSH Service and Obtaining the IP Address for Remote Access
......
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
- **[Setting Up the Windows+Ubuntu Hybrid Build Environment](quickstart-ide-standard-env-setup-win-ubuntu.md)** - **[Setting Up the Windows+Ubuntu Hybrid Development Environment](quickstart-ide-standard-env-setup-win-ubuntu.md)**
- **[Obtaining Source Code](quickstart-ide-standard-sourcecode-acquire.md)** - **[Obtaining Source Code](quickstart-ide-standard-sourcecode-acquire.md)**
...@@ -12,7 +12,7 @@ To accommodate different developer habits, OpenHarmony provides two modes for ge ...@@ -12,7 +12,7 @@ To accommodate different developer habits, OpenHarmony provides two modes for ge
- Installation package mode: Dependency download and installation as well as building operations are performed using commands. Burning and running are performed in DevEco Device Tool. - Installation package mode: Dependency download and installation as well as building operations are performed using commands. Burning and running are performed in DevEco Device Tool.
OpenHarmony also provides the [Docker environment](../get-code/gettools-acquire.md), which can significantly simplify the environment configuration before compilation. You can build your source code in the Docker environment if you are more accustomed to using the installation package mode. OpenHarmony also provides the [Docker environment](../get-code/gettools-acquire.md), which can significantly simplify the environment configuration before compilation. You can build your source code in the Docker environment if you are more accustomed to using the installation package mode.
This document exemplifies how to use the IDE mode. For details about the installation package mode, see [Getting Started with Standard System (Installation Package Mode)](../quick-start/quickstart-standard-overview.md). This document exemplifies how to use the IDE mode. For details about the installation package mode, see [Getting Started with Standard System (Installation Package Mode)](../quick-start/quickstart-standard-package-directory.md).
## Development Environment ## Development Environment
...@@ -28,7 +28,7 @@ This document describes how to develop OpenHarmony in the Windows+Ubuntu environ ...@@ -28,7 +28,7 @@ This document describes how to develop OpenHarmony in the Windows+Ubuntu environ
## Development Boards ## Development Boards
In this document, two development board models are used as examples: Hi3516D V300 and RK3568. For details about these development boards, see [Appendix](../quick-start/quickstart-ide-standard-board-introduction-hi3516.md). You can purchase the development board as required. In this document, two development board models are used as examples: Hi3516D V300 and RK3568. For details about these development boards, see [Appendix](../quick-start/quickstart-standard-board-introduction.md). You can purchase the development board as required.
## Development Process ## Development Process
......
...@@ -6,7 +6,7 @@ To burn source code to Hi3516D V300 through the USB port in Windows, perform the ...@@ -6,7 +6,7 @@ To burn source code to Hi3516D V300 through the USB port in Windows, perform the
1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md). 1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md).
2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -14,7 +14,7 @@ To burn source code to Hi3516D V300 through the USB port in Windows, perform the ...@@ -14,7 +14,7 @@ To burn source code to Hi3516D V300 through the USB port in Windows, perform the
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool. 3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool.
......
...@@ -19,9 +19,9 @@ applications/sample/hello ...@@ -19,9 +19,9 @@ applications/sample/hello
├── bundle.json ├── bundle.json
build build
└── subsystem_config.json └── subsystem_config.json
productdefine/common vendor/hisilicon
└── products └── Hi3516DV300
└── Hi3516DV300.json └── config.json
``` ```
...@@ -151,7 +151,7 @@ Perform the steps below in the source code directory: ...@@ -151,7 +151,7 @@ Perform the steps below in the source code directory:
4. Modify the product configuration file. 4. Modify the product configuration file.
In the productdefine\common\products\Hi3516DV300.json file, add the hello part after the existing part. In the vendor\hisilicon\Hi3516DV300\config.json file, add the hello part after the existing part.
``` ```
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
After the burning is complete, perform the following steps to start the system: After the burning is complete, perform the following steps to start the system:
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> This operation procedure is required only if this is the first time you burn an image for the standard system. > This operation procedure is required only if this is the first time you burn an image for the standard system.
1. In DevEco Device Tool, click **Monitor** to open the serial port tool. 1. In DevEco Device Tool, click **Monitor** to open the serial port tool.
...@@ -17,12 +17,12 @@ After the burning is complete, perform the following steps to start the system: ...@@ -17,12 +17,12 @@ After the burning is complete, perform the following steps to start the system:
![en-us_image_0000001271202289](figures/en-us_image_0000001271202289.gif) ![en-us_image_0000001271202289](figures/en-us_image_0000001271202289.gif)
3. Run the following commands to set system boot parameters: 3. Run the following commands to set system boot parameters:
``` ```
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 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' setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000'
``` ```
...@@ -30,7 +30,7 @@ After the burning is complete, perform the following steps to start the system: ...@@ -30,7 +30,7 @@ After the burning is complete, perform the following steps to start the system:
![en-us_image_0000001271562269](figures/en-us_image_0000001271562269.png) ![en-us_image_0000001271562269](figures/en-us_image_0000001271562269.png)
4. Save the parameter settings. 4. Save the parameter settings.
``` ```
save save
``` ```
...@@ -38,7 +38,7 @@ After the burning is complete, perform the following steps to start the system: ...@@ -38,7 +38,7 @@ After the burning is complete, perform the following steps to start the system:
![en-us_image_0000001226762210](figures/en-us_image_0000001226762210.png) ![en-us_image_0000001226762210](figures/en-us_image_0000001226762210.png)
5. Restart the development board to start the system. 5. Restart the development board to start the system.
``` ```
reset reset
``` ```
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
2. Connect the computer to the target development board through the USB port. 2. Connect the computer to the target development board through the USB port.
3. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 3. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br> > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br>
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
4. In DevEco Device Tool, choose QUICK ACCESS > DevEco Home > Projects, and then click Settings. 4. In DevEco Device Tool, choose QUICK ACCESS > DevEco Home > Projects, and then click Settings.
......
...@@ -19,9 +19,9 @@ applications/sample/hello ...@@ -19,9 +19,9 @@ applications/sample/hello
├── bundle.json ├── bundle.json
build build
└── subsystem_config.json └── subsystem_config.json
productdefine/common vendor/hihope
└── products └── rk3568
└── rk3568.json └── config.json
``` ```
...@@ -150,7 +150,7 @@ Perform the steps below in the source code directory: ...@@ -150,7 +150,7 @@ Perform the steps below in the source code directory:
4. Modify the product configuration file. 4. Modify the product configuration file.
In the productdefine\common\products\rk3568.json file, add the hello part after the existing part. In the vendor\hihope\rk3568\config.json file, add the hello part after the existing part.
``` ```
"usb:usb_manager_native":{}, "usb:usb_manager_native":{},
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
After the image is burnt and the development board is restarted, the system automatically starts. If the following page is displayed on the screen of the development board, the system is running properly. After the image is burnt and the development board is restarted, the system automatically starts. If the following page is displayed on the screen of the development board, the system is running properly.
**Figure 1** System startup effect **Figure 1** System startup effect
![en-us_image_0000001226762222](figures/en-us_image_0000001226762222.jpg) ![en-us_image_0000001226762222](figures/en-us_image_0000001226762222.jpg)
......
...@@ -19,13 +19,13 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony ...@@ -19,13 +19,13 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony
``` ```
Run the following command to install the tools: Run the following command to install the tools:
``` ```
sudo apt-get install git git-lfs sudo apt-get install git git-lfs
``` ```
4. Configure user information. 4. Configure user information.
``` ```
git config --global user.name "yourname" git config --global user.name "yourname"
git config --global user.email "your-email-address" git config --global user.email "your-email-address"
...@@ -33,7 +33,7 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony ...@@ -33,7 +33,7 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony
``` ```
5. Run the following commands to install the **repo** tool: 5. Run the following commands to install the **repo** tool:
``` ```
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo # If you do not have the access permission to this directory, download the tool to any other accessible directory and configure the directory to the environment variable. curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo # If you do not have the access permission to this directory, download the tool to any other accessible directory and configure the directory to the environment variable.
chmod a+x /usr/local/bin/repo chmod a+x /usr/local/bin/repo
...@@ -43,7 +43,7 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony ...@@ -43,7 +43,7 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony
## Obtaining Source Code ## Obtaining Source Code
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> Download the master code if you want to get quick access to the latest features for your development. Download the release code, which is more stable, if you want to develop commercial functionalities. > Download the master code if you want to get quick access to the latest features for your development. Download the release code, which is more stable, if you want to develop commercial functionalities.
- **Obtaining OpenHarmony master code** - **Obtaining OpenHarmony master code**
...@@ -58,7 +58,7 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony ...@@ -58,7 +58,7 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony
Method 2: Use the **repo** tool to download the source code over HTTPS. Method 2: Use the **repo** tool to download the source code over HTTPS.
``` ```
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c repo sync -c
...@@ -72,8 +72,8 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony ...@@ -72,8 +72,8 @@ In the Ubuntu environment, perform the following steps to obtain the OpenHarmony
## Running prebuilts ## Running prebuilts
Go to the root directory of the source code and run the following script to install the compiler and binary tool: Go to the root directory of the source code and run the following script to install the compiler and binary tool:
``` ```
bash build/prebuilts_download.sh bash build/prebuilts_download.sh
``` ```
...@@ -148,7 +148,7 @@ To remotely access the Ubuntu environment through Windows to perform operations ...@@ -148,7 +148,7 @@ To remotely access the Ubuntu environment through Windows to perform operations
![en-us_image_0000001198722374](figures/en-us_image_0000001198722374.png) ![en-us_image_0000001198722374](figures/en-us_image_0000001198722374.png)
## Configuring Windows to Remotely Access the Ubuntu Build Environment ## Configuring Windows to Remotely Access the Ubuntu Development Environment
### Installing the SSH Service and Obtaining the IP Address for Remote Access ### Installing the SSH Service and Obtaining the IP Address for Remote Access
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
Error: Opening COMxx: Access denied is displayed after clicking Burn and selecting a serial port. Error: Opening COMxx: Access denied is displayed after clicking Burn and selecting a serial port.
**Figure 1** Failed to open the serial port **Figure 1** Failed to open the serial port
![en-us_image_0000001226634728](figures/en-us_image_0000001226634728.png) ![en-us_image_0000001226634728](figures/en-us_image_0000001226634728.png)
- **Possible Causes** - **Possible Causes**
...@@ -42,9 +42,9 @@ ...@@ -42,9 +42,9 @@
The file image cannot be obtained after clicking Burn and selecting a serial port. The file image cannot be obtained after clicking Burn and selecting a serial port.
**Figure 5** Failed to obtain the file image due to network disconnection **Figure 5** Failed to obtain the file image due to network disconnection
![en-us_image_0000001271234757](figures/en-us_image_0000001271234757.png) ![en-us_image_0000001271234757](figures/en-us_image_0000001271234757.png)
- **Possible Causes** - **Possible Causes**
...@@ -125,12 +125,15 @@ ...@@ -125,12 +125,15 @@
1. Obtain the U-Boot file. 1. Obtain the U-Boot file.
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **NOTICE** > ![icon-notice.gif](public_sys-resources/icon-notice.gif) **NOTICE**
> > The U-Boot file of the two boards can be obtained from the following paths, respectively.
> The U-Boot file can be obtained from the following path: device\hisilicon\hispark_taurus\sdk_liteos\uboot\out\boot\u-boot-hi3516dv300.bin. >
> Hi3516D V300: device\hisilicon\hispark_taurus\sdk_liteos\uboot\out\boot\u-boot-hi3516dv300.bin
>
> Hi3518E V300: device\hisilicon\hispark_aries\sdk_liteos\uboot\out\boot\u-boot-hi3518ev300.bin
2. Burn the U-Boot file by following the procedures for burning a U-Boot file over USB. 2. Burn the U-Boot file by following the procedures for burning a U-Boot file over USB.
Select the U-Boot files of corresponding development boards for burning by referring to [Burning to Hi3516D V300](https://device.harmonyos.com/en/docs/documentation/guide/ide-hi3516-upload-0000001052148681). Select the U-Boot files of corresponding development boards for burning by referring to [Burning to Hi3516D V300](https://device.harmonyos.com/en/docs/documentation/guide/ide-hi3516-upload-0000001052148681)/[Burning to Hi3518E V300](https://device.harmonyos.com/en/docs/documentation/guide/ide-hi3518-upload-0000001057313128#section93591711580).
3. Log in to the serial port after the burning is complete. 3. Log in to the serial port after the burning is complete.
......
## Getting Started with Mini and Small Systems (IDE Mode) ## Getting Started with Mini and Small Systems (IDE Mode)
- [Mini and Small System Overview](quickstart-ide-lite-overview.md) - [Mini and Small System Overview](quickstart-ide-lite-overview.md)
- Environment Preparation - Setting Up Environments for the Mini and Small Systems
- [Setting Up the Windows+Ubuntu Hybrid Build Environment](quickstart-ide-lite-env-setup-win-ubuntu.md) - [Setting Up the Windows+Ubuntu Hybrid Development Environment](quickstart-ide-lite-env-setup-win-ubuntu.md)
- [Obtaining Source Code](quickstart-ide-lite-sourcecode-acquire.md) - [Obtaining Source Code](quickstart-ide-lite-sourcecode-acquire.md)
- [Creating a Source Code Project](quickstart-ide-lite-create-project.md) - [Creating a Source Code Project](quickstart-ide-lite-create-project.md)
- Running a Hello World Program - Running a Hello World Program
......
## Getting Started with Mini and Small Systems (Installation Package Mode) ## Getting Started with Mini and Small Systems (Installation Package Mode)
- [Mini and Small System Overview](quickstart-lite-overview.md) - [Mini and Small System Overview](quickstart-lite-overview.md)
- [Environment Preparation](quickstart-lite-env-setup.md) - [Setting Up Environments for the Mini and Small Systems](quickstart-lite-env-setup.md)
- Running a Hello World Program - Running a Hello World Program
- Hi3861 Development Board - Hi3861 Development Board
- [Setting Up the Hi3861 Development Board Environment](quickstart-lite-steps-hi3861-setting.md) - [Setting Up the Hi3861 Development Board Environment](quickstart-lite-steps-hi3861-setting.md)
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
``` ```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> _name_ indicates the product name, for example, **Hi3516D V300** and **rk3568**. > _name_ indicates the product name, for example, **hispark_taurus_standard** and **rk3568**.
2. Check the build result. After the build is complete, the following information is displayed in the log: 2. Check the build result. After the build is complete, the following information is displayed in the log:
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
``` ```
Files generated during the build are stored in the **out/{device_name}/** directory, and the generated image is stored in the **out/{device_name}/packages/phone/images/** directory. Files generated during the build are stored in the **out/{device_name}/** directory, and the generated image is stored in the **out/{device_name}/packages/phone/images/** directory.
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
> For details about other modular compilation operations, see [Building a Standard System](../subsystems/subsys-build-standard-large.md). > For details about other modular compilation operations, see [Building a Standard System](../subsystems/subsys-build-standard-large.md).
......
...@@ -40,7 +40,7 @@ After the source code is imported, perform the following steps: ...@@ -40,7 +40,7 @@ After the source code is imported, perform the following steps:
1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md). 1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md).
2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -48,7 +48,7 @@ After the source code is imported, perform the following steps: ...@@ -48,7 +48,7 @@ After the source code is imported, perform the following steps:
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool. 3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool.
......
...@@ -40,7 +40,7 @@ After the source code is imported, perform the following steps: ...@@ -40,7 +40,7 @@ After the source code is imported, perform the following steps:
1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3861 V100 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3861.md). 1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3861 V100 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3861.md).
2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -48,7 +48,7 @@ After the source code is imported, perform the following steps: ...@@ -48,7 +48,7 @@ After the source code is imported, perform the following steps:
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool. 3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool.
......
...@@ -140,7 +140,7 @@ To remotely access the Ubuntu environment through Windows to perform operations ...@@ -140,7 +140,7 @@ To remotely access the Ubuntu environment through Windows to perform operations
![en-us_image_0000001198722374](figures/en-us_image_0000001198722374.png) ![en-us_image_0000001198722374](figures/en-us_image_0000001198722374.png)
## Configuring Windows to Remotely Access the Ubuntu Build Environment ## Configuring Windows to Remotely Access the Ubuntu Development Environment
### Installing the SSH Service and Obtaining the IP Address for Remote Access ### Installing the SSH Service and Obtaining the IP Address for Remote Access
......
...@@ -4,15 +4,18 @@ ...@@ -4,15 +4,18 @@
## What should I do if garbled characters and segmentation faults occur during hb installation? ## What should I do if garbled characters and segmentation faults occur during hb installation?
- **Symptom** - **Symptom**
Garbled characters and segmentation faults occur during the execution of the **python3 -m pip install --user ohos-build** command.
Garbled characters and segmentation faults occur during the execution of the **python3 -m pip install --user ohos-build** command.
- **Possible Causes** - **Possible Causes**
pip is of an early version.
pip is of an early version.
- **Solution** - **Solution**
Upgrade pip.
Upgrade pip.
``` ```
python3 -m pip install -U pip python3 -m pip install -U pip
``` ```
...@@ -21,15 +24,18 @@ ...@@ -21,15 +24,18 @@
## What should I do if the message "cannot import 'sysconfig' from 'distutils'" is displayed during hb installation? ## What should I do if the message "cannot import 'sysconfig' from 'distutils'" is displayed during hb installation?
- **Symptom** - **Symptom**
The message "cannot import 'sysconfig' from 'distutils'" is displayed during the execution of the **python3 -m pip install --user ohos-build** command.
The message "cannot import 'sysconfig' from 'distutils'" is displayed during the execution of the **python3 -m pip install --user ohos-build** command.
- **Possible Causes** - **Possible Causes**
The **distutils** module is unavailable.
The **distutils** module is unavailable.
- **Solution** - **Solution**
Install distutils.
Install distutils.
``` ```
sudo apt-get install python3.8-distutils sudo apt-get install python3.8-distutils
``` ```
...@@ -38,15 +44,18 @@ ...@@ -38,15 +44,18 @@
## What should I do if the message "module 'platform' has no attribute 'linux_distribution'" is displayed during hb installation? ## What should I do if the message "module 'platform' has no attribute 'linux_distribution'" is displayed during hb installation?
- **Symptom** - **Symptom**
The message "module 'platform' has no attribute 'linux_distribution'" is displayed during the execution of the **python3 -m pip install --user ohos-build** command.
The message "module 'platform' has no attribute 'linux_distribution'" is displayed during the execution of the **python3 -m pip install --user ohos-build** command.
- **Possible Causes** - **Possible Causes**
There is a compatibility issue of python3-pip.
There is a compatibility issue of python3-pip.
- **Solution** - **Solution**
Reinstall pip.
Reinstall pip.
``` ```
sudo apt remove python3-pip sudo apt remove python3-pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
...@@ -57,15 +66,18 @@ ...@@ -57,15 +66,18 @@
## What should I do if the message "Could not find a version that satisfies the requirement ohos-build" is displayed during hb installation? ## What should I do if the message "Could not find a version that satisfies the requirement ohos-build" is displayed during hb installation?
- **Symptom** - **Symptom**
The message "Could not find a version that satisfies the requirement ohos-build" is displayed during the execution of the **python3 -m pip install --user ohos-build** command.
The message "Could not find a version that satisfies the requirement ohos-build" is displayed during the execution of the **python3 -m pip install --user ohos-build** command.
- **Possible Causes** - **Possible Causes**
The installation fails due to poor network connectivity.
The installation fails due to poor network connectivity.
- **Solution** - **Solution**
1. Ensure that your computer has a good network connection. If the network connection is unstable, rectify the network fault and reinstall hb. 1. Ensure that your computer has a good network connection. If the network connection is unstable, rectify the network fault and reinstall hb.
2. If the network is functional, run the following commands to install hb by specifying a temporary PyPI source: 2. If the network is functional, run the following commands to install hb by specifying a temporary PyPI source:
``` ```
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ohos-build python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ohos-build
``` ```
## Getting Started with Standard System (IDE Mode) ## Getting Started with Standard System (IDE Mode)
- [Standard System Overview](quickstart-ide-standard-overview.md) - [Standard System Overview](quickstart-ide-standard-overview.md)
- Environment Preparation - Environment Preparation
- [Setting Up the Windows+Ubuntu Hybrid Build Environment](quickstart-ide-standard-env-setup-win-ubuntu.md) - [Setting Up the Windows+Ubuntu Hybrid Development Environment](quickstart-ide-standard-env-setup-win-ubuntu.md)
- [Obtaining Source Code](quickstart-ide-standard-sourcecode-acquire.md) - [Obtaining Source Code](quickstart-ide-standard-sourcecode-acquire.md)
- [Creating a Source Code Project](quickstart-ide-standard-create-project.md) - [Creating a Source Code Project](quickstart-ide-standard-create-project.md)
- Running a Hello World Program - Running a Hello World Program
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
``` ```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> _name_ indicates the product name, for example, **Hi3516D V300** and **rk3568**. > _name_ indicates the product name, for example, **hispark_taurus_standard** and **rk3568**.
2. Check the build result. After the build is complete, the following information is displayed in the log: 2. Check the build result. After the build is complete, the following information is displayed in the log:
......
...@@ -45,4 +45,4 @@ Go to the root directory of the source code in the Ubuntu environment and perfor ...@@ -45,4 +45,4 @@ Go to the root directory of the source code in the Ubuntu environment and perfor
5. Check the build result. If "build success" is displayed, the building is successful. 5. Check the build result. If "build success" is displayed, the building is successful.
> ![icon-notice.gif](public_sys-resources/icon-notice.gif) **NOTICE** > ![icon-notice.gif](public_sys-resources/icon-notice.gif) **NOTICE**
> The build result and log files are stored in **out/hi3516dv300**. > The build result and log files are stored in **out/hispark_taurus**.
...@@ -40,7 +40,7 @@ After the source code is imported, perform the following steps: ...@@ -40,7 +40,7 @@ After the source code is imported, perform the following steps:
1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md). 1. Connect the computer and the target development board through the serial port and USB port. For details, see [Introduction to the Hi3516D V300 Development Board](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md).
2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 2. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. In this case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -48,7 +48,7 @@ After the source code is imported, perform the following steps: ...@@ -48,7 +48,7 @@ After the source code is imported, perform the following steps:
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool. 3. Check the serial port number in **QUICK ACCESS** > **DevEco Home** > **Device** in DevEco Device Tool.
......
...@@ -8,7 +8,7 @@ The following exemplifies how to run the first program on the development board. ...@@ -8,7 +8,7 @@ The following exemplifies how to run the first program on the development board.
The complete code directory is as follows: The complete code directory is as follows:
``` ```
applications/sample/hello applications/sample/hello
│ │── BUILD.gn │ │── BUILD.gn
...@@ -19,9 +19,9 @@ applications/sample/hello ...@@ -19,9 +19,9 @@ applications/sample/hello
│ └── bundle.json │ └── bundle.json
build build
└── subsystem_config.json └── subsystem_config.json
productdefine/common vendor/hisilicon
└── products └── Hi3516DV300
└── Hi3516DV300.json └── config.json
``` ```
...@@ -34,7 +34,7 @@ Perform the steps below in the source code directory: ...@@ -34,7 +34,7 @@ Perform the steps below in the source code directory:
Create the **applications/sample/hello/src/helloworld.c** directory and file whose code is shown in the following example. You can customize the content to be printed. For example, you can change **World** to **OH**. Declare the string printing function **HelloPrint** in the **helloworld.h** file. You can use either C or C++ to develop a program. Create the **applications/sample/hello/src/helloworld.c** directory and file whose code is shown in the following example. You can customize the content to be printed. For example, you can change **World** to **OH**. Declare the string printing function **HelloPrint** in the **helloworld.h** file. You can use either C or C++ to develop a program.
``` ```
#include <stdio.h> #include <stdio.h>
#include "helloworld.h" #include "helloworld.h"
...@@ -55,7 +55,7 @@ Perform the steps below in the source code directory: ...@@ -55,7 +55,7 @@ Perform the steps below in the source code directory:
Add the header file **applications/sample/hello/include/helloworld.h**. The sample code is as follows: Add the header file **applications/sample/hello/include/helloworld.h**. The sample code is as follows:
``` ```
#ifndef HELLOWORLD_H #ifndef HELLOWORLD_H
#define HELLOWORLD_H #define HELLOWORLD_H
...@@ -78,7 +78,7 @@ Perform the steps below in the source code directory: ...@@ -78,7 +78,7 @@ Perform the steps below in the source code directory:
2. Create a build file. 2. Create a build file.
1. Create the **applications/sample/hello/BUILD.gn** file. The file content is as follows: 1. Create the **applications/sample/hello/BUILD.gn** file. The file content is as follows:
``` ```
import("//build/ohos.gni") # Import the build template. import("//build/ohos.gni") # Import the build template.
ohos_executable("helloworld") {# Executable module. ohos_executable("helloworld") {# Executable module.
...@@ -99,7 +99,7 @@ Perform the steps below in the source code directory: ...@@ -99,7 +99,7 @@ Perform the steps below in the source code directory:
} }
``` ```
2. Create the **applications/sample/hello/bundle.json** file and add the description of the **sample** component. The content is as follows: 2. Create the **applications/sample/hello/bundle.json** file and add the description of the **sample** component. The content is as follows:
``` ```
{ {
"name": "@ohos/hello", "name": "@ohos/hello",
...@@ -141,7 +141,7 @@ Perform the steps below in the source code directory: ...@@ -141,7 +141,7 @@ Perform the steps below in the source code directory:
Add the configuration of the new subsystem to the **build/subsystem_config.json** file. Add the configuration of the new subsystem to the **build/subsystem_config.json** file.
``` ```
"sample": { "sample": {
"path": "applications/sample/hello", "path": "applications/sample/hello",
...@@ -151,9 +151,9 @@ Perform the steps below in the source code directory: ...@@ -151,9 +151,9 @@ Perform the steps below in the source code directory:
4. Modify the product configuration file. 4. Modify the product configuration file.
In the **productdefine/common/products/Hi3516DV300.json** file, add the **hello** part after the existing part. In the **vendor\hisilicon\Hi3516DV300\config.json** file, add the **hello** part after the existing part.
``` ```
"usb:usb_manager_native":{}, "usb:usb_manager_native":{},
"applications:prebuilt_hap":{}, "applications:prebuilt_hap":{},
......
...@@ -44,7 +44,7 @@ After the source code is imported, perform the following steps: ...@@ -44,7 +44,7 @@ After the source code is imported, perform the following steps:
2. Connect the computer to the target development board through the USB port. 2. Connect the computer to the target development board through the USB port.
3. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu build environment) and the local computer (Windows build environment). 3. In DevEco Device Tool, choose **REMOTE DEVELOPMENT** > **Local PC** to check the connection status between the remote computer (Ubuntu development environment) and the local computer (Windows development environment).
- If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. Inthis case, no further action is required. - If ![en-us_image_0000001261315939](figures/en-us_image_0000001261315939.png) is displayed on the right of **Local PC**, the remote computer is connected to the local computer. Inthis case, no further action is required.
- If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon. - If ![en-us_image_0000001261515989](figures/en-us_image_0000001261515989.png) is displayed, click the connect icon.
...@@ -52,7 +52,7 @@ After the source code is imported, perform the following steps: ...@@ -52,7 +52,7 @@ After the source code is imported, perform the following steps:
![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png) ![en-us_image_0000001261395999](figures/en-us_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br> > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br>
> This operation is required only in remote access mode (in the Windows+Ubuntu hybrid build environment). If the local access mode (Windows or Ubuntu build environment) is used, skip this step. > This operation is required only in remote access mode (in the Windows+Ubuntu hybrid development environment). If the local access mode (Windows or Ubuntu development environment) is used, skip this step.
4. In DevEco Device Tool, choose QUICK ACCESS > DevEco Home > Projects, and then click Settings. 4. In DevEco Device Tool, choose QUICK ACCESS > DevEco Home > Projects, and then click Settings.
......
...@@ -18,9 +18,9 @@ applications/sample/hello ...@@ -18,9 +18,9 @@ applications/sample/hello
│ └── bundle.json │ └── bundle.json
build build
└── subsystem_config.json └── subsystem_config.json
productdefine/common vendor/hihope
└── products └── rk3568
└── rk3568.json └── config.json
``` ```
...@@ -149,7 +149,7 @@ Perform the steps below in the source code directory: ...@@ -149,7 +149,7 @@ Perform the steps below in the source code directory:
4. Modify the product configuration file. 4. Modify the product configuration file.
In the **productdefine/common/products/rk3568.json** file, add the **hello** part after the existing part. In the **vendor\hihope\rk3568\config.json** file, add the **hello** part after the existing part.
``` ```
"usb:usb_manager_native":{}, "usb:usb_manager_native":{},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册