# Hi3516æ ‡å‡†ç³»ç»Ÿå…¥é—¨ï¼ˆå‘½ä»¤è¡Œæ–¹å¼ï¼‰ >  **注æ„:** > > **从3.2ç‰ˆæœ¬èµ·ï¼Œæ ‡å‡†ç³»ç»Ÿä¸å†é’ˆå¯¹Hi3516DV300进行适é…验è¯ï¼Œå»ºè®®æ‚¨ä½¿ç”¨RK3568è¿›è¡Œæ ‡å‡†ç³»ç»Ÿçš„è®¾å¤‡å¼€å‘。** > > **如您ä»ç„¶éœ€è¦ä½¿ç”¨Hi3516DV300è¿›è¡Œæ ‡å‡†ç³»ç»Ÿç›¸å…³å¼€å‘æ“作,则å¯èƒ½ä¼šå‡ºçŽ°æ— æ³•é€‚é…çš„çŽ°è±¡ï¼Œæ¤æ—¶è¯·è”系芯片供应商获å–ç›¸å…³é€‚é…æŒ‡å¯¼ï¼Œæˆ–自行完æˆé€‚é…。** 除å°åž‹ç³»ç»Ÿå¤–,Hi3516DV300开呿¿è¿˜æ”¯æŒæ ‡å‡†ç³»ç»Ÿã€‚æ¤ç« 节简è¦ä»‹ç»å¦‚何使用命令行在Hi3516DV300开呿¿ä¸Šè¿›è¡Œæ ‡å‡†ç³»ç»Ÿçš„å¼€å‘。 ä¸‹æ–¹å°†å±•ç¤ºå¦‚ä½•åœ¨å•æ¿ä¸Šè¿è¡Œç¬¬ä¸€ä¸ªåº”用程åºï¼Œå…¶ä¸åŒ…括新建应用程åºã€ç¼–译ã€çƒ§å†™ã€è¿è¡Œç‰æ¥éª¤ï¼Œæœ€ç»ˆè¾“出“Hello Worldï¼â€ã€‚ 在进行开å‘之å‰ï¼Œè¯·é¦–先完æˆ[æå»ºå¼€å‘环境](quickstart-pkg-prepare.md)。 ## 编写“Hello Worldâ€ç¨‹åº ### 示例目录 ``` applications/sample/hello │── BUILD.gn │── include │ └── helloworld.h │── src │ └── helloworld.c ├── bundle.json build └── subsystem_config.json vendor/hisilicon └── Hi3516DV300 └── config.json ``` ### 开呿¥éª¤ 请在æºç 目录ä¸é€šè¿‡ä»¥ä¸‹æ¥éª¤åˆ›å»ºâ€œHello Worldâ€åº”用程åºï¼š 1. 创建目录,编写业务代ç 。 新建applications/sample/hello/src/helloworld.cç›®å½•åŠæ–‡ä»¶ï¼Œä»£ç 如下所示,用户å¯ä»¥è‡ªå®šä¹‰ä¿®æ”¹æ‰“å°å†…容(例如:修改World为OHOS)。其ä¸helloworld.h包å«å—符串打å°å‡½æ•°HelloPrint的声明。当å‰åº”用程åºå¯æ”¯æŒæ ‡å‡†CåŠC++的代ç å¼€å‘。 ``` #include <stdio.h> #include "helloworld.h" int main(int argc, char **argv) { HelloPrint(); return 0; } void HelloPrint() { printf("\n\n"); printf("\n\t\tHello World!\n"); printf("\n\n"); } ``` 冿·»åŠ å¤´æ–‡ä»¶applications/sample/hello/include/helloworld.h,代ç 如下所示。 ``` #ifndef HELLOWORLD_H #define HELLOWORLD_H #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif void HelloPrint(); #ifdef __cplusplus #if __cplusplus } #endif #endif #endif // HELLOWORLD_H ``` 2. 新建编译组织文件。 1. 新建applications/sample/hello/BUILD.gn文件,内容如下所示: ``` import("//build/ohos.gni") # å¯¼å…¥ç¼–è¯‘æ¨¡æ¿ ohos_executable("helloworld") { # 坿‰§è¡Œæ¨¡å— sources = [ # æ¨¡å—æºç "src/helloworld.c" ] include_dirs = [ # 模å—ä¾èµ–头文件目录 "include" ] cflags = [] cflags_c = [] cflags_cc = [] ldflags = [] configs = [] deps =[] # 部件内部ä¾èµ– part_name = "hello" # 所属部件å称,必选 install_enable = true # 是å¦é»˜è®¤å®‰è£…(缺çœé»˜è®¤ä¸å®‰è£…),å¯é€‰ } ``` 2. 新建applications/sample/hello/bundle.jsonæ–‡ä»¶ï¼Œæ·»åŠ sample部件æè¿°ï¼Œå†…容如下所示。 ``` { "name": "@ohos/hello", "description": "Hello world example.", "version": "3.1", "license": "Apache License 2.0", "publishAs": "code-segment", "segment": { "destPath": "applications/sample/hello" }, "dirs": {}, "scripts": {}, "component": { "name": "hello", "subsystem": "sample", "syscap": [], "features": [], "adapted_system_type": [ "mini", "small", "standard" ], "rom": "10KB", "ram": "10KB", "deps": { "components": [], "third_party": [] }, "build": { "sub_component": [ "//applications/sample/hello:helloworld" ], "inner_kits": [], "test": [] } } } ``` bundle.json文件包å«ä¸¤ä¸ªéƒ¨åˆ†ï¼Œç¬¬ä¸€éƒ¨åˆ†æè¿°è¯¥éƒ¨ä»¶æ‰€å±žå系统的信æ¯ï¼Œç¬¬äºŒéƒ¨åˆ†component则定义该部件构建相关é…ç½®ã€‚æ·»åŠ çš„æ—¶å€™éœ€è¦æŒ‡æ˜Žè¯¥éƒ¨ä»¶åŒ…å«çš„æ¨¡å—sub_component,å‡å¦‚有æä¾›ç»™å…¶å®ƒéƒ¨ä»¶çš„æŽ¥å£ï¼Œéœ€è¦åœ¨inner_kitsä¸è¯´æ˜Žï¼Œå‡å¦‚有测试用例,需è¦åœ¨testä¸è¯´æ˜Žï¼Œinner_kits与test没有也å¯ä»¥ä¸æ·»åŠ ã€‚ 3. 修改å系统é…置文件。 在build/subsystem_config.json䏿·»åŠ æ–°å»ºçš„å系统的é…置。 ``` "sample": { "path": "applications/sample/hello", "name": "sample" }, ``` 4. 修改产å“é…置文件。 在vendor/hisilicon/Hi3516DV300/config.json䏿·»åŠ å¯¹åº”çš„helloéƒ¨ä»¶ï¼Œç›´æŽ¥æ·»åŠ åˆ°åŽŸæœ‰éƒ¨ä»¶åŽå³å¯ã€‚ ``` "usb:usb_manager_native":{}, "applications:prebuilt_hap":{}, "sample:hello":{}, "wpa_supplicant-2.9:wpa_supplicant-2.9":{}, ``` ## 编译 OpenHarmony支æŒhbå’Œbuild.sh两ç§ç¼–译方å¼ã€‚æ¤å¤„介ç»hbæ–¹å¼ï¼Œbuild.sh脚本编译方å¼è¯·å‚考[使用build.sh脚本编译æºç ](quickstart-pkg-common-build.md#使用buildsh脚本编译æºç )。 想è¦è¯¦ç»†äº†è§£OpenHarmony编译构建模å—功能的开å‘者å¯å‚考[编译构建指å—](../subsystems/subsys-build-all.md)。 ### 剿æ¡ä»¶ - å·²æ£ç¡®[安装库和工具集](quickstart-pkg-install-package.md)。 - å·²æ£ç¡®[安装编译工具](quickstart-pkg-install-tool.md)。 - “Hello Worldâ€ç¨‹åºå·²ç¼–写完æˆã€‚ - 坿£å¸¸ç™»å½•Ubuntu环境。 ### æ“作æ¥éª¤ 请进入æºç æ ¹ç›®å½•ï¼Œæ‰§è¡Œå¦‚ä¸‹å‘½ä»¤è¿›è¡Œç¼–è¯‘ï¼š 1. 设置编译路径。 ``` hb set ``` 2. 选择当å‰è·¯å¾„。 ``` . ``` 3. 在hisilicon下选择hispark_taurus_standard并回车。 >  **说明:** > > åŒæ ·çš„开呿¿åœ¨é€‚é…ä¸åŒçš„场景时,è¦é‡‡ç”¨çš„编译形æ€ä¸åŒï¼ˆå³æ¤å¤„è¦é€‰æ‹©çš„productä¸åŒï¼‰ï¼Œè¯·å‚考[ç¼–è¯‘å½¢æ€æ•´ä½“说明](quickstart-appendix-compiledform.md)。 **图1** Hi3516编译设置图例   4. 执行编译。 >  **说明:** > - å•独编译一个部件(例如hello),å¯ä½¿ç”¨â€œhb build -T _ç›®æ ‡åç§°_â€è¿›è¡Œç¼–译。 > > - 增é‡ç¼–译整个产å“,å¯ä½¿ç”¨â€œhb buildâ€è¿›è¡Œç¼–译。 > > - 完整编译整个产å“,å¯ä½¿ç”¨â€œhb build -fâ€è¿›è¡Œç¼–译。 > > æ¤å¤„以完整编译整个产å“为例进行说明。 ``` hb build -f ``` 5. 编译结æŸåŽï¼Œå‡ºçŽ°â€œbuild successâ€å—æ ·ï¼Œåˆ™è¯æ˜Žæž„建æˆåŠŸã€‚ >  **须知:** > 编译结果文件åŠç¼–译日志文件获å–路径:out/hi3516dv300。 ## 烧录 针对Hi3516DV300开呿¿ï¼Œé™¤äº†DevEco Device Tool(æ“作方法请å‚考[烧录](quickstart-appendix-hi3516-ide.md#烧录))外,还å¯ä»¥ä½¿ç”¨HiTool进行烧录。 ### 剿æ¡ä»¶ - 开呿¿ç›¸å…³æºç 已编译完æˆï¼Œå·²å½¢æˆçƒ§å½•文件。 - 客户端(æ“作平å°ï¼Œä¾‹å¦‚Windows系统)已下载并安装[HiTool工具](http://www.hihope.org/download/download.aspx)。 - 客户端(æ“作平å°ï¼Œä¾‹å¦‚Windows系统)已安装USB驱动,å¯å‚考[Hi3516DV300开呿¿USB驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fusb_driver-0000001058690393)。 - 客户端已安装串å£ç»ˆç«¯å·¥å…·ï¼ˆä¾‹å¦‚IPOP)。 - 使用USB线缆ã€ä¸²å£çº¿ç¼†è¿žæŽ¥å®¢æˆ·ç«¯ä¸Žå¼€å‘æ¿ã€‚ ### æ“作æ¥éª¤ 1. 准备烧录相关文件。 1. 在客户端新建用于ä¿å˜çƒ§å½•文件的文件夹,例如D:\L2。 2. 将编译完æˆçš„æºç 包下载至客户端并解压,将烧录相关文件拷è´è‡³æ¥éª¤1䏿–°å»ºçš„æ–‡ä»¶å¤¹ã€‚ Hi3516DV300开呿¿çƒ§å†™æ‰€éœ€æ–‡ä»¶ä¸ºï¼šboot.imgã€Hi3516DV300-emmc.xmlã€system.imgã€u-boot-hi3516dv300_emmc.binã€uImageã€updater.imgã€userdata.imgã€vendor.img。 2. 使用HiTool烧录。 1. 打开HiTool。 2. 设置HiTool傿•°ã€‚ ä¼ è¾“æ–¹å¼é€‰æ‹©USBå£ï¼Œçƒ§å†™æ–¹å¼é€‰æ‹©çƒ§å†™eMMCï¼ˆå•æ¿çš„å˜å‚¨ä»‹è´¨ä¸ºeMMC)。 3. å•击æµè§ˆåœ¨æ¥éª¤1创建的文件夹ä¸é€‰æ‹©çƒ§å†™é…置文件(例如Hi3516DV300-emmc.xml)。  4. å•击烧写åŽï¼ŒæŒ‰ä½å¼€å‘æ¿ä¸Šä¸²å£æ—的按钮(Update键),并拔æ’USB线(上下电)。 烧录开始åŽï¼Œå¯ä»¥åœ¨HiTool工具下方的控制å°åŒºåŸŸè§‚察到烧录过程ä¸çš„æ‰“å°ä¿¡æ¯ã€‚ 烧录完æˆåŽï¼ŒHiTool弹出æç¤ºæ¡†æ˜¾ç¤ºçƒ§å†™æˆåŠŸã€‚ 5. å•击确定。 3. 导入å¯åЍ傿•°ã€‚ 1. 使用终端工具打开串å£ã€‚ 2. æ‹”æ’开呿¿ç”µæºä½¿å…¶é‡å¯ï¼Œ3s内在串å£ç»ˆç«¯è¾“入回车。 终端界é¢ä¸å‡ºçްhisilicon \#è¡¨ç¤ºå·²è¿žæŽ¥å¼€å‘æ¿ä¸²å£ã€‚ 3. 在串å£ç»ˆç«¯æ‹·è´å¦‚下å¯åЍ傿•°åŽï¼ŒæŒ‰å›žè½¦å®Œæˆé…置。 ``` setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)';setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000' saveenv reset ``` >  **须知:** > 输入å¯åЍ傿•°æ—¶ï¼Œè¯·å‹¿è‡ªè¡Œåˆ 除其ä¸çš„空行。 ## è¿è¡Œ 系统å¯åЍæˆåŠŸåŽï¼Œå–æºç out目录下的helloworld坿‰§è¡Œæ–‡ä»¶æ”¾å…¥ç³»ç»Ÿçš„bin目录,通过以下æ¥éª¤è¿è¡Œâ€œHello Worldâ€ã€‚ ### æ“作æ¥éª¤ 1. 在å¯åŠ¨ç•Œé¢è¿›å…¥bin目录。 ``` cd bin ``` 2. 进入bin目录åŽå¯ä»¥çœ‹åˆ°helloworld文件,通过以下命令è¿è¡Œhelloworld程åºã€‚ ``` ./helloworld ``` ç•Œé¢æ‰“å°â€œHello Worldï¼â€ï¼Œç¨‹åºè¿è¡ŒæˆåŠŸã€‚ ### 下一æ¥å¦ä¹ æå–œï¼æ‚¨å·²ç»å®Œæˆäº†æ ‡å‡†ç³»ç»Ÿçš„快速入门,接下æ¥å¯[å¼€å‘一个å°ç¤ºä¾‹](../guide/device-clock-guide.md),进一æ¥ç†Ÿæ‚‰OpenHarmony的开å‘。