鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

 

Hi3516标准系统入门(命令行方式)

icon-caution.gif

 注意:

从3.2版本起,标准系统不再针对Hi3516DV300进行适配验证,建议您使用RK3568进行标准系统的设备开发。

如您仍然需要使用Hi3516DV300进行标准系统相关开发操作,则可能会出现无法适配的现象,此时请联系芯片供应商获取相关适配指导,或自行完成适配。

除小型系统外,Hi3516DV300开发板还支持标准系统。此章节简要介绍如何使用命令行在Hi3516DV300开发板上进行标准系统的开发。

下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。

在进行开发之前,请首先完成搭建开发环境。

编写“Hello World”程序

示例目录

applications/sample/hello│── BUILD.gn│── include│   └── helloworld.h│── src│   └── helloworld.c├── bundle.jsonbuild└── subsystem_config.jsonvendor/hisilicon└── Hi3516DV300└── config.json

开发步骤

开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

请在源码目录中通过以下步骤创建“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脚本编译源码。

想要详细了解OpenHarmony编译构建模块功能的开发者可参考编译构建指南。

前提条件

  • 已正确[安装库和工具集]。
  • 已正确[安装编译工具]。
  • “Hello World”程序已编写完成。
  • 可正常登录Ubuntu环境。

操作步骤

请进入源码根目录,执行如下命令进行编译:

  1. 设置编译路径。

    hb set
  2. 选择当前路径。

    .
  3. 在hisilicon下选择hispark_taurus_standard并回车。

    icon-note.gif

     说明:

    同样的开发板在适配不同的场景时,要采用的编译形态不同(即此处要选择的product不同),请参考编译形态整体说明。

    图1 Hi3516编译设置图例  

    quick-start-hi3516-standard-build

  4. 执行编译。

    icon-note.gif

     说明:

    • 单独编译一个部件(例如hello),可使用“hb build -T 目标名称”进行编译。
    • 增量编译整个产品,可使用“hb build”进行编译。
    • 完整编译整个产品,可使用“hb build -f”进行编译。

    此处以完整编译整个产品为例进行说明。

    hb build -f
  5. 编译结束后,出现“build success”字样,则证明构建成功。

    icon-notice.gif

      须知:  编译结果文件及编译日志文件获取路径:out/hi3516dv300。

烧录

