手把手教你搭建鸿蒙hi3518开发和运行环境
Posted dxmcu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你搭建鸿蒙hi3518开发和运行环境相关的知识,希望对你有一定的参考价值。
前言
学习C语言,C++语言,数据结构和算法,操作系统,网络,驱动,设计模式等知识
用鸿蒙来强化就太对了。本文教你一步一步搭建鸿蒙的开发和运行环境,有点啰嗦,适合小白。
本文所涉及的所有工具都可以在这里找到(提取码ue2a)
具体有下列步骤:
- 组装开发板
- 连接开发板
- 安装串口驱动
- 安装USB驱动
- 安装烧录工具
- 擦除引导程序
- 烧录系统
- 登录开发板
- 修改OS启动地址
- 运行可执行程序
- 安装VMWARE
- 安装编译服务器
- 访问编译服务器
- 编译鸿蒙产品
- 编译鸿蒙组件
- 打通开发板网络
- 部署NFS
- 新增自定义组件
组装开发板
我们选用HiSpark IPC DIY Camera产品。内部含hi3518ev300芯片。
请参考产品的安装说明书。
或者参考安装视频指导
连接开发板
开发板和PC的连接关系如下图。2条usb线(产品包装中的),其中一个三针插头,一个四针插头。
安装串口驱动
请双击USB-to-Serial Comm Port.exe。进行串口驱动安装,安装完成后。在设备管理器中应该能看到下面这样的COM接口,你的COM接口编号可能有所不同。表明串口驱动安装成功。
安装USB驱动
注意:有2个USB驱动需要安装
双击zadig-2.5.exe安装通用USB驱动,点击中间的Install
安装第2个USB驱动,这个驱动的名称是: HiUSBBurnDriver. 对应的安装文件已经放在网盘中,请自行安装。
上述2个驱动都安装成功以后,才能正常的进行USB烧录(往开发板烧录鸿蒙系统)。
安装烧录工具
直接解压HiTool-HM-5.4.9-win32-x86_64.zip文件。然后双击其中的HiTool.exe. 界面如下图。然后先将芯片切换到3518ev300
擦除引导程序
然后就是擦除uboot了,记得使用串口来擦除
有几点需要注意
- 由于编译服务器还没有创建,所以我把自己编译好的文件放网上了,你可以下载
- 文件路径根据你自己的实际路径,下载下来后存放的位置
- COM口根据你之前设备管理器看到的那个CH340口选择
- 确保顶部选中的芯片是3518ev300
- 传输方式选择串口
- 按分区烧写
- 器件类型spi nor
- 开始地址0,长度1M
- 点击擦除后10秒内拔插usb电源线接口(即接4个针脚的那个usb口,小的那个usb头),让板子重启
很快就能看到擦除成功的提示
烧录系统
主要注意如下几点
- 使用usb口烧录(不是串口)
- 现在需要烧录4个文件(通过右侧绿色+可以添加文件)
- 每个文件的名称,器件类型,地址,长度要填写正确
- 最后点击烧写
然后等待烧写成功
如果你的烧写不成功,请检查之前的usb驱动是否已安装。
登录开发板
鸿蒙系统烧录好以后,就可以进去看一下鸿蒙系统的模样了。
双击MobaXterm_Personal_20.2.exe. 也可以用你自己喜欢的终端工具
然后点击Session, 在弹出的窗口中填好相关字段
点击OK以后,会进入下面这个界面
这里是uboot程序的界面,还没有进入鸿蒙OS,原因是uboot此时不知道鸿蒙OS的启动地址。
然后我们设置启动地址
设置OS启动地址
setenv bootcmd "sf probe 0;sf read 0x40000000 0x100000 0x600000;go 0x40000000";
setenv bootargs "console=ttyAMA0,115200n8 root=flash fstype=jffs2 rw rootaddr=7M rootsize=8M";
保存配置
saveenv
然后重启
然后,很快就可以看到鸿蒙OS起来了
如果你没有看到OHOS#字样,请按下几次enter键。接下来,我们手动运行一个鸿蒙的程序。
运行可执行程序
进入bin目录,运行writer程序(这个程序是我新增的,如果你的开发板上没有,你可以运行./camera_app程序)
创建编译服务器
为了省去搭建编译环境的繁琐,本次将一个已经搭建好的编译服务器制作成镜像。我们只需要使用这个镜像即可获得编译环境。
镜像文件比较大(超过8G),请直接找老师获取,也可以去前言提到的地方下载(建议晚上睡觉时下载)。
本次使用的Ubuntu是不带桌面环境的。内部已经安装好HarmonyOS的编译环境,并且安装了samba文件共享工具。方便windows访问。
请先安装VMWARE WorkStation软件
然后打开它, 选择 文件-->打开
然后开始了服务器创建过程,这个过程比较漫长,请保持耐心。
访问服务器
服务器创建完成后。然后我们对它进行上电启动
等待服务器开机。1分钟内一般就能正常起来。这个过程中,注意保持网线插入,因为虚拟机和PC之间是通过有线网卡桥接的。启机过程有软件会探测网络是否在,否则会很慢。
当屏幕输出变慢后,我们就可以访问它了,当然也可以在黑窗口里面直接键入各种命令,不过不方便。
把鼠标放入黑窗口,点击以后,鼠标焦点就进入黑窗口了,让焦点退出来的方法是按CTRL+g
如果想在黑窗口操作linux相关命令,则键入用户名compile 密码compile
一般我们不在黑窗口操作。
我们需要如下2种方法来访问虚拟机:
- 通过ssh访问,即可以远程登录虚拟机的shell,并执行命令
- 通过文件共享访问,可以在windows上查看和修改虚拟机中的文件
注意:
- 当前创建的虚拟机采用的是桥接模式,它的IP地址为192.168.2.20。你需要确保虚拟机中的IP地址和自己PC的IP地址在同一个网段。(最简单的方法是在自己的网卡上添加一个192.168.2.X网段的IP地址)。Windows添加IP地址的方法请自行查阅。
- 如果多台编译服务器在同一个局域网络,那么IP地址会冲突,因为都是192.168.2.20。所以,需要对地址进行修改。
SSH访问
点击OK以后,就登录到了编译服务器的shell
文件共享访问
为了从Windows访问编译服务器上的源代码和编译出的目标文件,在编译服务器上已经安装好了samba文件共享服务,只需要在windows这边映射网络驱动器即可。按如下方法操作。
右键点击 计算机 ,选择映射网络驱动器。
然后就可以在windows看到编译服务器上的内容了。
现在开始,你就可以像操作windows的文件一样来操作编译服务器里面的文件了(比如通过Visual Studio来修改服务器上的C/C++代码文件)。
编译产品
整个工程是存放在~/harmonyos/openharmony目录,
得先进入这个目录。
然后执行python脚本来编译产品。如下红色框即编译整个产品。
特别提醒:
python build.py ipcamera_hi3518ev300 -b debug
编译debug版本才会含有调试的shell,如果省略-b debug,无法通过shell命令行执行命令。
大约需要10多分钟完成产品编译,编译成功后,结果如下。
然后在windows文件夹下可以看到编译出来的结果
每次系统烧录时,将上述3个文件以及uboot文件(Z:\\vendor\\hisi\\hi35xx\\hi3518ev300\\uboot\\out\\boot\\u-boot-hi3518ev300.bin)
拷贝到windows某个目录下(比如我的例子中的D:\\BIN),然后用HiTool.exe来烧录。
更新源码
鸿蒙系统目前更新比较频繁,如果需要获取最新版本,请执行下面的命令更新源码。
这里有一个问题:编译服务器预设的192.168.2.20无法上网。这个时候你可以再添加1个IP地址(添加可以上网的IP地址)。然后再执行下面2条命令
cd ~/harmonyos/openharmony
repo sync -c
。。。待贴图。。。
编译组件
编译完整产品比较耗时,大多数时候我们修改的代码较少,只需要编译指定的组件就行了。
由-T指定编译一个已经存在的组件,只编译一个小组件,速度飞快。
注意,编译组件的时候 -T 后面的路径需要使用全路径。如何确定-T后面的参数?请看下图
文本编辑器(如notepad++)打开build/lite/product/ ipcamera_hi3518ev300.json文件
这个组件涉及的代码文件是哪些呢,继续看对应目录的BUILD.gn文件,对于此例子为//applications/sample/camera/app
生成的程序在下面这个目录
打通网络
设备本身没有以太口,只有wifi接口。但默认情况下wifi是无法工作的。
输入ifconfig你会看到wlan0接口IP地址为0
需要做如下工作才能让wifi正常运行起来。
- 配置SSID和密码
- 修改wpa_sample.c源码
- 配置自启动
- 编译系统
配置SSID和密码
修改applications\\sample\\camera\\communication\\wpa_supplicant\\config\\ wpa_supplicant.conf
修改后的内容如下。这个文件的目的是配置wifi用户名和密码
country=GB
ctrl_interface=udp
network=
ssid="teacher"
psk="12345678qwe"
注意
- =号2端不要留空格
- ssid和psk按你自己的实际进行配置,比如你手机热点的网络名和密码。
修改源码
修改applications\\sample\\camera\\communication\\wpa_supplicant\\src\\wpa_sample.c源代码
只修改main函数部分。这个程序的目的是读取wifi用户名和密码配置文件,并进行wifi连接。
int main(int argc, char *argv[])
g_wpaArgc = argc;
for (int i = 0; i < g_wpaArgc; i++)
g_wpaArg[i] = argv[i];
g_wpaArgc=5;
g_wpaArg[1] = "-i";
g_wpaArg[2]="wlan0";
g_wpaArg[3]="-c";
g_wpaArg[4]="/etc/wpa_supplicant.conf";
int ret = pthread_create(&g_wpaThread, NULL, ThreadMain, NULL);
if (ret != 0)
printf("[WpaSample]create thread failed error:%s.\\n", strerror(ret));
return 1;
pthread_join(g_wpaThread, NULL);
return 0;
复制
配置自启动
刚才修改的main会生成一个可执行程序,这个程序我们需要把它配置在启动脚本中,这样每次板子重启都会运行这个程序
修改文件vendor\\huawei\\camera\\init_configs\\ init_liteos_a_3518ev300.cfg 。 红色部分为新增
"jobs" : [
"name" : "pre-init",
"cmds" : [
"mkdir /storage/data/log",
"chmod 0755 /storage/data/log",
"chown 4 4 /storage/data/log",
"mkdir /storage/data/softbus",
"chmod 0700 /storage/data/softbus",
"chown 7 7 /storage/data/softbus",
"mkdir /sdcard",
"chmod 0777 /sdcard",
"mount vfat /dev/mmcblk0 /sdcard rw,umask=000",
"mount vfat /dev/mmcblk1 /sdcard rw,umask=000"
]
,
"name" : "init",
"cmds" : [
"start shell",
"start apphilogcat",
"start foundation",
"start bundle_daemon",
"start media_server",
"start appspawn",
"start wpa_supplicant"
]
,
"name" : "post-init",
"cmds" : [
"chown 0 99 /dev/dev_mgr",
"chown 0 99 /dev/hdfwifi",
"chown 0 99 /dev/gpio",
"chown 0 99 /dev/i2c-0",
"chown 0 99 /dev/i2c-1",
"chown 0 99 /dev/i2c-2",
"chown 0 99 /dev/uartdev-0",
"chown 0 99 /dev/uartdev-1",
"chown 0 99 /dev/uartdev-2",
"chown 0 99 /dev/spidev0.0",
"chown 0 99 /dev/spidev1.0",
"chown 0 99 /dev/spidev1.1"
]
],
"services" : [
"name" : "foundation",
"path" : "/bin/foundation",
"uid" : 7,
"gid" : 7,
"once" : 0,
"importance" : 1,
"caps" : [10, 11, 12, 13]
,
"name" : "shell",
"path" : "/bin/shell",
"uid" : 2,
"gid" : 2,
"once" : 0,
"importance" : 0,
"caps" : [4294967295]
,
"name" : "appspawn",
"path" : "/bin/appspawn",
"uid" : 1,
"gid" : 1,
"once" : 0,
"importance" : 0,
"caps" : [2, 6, 7, 8, 23]
,
"name" : "apphilogcat",
"path" : "/bin/apphilogcat",
"uid" : 4,
"gid" : 4,
"once" : 1,
"importance" : 0,
"caps" : []
,
"name" : "media_server",
"path" : "/bin/media_server",
"uid" : 5,
"gid" : 5,
"once" : 1,
"importance" : 0,
"caps" : []
,
"name" : "wms_server",
"path" : "/bin/wms_server",
"uid" : 6,
"gid" : 6,
"once" : 1,
"importance" : 0,
"caps" : []
,
"name" : "bundle_daemon",
"path" : "/bin/bundle_daemon",
"uid" : 8,
"gid" : 8,
"once" : 0,
"importance" : 0,
"caps" : [0, 1]
,
"name": "wpa_supplicant",
"path": "/bin/wpa_supplicant",
"uid" : 0,
"gid" : 0,
"once" : 1,
"importance" : 0,
"caps": []
]
让wifi功能参与编译
编译wifi模块的时候,要修改build/lite/product/ ipcamera_hi3518ev300.json文件,才能让wpa_supplicant这个模块参与编译,修改如下:
编译系统
此时我们配置好了wifi用户名和密码,也修改了wifi启动程序并设置好了启动脚本。接下来我们把这些修改编译到系统中,然后再烧录到板子上
当完整编译系统,烧录好以后,新版本的系统起来以后,我们可以看到wlan0 的接口的IP地址正常获取到了。
部署NFS
当网络打通以后,我们就可以部署NFS(网络文件系统)了。部署NFS最大的好处是,可以将windows的某个文件夹当成开发板上的文件夹来使用,这样,不需要把编译的程序手动拷贝到开发板去,就可以执行编译出来的程序。
主要分为如下3个过程
- 安装NFS Server
- 配置和启动Server
- 挂载NFS
安装NFS
在PC上安装NFS服务器。双击nfs1169.exe进行安装,同常规软件安装方法。
配置NFS
安装好以后,就是配置了,这一步稍微麻烦。首先需要以管理员身份运行NFS服务器
开始-->所有程序-->haneWIN 以上是关于手把手教你搭建鸿蒙hi3518开发和运行环境的主要内容,如果未能解决你的问题,请参考以下文章