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頁簽中,按照下表內容填寫燒錄文件信息,包括:
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開發版硬件注意事項
- hi3516開發版有兩個USB口,均可以供電
- 如使用電源供電,注意電源開關,在使用過程中發現電源按鈕變化(以前是按下供電,后面變成松開供電)
由于開發版硬件缺陷沒有指示燈指示是否已經上電,可以通過Monitor來驗證,打開Monitor后觀察打開開關之后是否有日志信息。
