当前位置:网站首页>华为云14天鸿蒙设备开发-Day1源码获取
华为云14天鸿蒙设备开发-Day1源码获取
2022-07-29 05:22:00 【Q-Stark】
目录
前言
上一篇搭建好了环境,接下来就要干代码了,首先我们得有源码,然后在Windows上能打开编辑,接下来我们尝试一下。
先给出几个开源网站
源码开源仓库:https://gitee.com/openharmony
设备开发学习网站:https://device.harmonyos.com/cn/home
HPM网站:https://developer.harmonyos.com/cn/home/
一、获取源码
1.源码获取方式
1.1 从镜像站点获取
从镜像站点下载压缩文件,然后和上一篇一样,创建好一个code目录,把压缩文件拖放过去解压。
https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
a.在根目录下创建代码目录
mkdir code #创建一个名为code的文件夹
cd code/
ls
mkdir code_1
cd code_1/
ls#查看当前目录下的内容
b.直接从Windows中拖放过去
c.解压到当前目录
tar -xvf code-1.0.tar.gz
也可以在Linux终端进入到指定目录,使用wget指令获取压缩包,再执行解压操作。
1.2 从HPM网站组件式获取
HPM网站:https://hpm.harmonyos.com/#/cn/home
软环境要求:Linux环境安装12.13.0+的Node.js
所以采用此方式要进行以下安装
a.安装Node.js
#下载Nodejs
wget https://nodejs.org/dist/v14.15.1/node-v14.15.1-linux-x64.tar.xz
#解压
tar -xvf node-v14.15.1-linux-x64.tar.xz-C ~/
#使用 ln 命令来设置软连接
sudo ln -s ~/node-v14.15.1-linux-x64/bin/npm /usr/bin/
sudo ln -s ~/node-v14.15.1-linux-x64/bin/node /usr/bin/
b.安装hpm命令行工具
npm install -g @ohos/hpm-cli
sudo ln -s ~/node-v14.15.1-linux-x64/bin/hpm /usr/bin/
c.通过hpm install 命令安装组件
在Windows系统中从HPM网站上选择自己所需的组件,并点击直接下载,再拖放到Linux虚拟机的指定目录下,解压后执行hpm的安装指令(hpm install),就会自动去下载组件并安装。拖放到解压可参考上一种方式内的命令。
cd code/
ls
mkdir code_2
cd code_2/
unzip demo.zip
cd demo/
hpm install
1.3 用包管理器命令行获取
适用场景
- 用户已通过组件式获取的方式获取源码,需要对源码中的某个或某几个组件进行独立升级。
- 用户已经比较熟悉HarmonyOS系统的开发并且熟练掌握命令行工具的使用。
此方法也需先安装第二种方式中的工具。
例如获取的组件名为@bearpi/bearpi_hm_nano,具体操作如下:
1、进入开发目录,执行如下命令,采用默认模板创建一个开发项目
cd code/
ls
mkdir code_3
cd code_3/
hpm init -t default
2、执行如下命令,安装组件@bearpi/bearpi_hm_nanohpm install @bearpi/bearpi_hm_nano
3、工具会自动从服务器下载所有依赖的组件,下载成功则会显示Installed.
从HPM网站下载组件时可自定义添加其他组件包,默认依赖组件包不可删除。
1.4从代码仓库获取
下载Harmony OS源码
在此之前需要先注册gitee账号,并配置邮箱。
源码链接:https://gitee.com/bearpi/bearpi-hm_nano
先在Linux下创建一个目录用来存放代码。
在Linux终端下执行如下命令
git config --global user.name "yourname"
git config --global user.email “your-email-address"
git clone https://gitee.com/bearpi/bearpi-hm_nano.git -b master
编译命令
python build.py BearPi-HM_Nano
这种方式比较简单,我采用的是这种方式。注意需要先安装git。
sudo apt install git
二、在Windows中打开工程源码
源码目录简介
1.映射工程源码
目前HarmonyOS源码只支持在Linux系统中进行编译,可以将Linux环境下的工程目录映射到Windows环境下,然后使用VS Code打开,并在Windows环境下进行烧录和调试。此种共享文件夹方式需使用samba。映射方法如下:
1、在Linux上,设置HarmonyOS源码所在文件夹为共享文件夹。
#安装Samba
sudo apt-get install samba
#配置Samba
sudo vim /etc/samba/smb.conf
#添加以下内容
[HarmonyOS_Code]
path = /home/YOUR_USER_NAME/code
available = yes
valid users = YOUR_USER_NAME
read only = no
browsable = yes
public = yes
writable = yes
#设置Samba用户名和密码
sudo smbpasswd -a YOUR_USER_NAME
#重启samba服务
sudo /etc/init.d/smbd restart
2.导入工程源码
- 在Windows上,鼠标右键单击“此电脑”,选择“映射网络驱动器(N)。
- 选择一个未使用的驱动器,并设置HarmonyOS源码所在的路径,格式为“\Linux IP地址\共享文件夹名称”,如:\192.168.0.224\HarmonyOS_Code,点击“完成”。
3.打开工程源码
双击进入共享文件夹,直接把对应的目录拖放到VS CODE里就可以打开了。
三、Hello World
1.编写 Hello World程序
- 新增my_app文件夹
在./applications/BearPi/BearPi-HM_Nano/sample路径下新建一个my_app目录,用于存放业务源码文件。 - 新增hello_world.c文件
在./applications/BearPi/BearPi-HM_Nano/sample/my_app路径下新建一个hello_world.c文件,该文件为业务源码文件。 - 新增BUILD.gn文件
在./applications/BearPi/BearPi-HM_Nano/sample/my_app路径下新建一个BUILD.gn文件,该文件为业务源码编译脚本。
这个步骤有点类似用Cmake。
然后就开始写代码。
业务代码
在hello_world.c中新建业务入口函数Hello_World,并实现业务逻辑。并在代码最下方,使用HarmonyOS启动恢复模块接口APP_FEATURE_INIT()启动业务。(APP_FEATURE_INIT定义在ohos_init.h文件中)
#include <stdio.h>
#include "ohos_init.h"
void Hello_World(void)
{
printf("Hello World!\r\n");
}
APP_FEATURE_INIT(Hello_World);
gn文件代码
须知: Hi3861平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,会导致商业分发时被GPL V3污染。
- 编写用于将业务构建成静态库的BUILD.gn文件
在./applications/BearPi/BearPi-HM/sample/my_app下的BUILD.gn文件中添加如下代码。
static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include",
]
}
- static_library中指定业务模块的编译结果,为静态库文件
libmyapp.a,开发者根据实际情况完成填写。 - sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//“则表示绝对路径(此处为代码根路径),若不包含”//" 则表示相对路径。
- include_dirs中指定source所需要依赖的.h文件路径。
- 编写模块BUILD.gn文件,指定需参与构建的特性模块。
在./applications/BearPi/BearPi-HM/sample下的BUILD.gn文件中添加如下代码。
- my_app是相对路径,指向./applications/BearPi/BearPi-HM/sample/my_app/BUILD.gn。
- myapp是目标,指向./applications/BearPi/BearPi-HM/sample/my_app/BUILD.gn中的static_library(“myapp”)。
2.编译烧录程序
设备管理器查看一下板子的COM口

