|
|
|
|
公众号矩阵

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

本次源码编译使用Ubuntu20.0.4版本进行编译,硬件环境Win10,虚拟机配置8G内存、4核CPU(腾讯云服务器2G内存版本内存太小编译不通过)。

作者:jerckNing来源:鸿蒙社区|2021-07-19 15:34

想了解更多内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

一、源码编译

本次源码编译使用Ubuntu20.0.4版本进行编译,硬件环境Win10,虚拟机配置8G内存、4核CPU(腾讯云服务器2G内存版本内存太小编译不通过)。

1、源码下载及基础软件配置参考Hi3516系列小型系统源码编译及烧录

编译好的固件: https://yunpan.midea.com/#/sharelist?sharekey=reuP4tpjqN

2、安装依赖工具(标准系统编译需要更多的依赖工具)

安装命令如下

  1. 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

下载脚本。

  1. curl https://gitee.com/landwind/script-tools/raw/master/Shell/OpenHarmony/OpenHarmony_2.0_canary_prebuilts_download.sh >./prebuilts_download.sh 

下载并解压prebuilts压缩包到指定位置。

  1. 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。

  1. mkdir -p OpenHarmony/prebuilts/build-tools/common/nodejs  #创建nodejs目录   
  2. cd OpenHarmony/prebuilts/build-tools/common/nodejs        #进入nodejs目录 
  3. wget --no-check-certificate https://nodejs.org/download/release/v12.18.4/node-v12.18.4-linux-x64.tar.gz #下载nodejs 
  4. tar -zxvf node-v12.18.4-linux-x64.tar.gz                    #解压nodejs压缩包 
  5. cd -                                                        #切换到之前的目录  

配置NodeJS环境变量,下载node_modules包。

  1. cd OpenHarmony/third_party/jsframework                 #进入jsframework目录 
  2. export PATH=../../prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin:${PATH} #设置NodeJS环境变量 
  3. npm install                                             #下载node_modules包 
  4. cd -                                                    #切换到之前的目录 

把下载的node_modules包放入OpenHarmony代码的prebuilts/build-tools/common/js-framework目录下。

  1. mkdir -p OpenHarmony/prebuilts/build-tools/common/js-framework      #创建js-framework目录 
  2. cp -rp OpenHarmony/third_party/jsframework/node_modules OpenHarmony/prebuilts/build-tools/common/js-framework/ 

6、开始编译

使用Docker环境的开发者可参照Docker使用指导进行编译。采用安装包方式的开发者在Linux环境进行如下操作。

进入源码根目录,执行如下命令进行版本编译。

  1. ./build.sh --product-name Hi3516DV300 

{product_name}为当前版本支持的平台。

检查编译结果。编译完成后,log中显示如下:

  1. copy modules... 
  2. [12937/12939] STAMP obj/build/ohos/packages/phone_install_modules.stamp 
  3. [12938/12939] STAMP obj/build/ohos/packages/make_packages.stamp 
  4. [12939/12939] STAMP obj/build/core/gn/packages.stamp 
  5. used: 3591 seconds 
  6. pycache statistics 
  7. manage pycache contents 
  8. pycache daemon exit 
  9. c targets overlap rate statistics 
  10. subsystem files NO. percentage builds NO. percentage overlap rate 
  11. third_party 4579 60.3% 4740 61.2% 1.04 
  12. aafwk 107 1.4% 107 1.4% 1.00 
  13. account 13 0.2% 13 0.2% 1.00 
  14. ace 765 10.1% 765 9.9% 1.00 
  15. appexecfwk 234 3.1% 234 3.0% 1.00 
  16. communication 323 4.3% 323 4.2% 1.00 
  17. developtools 65 0.9% 65 0.8% 1.00 
  18. distributeddatamgr 286 3.8% 286 3.7% 1.00 
  19. distributedschedule 27 0.4% 27 0.3% 1.00 
  20. global 17 0.2% 17 0.2% 1.00 
  21. graphic 33 0.4% 33 0.4% 1.00 
  22. hdf 43 0.6% 43 0.6% 1.00 
  23. hiviewdfx 98 1.3% 98 1.3% 1.00 
  24. miscservices 5 0.1% 5 0.1% 1.00 
  25. multimedia 38 0.5% 38 0.5% 1.00 
  26. multimodalinput 29 0.4% 29 0.4% 1.00 
  27. notification 37 0.5% 37 0.5% 1.00 
  28. powermgr 48 0.6% 48 0.6% 1.00 
  29. security 169 2.2% 169 2.2% 1.00 
  30. startup 51 0.7% 51 0.7% 1.00 
  31. telephony 200 2.6% 200 2.6% 1.00 
  32. updater 85 1.1% 85 1.1% 1.00 
  33. utils 211 2.8% 211 2.7% 1.00 
  34. wpa_supplicant-2.9 103 1.4% 103 1.3% 1.00 
  35.   
  36. c overall build overlap rate: 1.02 
  37.   
  38.   
  39. post_process 
  40. build_target='' 
  41. /home/ubuntu/harmonyos/OpenHarmony/out/ohos-arm-release/packages/phone/images/root /home/ubuntu/harmonyos/OpenHarmony 
  42. /home/ubuntu/harmonyos/OpenHarmony 
  43. build vendor image successful. 
  44. build system image successful. 
  45. build userdata image successful. 
  46. ohos_build_out_dir = /home/ubuntu/harmonyos/OpenHarmony/out/ohos-arm-release/packages/phone 
  47. build updater image successful. 
  48. =====build Hi3516DV300 successful. 
  49. 2021-07-10 11:45:59 
  50. ++++++++++++++++++++++++++++++++++++++++ 
  51. 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为例,需要同时连接串口、网口和电源;

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

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

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

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

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

