评论

收藏

[HarmonyOS] OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录

移动开发 移动开发 发布于:2021-07-22 15:29 | 阅读数:366 | 评论:0

一、源码编译
本次源码编译使用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目录  
<p>cd OpenHarmony/prebuilts/build-tools/common/nodejs    #进入nodejs目录</p>
<p>wget --no-check-certificate https://nodejs.org/download/release/v12.18.4/node-v12.18.4-linux-x64.tar.gz #下载nodejs</p>
<p>tar -zxvf node-v12.18.4-linux-x64.tar.gz          #解压nodejs压缩包</p>
cd -                            #切换到之前的目录
配置NodeJS环境变量,下载node_modules包。
cd OpenHarmony/third_party/jsframework         #进入jsframework目录
<p>export PATH=../../prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin:${PATH} #设置NodeJS环境变量</p>
<p>npm install                       #下载node_modules包</p>
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...
<p>[12937/12939] STAMP obj/build/ohos/packages/phone_install_modules.stamp</p>
<p>[12938/12939] STAMP obj/build/ohos/packages/make_packages.stamp</p>
<p>[12939/12939] STAMP obj/build/core/gn/packages.stamp</p>
<p>used: 3591 seconds</p>
<p>pycache statistics</p>
<p>manage pycache contents</p>
<p>pycache daemon exit</p>
<p>c targets overlap rate statistics</p>
<p>subsystem files NO. percentage builds NO. percentage overlap rate</p>
<p>third_party 4579 60.3% 4740 61.2% 1.04</p>
<p>aafwk 107 1.4% 107 1.4% 1.00</p>
<p>account 13 0.2% 13 0.2% 1.00</p>
<p>ace 765 10.1% 765 9.9% 1.00</p>
<p>appexecfwk 234 3.1% 234 3.0% 1.00</p>
<p>communication 323 4.3% 323 4.2% 1.00</p>
<p>developtools 65 0.9% 65 0.8% 1.00</p>
<p>distributeddatamgr 286 3.8% 286 3.7% 1.00</p>
<p>distributedschedule 27 0.4% 27 0.3% 1.00</p>
<p>global 17 0.2% 17 0.2% 1.00</p>
<p>graphic 33 0.4% 33 0.4% 1.00</p>
<p>hdf 43 0.6% 43 0.6% 1.00</p>
<p>hiviewdfx 98 1.3% 98 1.3% 1.00</p>
<p>miscservices 5 0.1% 5 0.1% 1.00</p>
<p>multimedia 38 0.5% 38 0.5% 1.00</p>
<p>multimodalinput 29 0.4% 29 0.4% 1.00</p>
<p>notification 37 0.5% 37 0.5% 1.00</p>
<p>powermgr 48 0.6% 48 0.6% 1.00</p>
<p>security 169 2.2% 169 2.2% 1.00</p>
<p>startup 51 0.7% 51 0.7% 1.00</p>
<p>telephony 200 2.6% 200 2.6% 1.00</p>
<p>updater 85 1.1% 85 1.1% 1.00</p>
<p>utils 211 2.8% 211 2.7% 1.00</p>
<p>wpa_supplicant-2.9 103 1.4% 103 1.3% 1.00</p>
<p>c overall build overlap rate: 1.02</p>
<p>post_process</p>
<p>build_target=''</p>
<p>/home/ubuntu/harmonyos/OpenHarmony/out/ohos-arm-release/packages/phone/images/root /home/ubuntu/harmonyos/OpenHarmony</p>
<p>/home/ubuntu/harmonyos/OpenHarmony</p>
<p>build vendor image successful.</p>
<p>build system image successful.</p>
<p>build userdata image successful.</p>
<p>ohos_build_out_dir = /home/ubuntu/harmonyos/OpenHarmony/out/ohos-arm-release/packages/phone</p>
<p>build updater image successful.</p>
<p>=====build Hi3516DV300 successful.</p>
<p>2021-07-10 11:45:59</p>
<p>++++++++++++++++++++++++++++++++++++++++</p>
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为例,需要同时连接串口、网口和电源;
DSC0000.png


2、打开电脑的设备管理器,查看并记录对应的串口号;
DSC0001.png


3、将网线连接电脑,更改电脑IP地址
DSC0002.png


4、打开DevEco Device Tool,创建一个新工程
DSC0003.png
选择开发版芯片为Hi3516DV300,工程名自取,组件选为无;

DSC0004.png


5、在Projects中,点击Settings打开工程配置界面
DSC0005.png


6、在Partition Configuration页签中,按照下表内容填写烧录文件信息,包括:
NameBinaryMemorySystemAddressLengthBoardTypefastboot选择“u-boot-hi3516dv300_emmc.bin”emmcnone0x0000000x100000固定选择“hi3516dv300”NAboot选择“uImage”emmcnone0x1000000xf00000NAupdater选择“updater.img”emmcext3/40x10000000x1400000NAmisc空白,不用选择emmcnone0x24000000x100000NAsystem选择“system.img”emmcext3/40x25000000xceb00000NAvendor选择“vendor.img”emmcext3/40xd10000000x10000000NAuserdata选择“userdata.img”emmcext3/40xe10000000x5b800000NA
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
    DSC0006.png

Windows上擦除成功之后,可能无法继续烧录,可以使用Hitools工具烧录
DSC0007.png
11、开始烧录,点击Upload直接开始烧录
DSC0008.png
12、出现下面提示后,断开电源再上电,重新上电后会开始传输数据开始烧录
DSC0009.png
DSC00010.png

13、大概十分钟左右烧录成功
DSC00011.png
烧录成功会直接开机,标准系统样式如下
DSC00012.png
三、烧录过程中遇到的问题

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)
<p>@@@ bootArgs final from emmc = console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw</p>
<p>Net:   eth0</p>
<p>Error: eth0 address not set.</p>
<p>Hit any key to stop autoboot:  0</p>
<p>MMC read: dev # 0, block # 2048, count 18432 ... 18432 blocks read: OK</p>
45.20 MB/s<br><h2>Booting kernel from Legacy Image at 80000000 ...</h2><br>
<p>Image Name:   Linux-4.19.155</p>
<p>Image Type:   ARM Linux Kernel Image (uncompressed)</p>
<p>Data Size:  4892948 Bytes = 4.7 MiB</p>
<p>Load Address: 80008000</p>
<p>Entry Point:  80008000</p>
<p>Loading Kernel Image</p>
Starting kernel ...
2、烧录过程中擦除fastboot之后,不能继续烧录,如果想恢复原来系统,可以重新烧录fastboot来恢复系统;
a、使用hitool烧写
DSC00013.png

b、使用DevEco Device Tool烧写(只选择烧录fastboot)
DSC00014.png

小型系统初次启动或修改启动参数都需要修改U-boot的bootcmd及bootargs内容(具体参考OpenHarmony小型系统源码及烧录)

3、Hi3516开发版硬件注意事项
1、hi3516开发版有两个USB口,均可以供电
2、如使用电源供电,注意电源开关,在使用过程中发现电源按钮变化(以前是按下供电,后面变成松开供电)
由于开发版硬件缺陷没有指示灯指示是否已经上电,可以通过Monitor来验证,打开Monitor后观察打开开关之后是否有日志信息;
DSC00015.png

想了解更多关于鸿蒙的内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#bkwz

关注下面的标签,发现更多相似文章