打开HiBurn改端口,波特率设置为921600
选择烧录文件

勾选Auto burn,点击connect,按下开发板reset按键,开始下载。

下载完成后,点击disconnect。
3.调试
- 在Visual Studio Code底部,点击“串口”按钮图标。
- 输入端口号,其他参数保持默认配置。
- 按下开发板RESET按键,即可输出日志信息。
边栏推荐
- 2022春招——禾赛科技FPGA技术岗(一、二面,收集于:数字IC打工人及FPGA探索者)
- Set automatic build in idea - change the code, and refresh the page without restarting the project
- 三、如何读取视频?
- Migration learning - geodesic flow kernel for unsupervised domain adaptation
- 2021-06-10
- ABSA1: Attentional Encoder Network for Targeted Sentiment Classification
- 2、 Summary of deep learning data enhancement methods
- The third week of postgraduate freshman training: resnet+resnext
- iSCSI vs iSER vs NVMe-TCP vs NVMe-RDMA
- ML10自学笔记-SVM
猜你喜欢

迁移学习——Transfer Joint Matching for Unsupervised Domain Adaptation

Typical case of xdfs & Aerospace Institute HPC cluster

Low rank transfer subspace learning

ML16-神经网络(2)

【卷积核设计】Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs

【Transformer】AdaViT: Adaptive Tokens for Efficient Vision Transformer

虚假新闻检测论文阅读(三):Semi-supervised Content-based Detection of Misinformation via Tensor Embeddings

迁移学习——Transitive Transfer Learning

D3.js vertical relationship diagram (with arrows and text description of connecting lines)

神经网络相关知识回顾(PyTorch篇)
随机推荐
ML17-神经网络实战
Beijing Baode & taocloud jointly build the road of information innovation
迁移学习——Transfer Joint Matching for Unsupervised Domain Adaptation
[semantic segmentation] Introduction to mapillary dataset
Discussion on the design of distributed full flash memory automatic test platform
ML8自学笔记
1、 What is the difference between transfer learning and fine tuning?
一、Focal Loss理论及代码实现
引入Spacy模块出错—OSError: [E941] Can‘t find model ‘en‘.
ML自学笔记5
[target detection] KL loss: bounding box progression with uncertainty for accurate object detection
虚假新闻检测论文阅读(一):Fake News Detection using Semi-Supervised Graph Convolutional Network
【语义分割】语义分割综述
Ffmpeg creation GIF expression pack tutorial is coming! Say thank you, brother black fly?
AttributeError: module ‘tensorflow‘ has no attribute ‘placeholder‘
二、深度学习数据增强方法汇总
2、 Summary of deep learning data enhancement methods
ASM piling: after learning ASM tree API, you don't have to be afraid of hook anymore
Operation commands in anaconda, such as removing old environment, adding new environment, viewing environment, installing library, cleaning cache, etc
第2周学习:卷积神经网络基础