4、打开DevEco Device Tool,创建一个新工程

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

选择开发版芯片为Hi3516DV300,工程名自取,组件选为无;

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

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

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

6、在Partition Configuration页签中,按照下表内容填写烧录文件信息,包括:

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

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

Windows上擦除成功之后,可能无法继续烧录,可以使用Hitools工具烧录

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

11、开始烧录,点击Upload直接开始烧录

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

12、出现下面提示后,断开电源再上电,重新上电后会开始传输数据开始烧录

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区
OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

13、大概十分钟左右烧录成功

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

烧录成功会直接开机,标准系统样式如下

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

三、烧录过程中遇到的问题

1、标准系统更新系统烧录不能点亮屏幕,启动日志如下,这是因为烧录系统时,没有擦除fastboot导致的;

解决方案:先擦除fastboot,然后再进行烧录;如果擦除后不能烧录,可以参考下面第二点解决方案;

  1. @@@ 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) 
  2. @@@ bootArgs final from emmc = console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw 
  3. Net:   eth0 
  4. Error: eth0 address not set
  5.   
  6. Hit any key to stop autoboot:  0 
  7.   
  8. MMC read: dev # 0, block # 2048, count 18432 ... 18432 blocks read: OK 
  9. 45.20 MB/s 
  10. ## Booting kernel from Legacy Image at 80000000 ... 
  11.    Image Name:   Linux-4.19.155 
  12.    Image Type:   ARM Linux Kernel Image (uncompressed) 
  13.    Data Size:    4892948 Bytes = 4.7 MiB 
  14.    Load Address: 80008000 
  15.    Entry Point:  80008000 
  16.    Loading Kernel Image 
  17.   
  18. Starting kernel ... 

2、烧录过程中擦除fastboot之后,不能继续烧录,如果想恢复原来系统,可以重新烧录fastboot来恢复系统;

a、使用hitool烧写

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

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

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

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

3、Hi3516开发版硬件注意事项

  • hi3516开发版有两个USB口,均可以供电
  • 如使用电源供电,注意电源开关,在使用过程中发现电源按钮变化(以前是按下供电,后面变成松开供电)

由于开发版硬件缺陷没有指示灯指示是否已经上电,可以通过Monitor来验证,打开Monitor后观察打开开关之后是否有日志信息。

OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录-鸿蒙HarmonyOS技术社区

想了解更多内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

【编辑推荐】

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区
  2. Hi3516驱动开发全面详解
  3. HarmonyOS应用如何打包HAP并安装到真机
  4. JS UI框架下FA与PA是如何交互的
  5. HarmonyOS原子化服务原理和架构分析
  6. 【软通动力】HarmonyOS服务卡片-古诗词学习
【责任编辑:jianghua TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月获赞

订阅专栏+更多

带你轻松入门 RabbitMQ

带你轻松入门 RabbitMQ

轻松入门RabbitMQ
共4章 | loong576

26人订阅学习

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

12人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

41人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微