quickstart-lite-steps-hi3516-running.md 13.3 KB
Newer Older
D
duangavin123 已提交
1
# 运行Hello OHOS(编译、烧录)<a name="ZH-CN_TOPIC_0000001174270695"></a>
N
NEEN 已提交
2

M
mamingshuai 已提交
3
-   [新建应用程序](#section204672145202)
N
NEEN 已提交
4
-   [编译](#section1077671315253)
M
mamingshuai 已提交
5
-   [烧录](#section1347011412201)
D
duangavin123 已提交
6 7
    -   [使用网口烧录](#section1935410617363)

M
mamingshuai 已提交
8
-   [镜像运行](#section24721014162010)
N
NEEN 已提交
9 10
-   [执行应用程序](#section5276734182615)

N
NEEN 已提交
11
本节指导开发者在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello OHOS!”。
N
NEEN 已提交
12

M
mamingshuai 已提交
13
## 新建应用程序<a name="section204672145202"></a>
N
NEEN 已提交
14

N
NEEN 已提交
15
1.  新建目录及源码
N
NEEN 已提交
16

N
NEEN 已提交
17
    新建**applications/sample/camera/apps/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。
N
NEEN 已提交
18

N
NEEN 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
    ```
    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
        printf("\n************************************************\n");
        printf("\n\t\tHello OHOS!\n");
        printf("\n************************************************\n\n");
    
        return 0;
    }
    ```

2.  新建编译组织文件

    新建**applications/sample/camera/apps/BUILD.gn**文件,内容如下所示:

    ```
    import("//build/lite/config/component/lite_component.gni")
    lite_component("hello-OHOS") {
      features = [ ":helloworld" ]
    }
    executable("helloworld") {
      output_name = "helloworld"
      sources = [ "src/helloworld.c" ]
      include_dirs = []
      defines = []
      cflags_c = []
      ldflags = []
    }
    ```

3.  添加新组件

    修改文件**build/lite/components/applications.json**,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):

    ```
    {
      "components": [
        {
          "component": "camera_sample_communication",
          "description": "Communication related samples.",
          "optional": "true",
          "dirs": [
            "applications/sample/camera/communication"
          ],
          "targets": [
            "//applications/sample/camera/communication:sample"
          ],
          "rom": "",
          "ram": "",
          "output": [],
          "adapted_kernel": [ "liteos_a" ],
          "features": [],
          "deps": {
            "components": [],
            "third_party": []
          }
        },
    ##start##
        {
          "component": "hello_world_app",
          "description": "Communication related samples.",
          "optional": "true",
          "dirs": [
            "applications/sample/camera/apps"
          ],
          "targets": [
            "//applications/sample/camera/apps:hello-OHOS"
          ],
          "rom": "",
          "ram": "",
          "output": [],
          "adapted_kernel": [ "liteos_a" ],
          "features": [],
          "deps": {
            "components": [],
            "third_party": []
          }
        },
    ##end##
        {
          "component": "camera_sample_app",
          "description": "Camera related samples.",
          "optional": "true",
          "dirs": [
            "applications/sample/camera/launcher",
            "applications/sample/camera/cameraApp",
            "applications/sample/camera/setting",
            "applications/sample/camera/gallery",
            "applications/sample/camera/media"
          ],
    ```

4.  修改单板配置文件

    修改文件**vendor/hisilicon/hispark\_taurus/config.json**,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行):

    ```
          {
            "subsystem": "applications",
            "components": [
              { "component": "camera_sample_app", "features":[] },
              { "component": "camera_sample_ai", "features":[] },
    ##start##
              { "component": "hello_world_app", "features":[] },
    ##end##
              { "component": "camera_screensaver_app", "features":[] }
            ]
          },
    ```
N
NEEN 已提交
130 131 132 133


## 编译<a name="section1077671315253"></a>

D
duangavin123 已提交
134
如果Linux编译环境通过Docker方式安装,具体编译过程请参见[Docker方式获取编译环境](../get-code/gettools-acquire.md#section107932281315)的编译操作。如果Linux编译环境通过软件包方式安装,请进入源码根目录,执行如下命令进行编译:
N
NEEN 已提交
135 136 137 138 139 140 141 142

```
hb set(设置编译路径)
.(选择当前路径)
选择ipcamera_hispark_taurus@hisilicon并回车
hb build -f(执行编译)
```

D
duangavin123 已提交
143
**图 1**  设置图例<a name="fig1458988766"></a>  
D
duangavin123 已提交
144
![](figure/设置图例.png "设置图例")
N
NEEN 已提交
145 146 147

结果文件生成在out/hispark\_taurus/ipcamera\_hispark\_taurus目录下。

D
duangavin123 已提交
148
>![](../public_sys-resources/icon-notice.gif) **须知:** 
N
NEEN 已提交
149
>Hi3516DV300单板的U-boot文件获取路径:device/hisilicon/hispark\_taurus/sdk\_liteos/uboot/out/boot/u-boot-hi3516dv300.bin
N
NEEN 已提交
150

M
mamingshuai 已提交
151
## 烧录<a name="section1347011412201"></a>
N
NEEN 已提交
152 153 154

Hi3516开发板的代码烧录支持USB烧录、网口烧录和串口烧录三种方式。此处仅以网口烧录为例进行说明。

D
duangavin123 已提交
155 156 157 158 159
### 使用网口烧录<a name="section1935410617363"></a>

Hi3516DV300开发板使用网口烧录方式,支持Windows和Linux系统。

1.  请连接好电脑和待烧录开发板,需要同时连接串口、网口和电源,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_des_3516-0000001152041033)
N
NEEN 已提交
160 161
2.  <a name="zh-cn_topic_0000001056443961_li142386399535"></a>打开电脑的设备管理器,查看并记录对应的串口号。

D
duangavin123 已提交
162
    >![](../public_sys-resources/icon-note.gif) **说明:** 
D
duangavin123 已提交
163
    >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。
N
NEEN 已提交
164

D
duangavin123 已提交
165
    ![](figure/record-the-serial-port-number-1.png)
N
NEEN 已提交
166 167 168

3.  打开DevEco Device Tool,在Projects中,点击**Settings**打开工程配置界面。

D
duangavin123 已提交
169
    ![](figure/settings.png)
N
NEEN 已提交
170

D
duangavin123 已提交
171
4.  在“Partition Configuration”页签,设置待烧录文件信息,默认情况下,DevEco Device Tool已针对Hi3516DV300开发板进行适配,无需单独修改。
M
mamingshuai 已提交
172
5.  在“hi3516dv300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。
N
NEEN 已提交
173 174 175 176 177

    -   upload\_port:选择步骤[2](#zh-cn_topic_0000001056443961_li142386399535)中查询的串口号。
    -   upload\_protocol:选择烧录协议,固定选择“hiburn-net”。
    -   upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。

D
duangavin123 已提交
178
    ![](figure/hi3516-upload-options.png)
N
NEEN 已提交
179

D
duangavin123 已提交
180
6.  检查和设置连接开发板后的网络适配器的IP地址信息,设置方法请参考[设置Hi3516DV300网口烧录的IP地址信息](https://device.harmonyos.com/cn/docs/ide/user-guides/set_ipaddress-0000001141825075)
M
mamingshuai 已提交
181
7.  设置网口烧录的IP地址信息,设置如下选项:
N
NEEN 已提交
182

D
duangavin123 已提交
183
    -   upload\_net\_server\_ip:选择步骤6中设置的IP地址信息。例如192.168.1.2
N
NEEN 已提交
184 185 186 187
    -   upload\_net\_client\_mask:设置开发板的子网掩码,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如255.255.255.0
    -   upload\_net\_client\_gw:设置开发板的网关,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.1
    -   upload\_net\_client\_ip:设置开发板的IP地址,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.3

D
duangavin123 已提交
188
    ![](figure/ip-address-information.png)
N
NEEN 已提交
189

N
NEEN 已提交
190
8.  所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
D
duangavin123 已提交
191
9.  打开工程文件,点击![](figure/deveco-device-tool-logo.png)图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击hi3516dv300下的**Upload**按钮,启动烧录。
N
NEEN 已提交
192

D
duangavin123 已提交
193
    ![](figure/start-burning.png)
N
NEEN 已提交
194

N
NEEN 已提交
195
10. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。
N
NEEN 已提交
196

D
duangavin123 已提交
197
    ![](figure/restart-the-development-board-2.png)
N
NEEN 已提交
198

N
NEEN 已提交
199
11. 重新上电后,启动烧录,界面提示如下信息时,表示烧录成功。
N
NEEN 已提交
200

D
duangavin123 已提交
201
    ![](figure/burning-succeeded-3.png)
N
NEEN 已提交
202 203


M
mamingshuai 已提交
204
## 镜像运行<a name="section24721014162010"></a>
N
NEEN 已提交
205 206 207

1.  连接串口。

D
duangavin123 已提交
208
    >![](../public_sys-resources/icon-notice.gif) **须知:** 
D
duangavin123 已提交
209
    >若无法连接串口,请参考[常见问题](quickstart-lite-steps-hi3516-faqs.md)进行排查。
N
NEEN 已提交
210

D
duangavin123 已提交
211 212
    **图 2**  连接串口图<a name="fig139171488431"></a>  
    ![](figure/连接串口图.png "连接串口图")
N
NEEN 已提交
213

N
NEEN 已提交
214 215
    1.  单击**Monitor**打开串口。
    2.  连续输入回车直到串口显示"hisilicon"。
N
NEEN 已提交
216 217 218 219
    3.  单板初次启动或修改启动参数,请进入[步骤2](#l5b42e79a33ea4d35982b78a22913b0b1),否则进入[步骤3](#ld26f18828aa44c36bfa36be150e60e49)。

2.  <a name="l5b42e79a33ea4d35982b78a22913b0b1"></a>(单板初次启动必选)修改U-boot的bootcmd及bootargs内容:该步骤为固化操作,若不修改参数只需执行一次。每次复位单板均会自动进入系统。

D
duangavin123 已提交
220
    >![](../public_sys-resources/icon-notice.gif) **须知:** 
N
NEEN 已提交
221
    >U-boot引导程序默认会有2秒的等待时间,用户可使用回车打断等待并显示"hisilicon",通过**reset**命令可再次启动系统。
N
NEEN 已提交
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236

    **表 1**  U-boot修改命令

    <a name="table1323441103813"></a>
    <table><thead align="left"><tr id="row1423410183818"><th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.1"><p id="p623461163818"><a name="p623461163818"></a><a name="p623461163818"></a>执行命令</p>
    </th>
    <th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.2"><p id="p42341014388"><a name="p42341014388"></a><a name="p42341014388"></a>命令解释</p>
    </th>
    </tr>
    </thead>
    <tbody><tr id="row1623471113817"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p102341719385"><a name="p102341719385"></a><a name="p102341719385"></a>setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";</p>
    </td>
    <td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p92347120389"><a name="p92347120389"></a><a name="p92347120389"></a>读取FLASH起始地址为0x800(单位为512B,即1MB),大小为0x4800(单位为512B,即9MB)的内容到0x80000000的内存地址,该大小(9MB)与IDE中所填写OHOS_Image.bin文件大小<strong id="b15685648113111"><a name="b15685648113111"></a><a name="b15685648113111"></a>必须相同</strong>。</p>
    </td>
    </tr>
M
mamingshuai 已提交
237
    <tr id="row12234912381"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p172306219392"><a name="p172306219392"></a><a name="p172306219392"></a>setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw";</p>
N
NEEN 已提交
238 239
    </td>
    <td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p13489329396"><a name="p13489329396"></a><a name="p13489329396"></a>表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat,</p>
M
mamingshuai 已提交
240
    <p id="p12481832163913"><a name="p12481832163913"></a><a name="p12481832163913"></a>“rootaddr=10M rootsize=20M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与IDE中新增rootfs.img文件时所填大小<strong id="b24816327398"><a name="b24816327398"></a><a name="b24816327398"></a>必须相同</strong>。</p>
N
NEEN 已提交
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
    </td>
    </tr>
    <tr id="row18234161153820"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p823417118386"><a name="p823417118386"></a><a name="p823417118386"></a>saveenv</p>
    </td>
    <td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p32341616389"><a name="p32341616389"></a><a name="p32341616389"></a>表示保存当前配置。</p>
    </td>
    </tr>
    <tr id="row192345113811"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p7235111183819"><a name="p7235111183819"></a><a name="p7235111183819"></a>reset</p>
    </td>
    <td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p123781411114016"><a name="p123781411114016"></a><a name="p123781411114016"></a>表示复位单板。</p>
    </td>
    </tr>
    </tbody>
    </table>

D
duangavin123 已提交
256
    >![](../public_sys-resources/icon-notice.gif) **须知:** 
N
NEEN 已提交
257 258 259 260
    >**“go 0x80000000”**为可选指令,默认配置已将该指令固化在启动参数中,单板复位后可自动启动。若想切换为手动启动,可在U-boot启动倒数阶段使用"回车"打断自动启动。

3.  <a name="ld26f18828aa44c36bfa36be150e60e49"></a>输入**“reset”**指令并回车,重启单板,启动成功如下图,输入回车串口显示OHOS字样。

D
duangavin123 已提交
261 262
    **图 3**  系统启动图<a name="fig784813366444"></a>  
    ![](figure/系统启动图.png "系统启动图")
N
NEEN 已提交
263 264 265 266


## 执行应用程序<a name="section5276734182615"></a>

N
NEEN 已提交
267
根目录下,在命令行输入指令“**./bin/helloworld**”执行写入的demo程序,显示成功结果如下图所示。
N
NEEN 已提交
268

D
duangavin123 已提交
269
**图 4**  启动并成功执行应用程序图<a name="fig149821431194515"></a>  
D
duangavin123 已提交
270
![](figure/启动并成功执行应用程序图.png "启动并成功执行应用程序图")
N
NEEN 已提交
271