针对Hi3516DV300开发板,除了DevEco Device Tool(操作方法请参考[烧录]外,还可以使用HiTool进行烧录。

前提条件

  • 开发板相关源码已编译完成,已形成烧录文件。
  • 客户端(操作平台,例如Windows系统)已下载并安装[HiTool工具]。
  • 客户端(操作平台,例如Windows系统)已安装USB驱动,可参考[Hi3516DV300开发板USB驱动安装指导]。
  • 客户端已安装串口终端工具(例如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)。

      quickstart-hi3516-standard-hitool-select

    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 androidboot.selinux=permissive 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'
      saveenvreset

      icon-notice.gif

        须知:  输入启动参数时,请勿自行删除其中的空行。

搜狗高速浏览器截图20240326151450.png

运行

系统启动成功后,取源码out目录下的helloworld可执行文件放入系统的bin目录,通过以下步骤运行“Hello World”。

操作步骤

  1. 在启动界面进入bin目录。

    cd bin
  2. 进入bin目录后可以看到helloworld文件,通过以下命令运行helloworld程序。

    ./helloworld

    界面打印“Hello World!”,程序运行成功。

最后呢,很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

高清完整版请点击→《鸿蒙NEXT星河版开发学习文档》

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细资料鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

《鸿蒙 (OpenHarmony)开发学习视频》

图片

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

OpenHarmony北向、南向开发环境搭建

图片

《鸿蒙开发基础》

  1. ArkTS语言

  2. 安装DevEco Studio

  3. 运用你的第一个ArkTS应用

  4. ArkUI声明式UI开发

  5. .……

图片

《鸿蒙开发进阶》

  1. Stage模型入门

  2. 网络管理

  3. 数据管理

  4. 电话服务

  5. 分布式应用开发

  6. 通知与窗口管理

  7. 多媒体技术

  8. 安全技能

  9. 任务管理

  10. WebGL

  11. 国际化开发

  12. 应用测试

  13. DFX面向未来设计

  14. 鸿蒙系统移植和裁剪定制

  15. ……

图片

《鸿蒙开发实战》

  1. ArkTS实践

  2. UIAbility应用

  3. 网络案例

  4. ……

图片

 获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaweb学习笔记1

1、基本概念 1.1、前言 web开发&#xff1a; web&#xff0c;网页的意思&#xff0c;www.baidu.com 静态web html,css 提供给所有人看的数据始终不会发生变化&#xff01; 动态web 淘宝&#xff0c;几乎是所有的网站&#xff1b; 提供给所有人看的数据始终会发生变化&…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员掌握地下水数值模拟软件GMS的全过程实际操作技术的基本技能&#xff0c;而且可以深刻理解模拟过程中的关键环节&#xff0c;以解决实际问题能力。同时为满足环评从业人员进一步加强地下水数值模…

腾讯突然宣布,微信鸿蒙版要来了!

今年初&#xff0c;华为宣布HarmonyOS NEXT命名为“鸿蒙星河版”&#xff0c;并计划在二季度启动开发者 Beta 计划&#xff0c;四季度发布商用正式版。 消息一出&#xff0c;不少人为之振奋。 鸿蒙星河版因不再兼容安卓开源应用&#xff0c;仅支持鸿蒙内核和系统的应用&#x…

Penpad再获 Presto Labs 投资,Scroll 生态持续扩张

Penpad是Scroll生态的LaunchPad平台&#xff0c;其整计划像收益聚合器以及RWA等功能于一体的综合性Web3平台拓展&#xff0c;该平台在近期频获资本市场关注&#xff0c;并获得了多个知名投资者/投资机构的支持。 截止到本文发布前&#xff0c;Penpad已经获得了包括Scroll联合创…

(三)JSP教程——JSP动作标签

JSP动作标签 用户可以使用JSP动作标签向当前输出流输出数据&#xff0c;进行页面定向&#xff0c;也可以通过动作标签使用、修改和创建对象。 <jsp:include>标签 <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文…

B端UX/UI设计面试作品集分层源文件figmasketch模板

当您考虑找工作时&#xff0c;是否曾质疑过项目复盘作品集的重要性&#xff1f;实际上&#xff0c;一份精心准备的项目复盘作品集对于求职者来说具有无可估量的价值&#xff0c;特别是对于设计师这一职业领域。 以下所述或许对您而言已非陌生。您的作品集应当成为您专业技能与…

笔记本连接不上远程桌面,笔记本无法连接远程桌面的可能原因及解决方法

在使用远程桌面功能时&#xff0c;笔记本无法成功连接的情况可能由多种原因引起。为了有效地解决这个问题&#xff0c;我们需要逐一排查这些可能的原因&#xff0c;并采取相应的解决措施。 首先&#xff0c;网络连接稳定性是远程桌面连接成功的关键。请确保笔记本和远程计算机之…

Vue2之路由跳转传参中文问题处理

Vue2之路由跳转传参中文问题处理 文章目录 Vue2之路由跳转传参中文问题处理1. 问题描述1. 当前vue组件2. 跳转到的vue组件3. 出现的错误 2. 解决方法1. 当前vue组件2. 跳转到的vue组件 1. 问题描述 在el-table中的记录列表中放置了一个 操作按钮&#xff0c;点这个按钮时可以新…

RabbitMQ之基础入门

在 AMQP 中&#xff0c;Producer 将消息发送到 Exchange &#xff0c;再由 Exchange 将消息路由到一个或多个 Queue 中&#xff08;或者丢弃&#xff09;。Exchange 根据 Routing Key 和 Binding Key 将消息路由到 Queue &#xff0c;目前提供了 Direct、Topic、Fanout、Header…

github提交不了的问题

开了VPN提交的时候提示这个报错 是需要这两个端口号一致&#xff0c;就能提交了

线程池

文章目录 普通线程池自定义线程池 普通线程池 //创建线程池&#xff0c;不指定上限 ExecutorService pool1 Executors.newCachedThreadPool(); //创建线程池&#xff0c;指定上限 ExecutorService pool1 Executors.newFixedThreadPool(5); --------------------------------…

Material Studio 计算分子静电力、电荷密度以及差分电荷密度

1.先打开Material Studio导入要计算的分子cif文件或者mol文件&#xff0c;直接Flie-Import 2.高斯几何优化一下结构&#xff0c;参数按照我的设置就行&#xff0c;一般通用&#xff0c;后面出问题再调整 3.点完Run后会跳出很多计算过程&#xff0c;不用管&#xff0c;等他计算完…

【FL常用插件#1】Ozone11臭氧的安装和使用

本文内容收集自互联网&#xff0c;仅供个人学习参考使用&#xff0c;不允许用于商业用途&#xff0c;造成的侵权行为与本文作者无关 安装 VST2、VST3、AAX和NKS是音频技术界常见的几种插件格式&#xff0c;它们在功能和兼容性上有所不同&#xff1a; VST2 (Virtual Studio Tec…

python环境下labelImg图片标注工具的使用

labelimg GitHub地址 python环境下labelImg图片标注工具的使用 1. 写在开头2. 如何使用2.1安装2.2 启动2.2.1 先启动后设置标注的目录2.2.2 指定标注的目录和预设置的标签 2.3 设置自动保存和显示类别。2.4 保存文件类型2.5 [快捷键](https://github.com/HumanSignal/labelImg…

FastDFS-单机扩容

描述 周一上班收到用户反馈系统异常&#xff0c;紧急排查日志发现报错&#xff1a;FdfsServerException:错误:28&#xff0c;错误信息:没有足够的存储空间。 解决 根据异常信息判断是文件服务器可用内存不够了&#xff0c;首先登录文件服务器&#xff0c;使用df -h命令查看一…

5.合并两个有序数组

文章目录 题目简介题目解答解法一 &#xff1a;合并后排序解法二&#xff1a;双指针排序 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 合并两个有序数组 相关的讲解&#xff01;&#x1f600; 题目简介 题目解答 解法一 &#xff1a;合并后排序 假设我们要合…

NXP i.MX8系列平台开发讲解 - 3.11 Linux PCIe设备调试(WIFI模块)

专栏文章目录传送门&#xff1a;返回专栏目录 文章目录 目录 1. WIFI 模块简单介绍 2. 设备驱动原理介绍 3. PCIE WIFI驱动实例分析 3.1 查看设备树 3.2 wifi 设备驱动代码分析 3.3 内核配置选项 4. WIFI驱动调试相关 根据前面对PCIe的讲解&#xff0c;对PCIe的整体都有…

练习题(2024/5/7)

1验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 …

c++ cpp 在类中执行线程 进行恒定计算

在编程中&#xff0c;顺序执行是常见的模式&#xff0c;但是对cpu的利用率不是很高&#xff0c;采用线程池&#xff0c;又太麻烦了&#xff0c;原因是还得不断地把任务拆分&#xff0c;扫描返回值。 如果 初始化n个类的时候&#xff0c;传递数据自身即可异步计算&#xff0c;那…

JavaWEB 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…