OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录 原创 精华
一、源码编译
本次源码编译使用Ubuntu20.0.4版本进行编译,硬件环境Win10,虚拟机配置8G内存、4核CPU(腾讯云服务器2G内存版本内存太小编译不通过)。
1、源码下载及基础软件配置参考Hi3516系列小型系统源码编译及烧录
编译好的固件: https://yunpan.midea.com/#/sharelist?sharekey=reuP4tpjqN
2、安装依赖工具(标准系统编译需要更多的依赖工具)
安装命令如下
sudo apt-get install binutils git-core git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 python2.7 python-minimal
注:python-minimal安装过程中失败,但其实编译未受影响
3、获取标准系统源码(获取方式和小系统一致,一套代码维护)
4、获取prebuilts
切换到OpenHarmony工作目录。
cd OpenHarmony
下载脚本。
curl https://gitee.com/landwind/script-tools/raw/master/Shell/OpenHarmony/OpenHarmony_2.0_canary_prebuilts_download.sh >./prebuilts_download.sh
下载并解压prebuilts压缩包到指定位置。
bash ./prebuilts_download.sh
二进制默认存放在与OpenHarmony同目录下的OpenHarmony_2.0_canary_prebuilts下,如需修改默认位置,请编辑prebuilts_download.sh修改bin_dir值。
5、配置NodeJS环境和获取Node_modules依赖包
为了编译JS Framework,开发者需要在Linux服务器下载配置NodeJS(注意:步骤中OpenHarmony目录指代当前工程的根目录,可自定义),具体操作如下:
开发者在Linux服务器下载Nodejs。
mkdir -p OpenHarmony/prebuilts/build-tools/common/nodejs #创建nodejs目录
cd OpenHarmony/prebuilts/build-tools/common/nodejs #进入nodejs目录
wget --no-check-certificate https://nodejs.org/download/release/v12.18.4/node-v12.18.4-linux-x64.tar.gz #下载nodejs
tar -zxvf node-v12.18.4-linux-x64.tar.gz #解压nodejs压缩包
cd - #切换到之前的目录
配置NodeJS环境变量,下载node_modules包。
cd OpenHarmony/third_party/jsframework #进入jsframework目录
export PATH=../../prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin:${PATH} #设置NodeJS环境变量
npm install #下载node_modules包
cd - #切换到之前的目录
把下载的node_modules包放入OpenHarmony代码的prebuilts/build-tools/common/js-framework目录下。
mkdir -p OpenHarmony/prebuilts/build-tools/common/js-framework #创建js-framework目录
cp -rp OpenHarmony/third_party/jsframework/node_modules OpenHarmony/prebuilts/build-tools/common/js-framework/
6、开始编译
使用Docker环境的开发者可参照Docker使用指导进行编译。采用安装包方式的开发者在Linux环境进行如下操作。
进入源码根目录,执行如下命令进行版本编译。
./build.sh --product-name Hi3516DV300
{product_name}为当前版本支持的平台。
检查编译结果。编译完成后,log中显示如下:
copy modules...
[12937/12939] STAMP obj/build/ohos/packages/phone_install_modules.stamp
[12938/12939] STAMP obj/build/ohos/packages/make_packages.stamp
[12939/12939] STAMP obj/build/core/gn/packages.stamp
used: 3591 seconds
pycache statistics
manage pycache contents
pycache daemon exit
c targets overlap rate statistics
subsystem files NO. percentage builds NO. percentage overlap rate
third_party 4579 60.3% 4740 61.2% 1.04
aafwk 107 1.4% 107 1.4% 1.00
account 13 0.2% 13 0.2% 1.00
ace 765 10.1% 765 9.9% 1.00
appexecfwk 234 3.1% 234 3.0% 1.00
communication 323 4.3% 323 4.2% 1.00
developtools 65 0.9% 65 0.8% 1.00
distributeddatamgr 286 3.8% 286 3.7% 1.00
distributedschedule 27 0.4% 27 0.3% 1.00
global 17 0.2% 17 0.2% 1.00
graphic 33 0.4% 33 0.4% 1.00
hdf 43 0.6% 43 0.6% 1.00
hiviewdfx 98 1.3% 98 1.3% 1.00
miscservices 5 0.1% 5 0.1% 1.00
multimedia 38 0.5% 38 0.5% 1.00
multimodalinput 29 0.4% 29 0.4% 1.00
notification 37 0.5% 37 0.5% 1.00
powermgr 48 0.6% 48 0.6% 1.00
security 169 2.2% 169 2.2% 1.00
startup 51 0.7% 51 0.7% 1.00
telephony 200 2.6% 200 2.6% 1.00
updater 85 1.1% 85 1.1% 1.00
utils 211 2.8% 211 2.7% 1.00
wpa_supplicant-2.9 103 1.4% 103 1.3% 1.00
c overall build overlap rate: 1.02
post_process
build_target=''
/home/ubuntu/harmonyos/OpenHarmony/out/ohos-arm-release/packages/phone/images/root /home/ubuntu/harmonyos/OpenHarmony
/home/ubuntu/harmonyos/OpenHarmony
build vendor image successful.
build system image successful.
build userdata image successful.
ohos_build_out_dir = /home/ubuntu/harmonyos/OpenHarmony/out/ohos-arm-release/packages/phone
build updater image successful.
=====build Hi3516DV300 successful.
2021-07-10 11:45:59
++++++++++++++++++++++++++++++++++++++++
root@ubuntu:/home/ubuntu/harmonyos/OpenHarmony#
编译所生成的文件都归档在out/ohos-arm-release/目录下,结果镜像输出在 out/ohos-arm-release/packages/phone/images/ 目录下。
二、烧录
Hi3516系列支持串口、USB、网线三种方式烧录,但是USB、网线烧录都需要同时连上串口;串口烧录太慢(不推荐),USB烧录没有成功。
刷机包可以从论坛已经编译好的镜像下载体验
https://pan.baidu.com/s/1rGf75ifUCRZ1btJjsKkiCw
提取码:ohos
1、请连接好电脑和待烧录开发板,以Hi3516DV300为例,需要同时连接串口、网口和电源;
2、打开电脑的设备管理器,查看并记录对应的串口号;
3、将网线连接电脑,更改电脑IP地址
4、打开DevEco Device Tool,创建一个新工程
选择开发版芯片为Hi3516DV300,工程名自取,组件选为无;
5、在Projects中,点击Settings打开工程配置界面
6、在Partition Configuration页签中,按照下表内容填写烧录文件信息,包括:
Name | Binary | Memory | System | Address | Length | Board | Type |
---|---|---|---|---|---|---|---|
fastboot | 选择“u-boot-hi3516dv300_emmc.bin” | emmc | none | 0x000000 | 0x100000 | 固定选择“hi3516dv300” | NA |
boot | 选择“uImage” | emmc | none | 0x100000 | 0xf00000 | NA | |
updater | 选择“updater.img” | emmc | ext3/4 | 0x1000000 | 0x1400000 | NA | |
misc | 空白,不用选择 | emmc | none | 0x2400000 | 0x100000 | NA | |
system | 选择“system.img” | emmc | ext3/4 | 0x2500000 | 0xceb00000 | NA | |
vendor | 选择“vendor.img” | emmc | ext3/4 | 0xd1000000 | 0x10000000 | NA | |
userdata | 选择“userdata.img” | emmc | ext3/4 | 0xe1000000 | 0x5b800000 | NA |
7、在“hi3516dv300”页签,设置烧录选项,包括upload_port、upload_partitions和upload_protocol
- upload_port:选择步骤2中查询的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-net”。
- upload_partitions:选择待烧录的文件,包括fastboot、boot、updater、misc、system、vendor和userdata。
注意upload_partitions,需要烧录几个就选择几个,如果是第一次从小系统,烧录到标准系统需要全部烧录;
8、设置网口烧录的IP地址信息,设置如下选项:
- upload_net_server_ip:选择步骤3中设置的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
9、所有的配置都修改完成后,在工程配置页签的顶部,点击Save进行保存。
10、擦除fastboot
Windows上擦除成功之后,可能无法继续烧录,可以使用Hitools工具烧录
11、开始烧录,点击Upload直接开始烧录
12、出现下面提示后,断开电源再上电,重新上电后会开始传输数据开始烧录
13、大概十分钟左右烧录成功
烧录成功会直接开机,标准系统样式如下
三、烧录过程中遇到的问题
1、标准系统更新系统烧录不能点亮屏幕,启动日志如下,这是因为烧录系统时,没有擦除fastboot导致的;
解决方案:先擦除fastboot,然后再进行烧录;如果擦除后不能烧录,可以参考下面第二点解决方案;
@@@ bootArgs from misc = mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused androidboot.selinux=permissive skip_initramfs rootdelay=10 init=/init root=/dev/mmcblk0p5 rootfstype=ext4 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updel),20M(updater),1M(misc),3307M(system),256M(vendor),-(userdata)
@@@ bootArgs final from emmc = console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw
Net: eth0
Error: eth0 address not set.
Hit any key to stop autoboot: 0
MMC read: dev # 0, block # 2048, count 18432 ... 18432 blocks read: OK
45.20 MB/s
## Booting kernel from Legacy Image at 80000000 ...
Image Name: Linux-4.19.155
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4892948 Bytes = 4.7 MiB
Load Address: 80008000
Entry Point: 80008000
Loading Kernel Image
Starting kernel ...
2、烧录过程中擦除fastboot之后,不能继续烧录,如果想恢复原来系统,可以重新烧录fastboot来恢复系统;
a、使用hitool烧写
b、使用DevEco Device Tool烧写(只选择烧录fastboot)
小型系统初次启动或修改启动参数都需要修改U-boot的bootcmd及bootargs内容(具体参考OpenHarmony小型系统源码及烧录)
3、Hi3516开发版硬件注意事项
1、hi3516开发版有两个USB口,均可以供电
2、如使用电源供电,注意电源开关,在使用过程中发现电源按钮变化(以前是按下供电,后面变成松开供电)
由于开发版硬件缺陷没有指示灯指示是否已经上电,可以通过Monitor来验证,打开Monitor后观察打开开关之后是否有日志信息;