# 开发Hi3516第一个应用程序示例 - [修改应用程序](#s8efc1952ebfe4d1ea717182e108c29bb) - [编译](#section1077671315253) - [烧录](#section08153912587) - [镜像运行](#section380511712615) - [执行应用程序](#section5276734182615) 本节指导开发者在单板上运行第一个应用程序,其中包括修改应用程序、编译、烧写、运行等步骤,最终输出“Hello OHOS!”。 ## 修改应用程序 源码目录applications/sample/camera/app/src内**helloworld.c**代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。 ``` #include #include "los_sample.h" int main(int argc, char **argv) { printf("\n************************************************\n"); printf("\n\t\tHello OHOS!\n"); printf("\n************************************************\n\n"); LOS_Sample(g_num); return 0; } ``` ## 编译 如果Linux编译环境通过Docker方式安装,具体编译过程请参见[Docker方式获取编译环境](../get-code/获取工具.md)的编译操作。如果Linux编译环境通过软件包方式安装,请进入源码根目录,执行如下命令进行编译: ``` hb set(设置编译路径) .(选择当前路径) 选择ipcamera_hispark_taurus@hisilicon并回车 hb build -f(执行编译) ``` **图 1** 设置图例  结果文件生成在out/hispark\_taurus/ipcamera\_hispark\_taurus目录下。 > **须知:** >Hi3516DV300单板的U-boot文件获取路径:vendor\\hisi\\hi35xx\\hi3516dv300\\uboot\\out\\boot\\u-boot-hi3516dv300.bin ## 烧录 Hi3516开发板的代码烧录支持USB烧录、网口烧录和串口烧录三种方式。此处仅以网口烧录为例进行说明。 1. 请连接好电脑和待烧录开发板,以Hi3516DV300为例,需要同时连接串口、网口和电源,具体可参考[Hi3516开发板介绍](https://device.harmonyos.com/cn/docs/start/introduce/oem_camera_start_3516-0000001052670587)。 2. 打开电脑的设备管理器,查看并记录对应的串口号。 > **说明:** >如果对应的串口异常,请根据[Hi3516/Hi3518系列开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。  3. 打开DevEco Device Tool,在Projects中,点击**Settings**打开工程配置界面。  4. 在“hi3516dv300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。 - upload\_port:选择步骤[2](#zh-cn_topic_0000001056443961_li142386399535)中查询的串口号。 - upload\_protocol:选择烧录协议,固定选择“hiburn-net”。 - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。  5. 设置网口烧录的IP地址信息,建议先在本地PC上设置本机的本地TCP/IPv4地址信息,再设置如下选项: - upload\_net\_server\_ip:选择当前PC的IP地址。例如192.168.1.2 - 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  6. 修改待烧录文件(对应hi3516dv300\_fastboothi3516dv300\_kernel、hi3516dv300\_rootfs和hi3516dv300\_userfs页签)的设置,默认情况下,DevEco Device Tool已针对Hi3516系列开发板进行适配,无需单独修改。如果需要修改,请在New Option中,选择对应的修改项进行更改。  7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。  8. 打开工程文件,点击图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击env:hi3516dv300下的**Upload**按钮,启动烧录。  9. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。  10. 重新上电后,启动烧录,界面提示如下信息时,表示烧录成功。  ## 镜像运行 1. 连接串口。 > **须知:** >若无法连接串口,请参考[常见问题](Hi3516常见问题.md#section14871149155911)进行排查。 **图 2** 连接串口图  1. 单击**Serial port**打开串口。 2. 输入串口编号\(按照烧录步骤中查询的串口号,此处以com11举例\),并连续输入回车直到串口显示"hisillicon"。 3. 单板初次启动或修改启动参数,请进入[步骤2](#l5b42e79a33ea4d35982b78a22913b0b1),否则进入[步骤3](#ld26f18828aa44c36bfa36be150e60e49)。 2. (单板初次启动必选)修改U-boot的bootcmd及bootargs内容:该步骤为固化操作,若不修改参数只需执行一次。每次复位单板均会自动进入系统。 > **须知:** >U-boot引导程序默认会有2秒的等待时间,用户可使用回车打断等待并显示"hisillicon",通过**reset**命令可再次启动系统。 **表 1** U-boot修改命令 执行命令 命令解释 setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000"; 读取FLASH起始地址为0x800(单位为512B,即1MB),大小为0x4800(单位为512B,即9MB)的内容到0x80000000的内存地址,该大小(9MB)与IDE中所填写OHOS_Image.bin文件大小必须相同。 setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=15M rw"; 表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat, “rootaddr=10M rootsize=15M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与IDE中新增rootfs.img文件时所填大小必须相同。 saveenv 表示保存当前配置。 reset 表示复位单板。 > **须知:** >**“go 0x80000000”**为可选指令,默认配置已将该指令固化在启动参数中,单板复位后可自动启动。若想切换为手动启动,可在U-boot启动倒数阶段使用"回车"打断自动启动。 3. 输入**“reset”**指令并回车,重启单板,启动成功如下图,输入回车串口显示OHOS字样。 **图 3** 系统启动图  ## 执行应用程序 根目录下,在命令行输入指令“**./bin/camera\_app**”执行写入的demo程序,显示成功结果如下图所示。 **图 4** 应用程序启动图 
执行命令
命令解释
setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";
读取FLASH起始地址为0x800(单位为512B,即1MB),大小为0x4800(单位为512B,即9MB)的内容到0x80000000的内存地址,该大小(9MB)与IDE中所填写OHOS_Image.bin文件大小必须相同。
setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=15M rw";
表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat,
“rootaddr=10M rootsize=15M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与IDE中新增rootfs.img文件时所填大小必须相同。
saveenv
表示保存当前配置。
reset
表示复位单板。