【鴻蒙開發板試用報告】鴻蒙 OS Hi3861 OLED 屏上播放視頻
本文將介紹Hi3861 WLAN模組的開發環境搭建、版本編譯構建、燒錄、源碼修改、調試驗證視頻播放功能。通過學習,開發者會對Hi3861 WLAN模組、0.96 OLED屏模組開發流程有初步認識,并可上手業務開發。
一、開發板簡介
Hi3861底板可以與其他模塊連接,具有擴充自身的外設能力,可以接WLAM模組主板、接OLED屏板。

Hi3861 WLAN模組是一片大約2cm*5cm大小的開發板,是一款高度集成的2.4GHz WLAN SoC芯片,頻率高波長短的5G信號,覆蓋范圍相對較小,穿過障礙物的能力不如2.4GHz,基帶支持正交頻分復用(OFDM)技術,并向下兼容直接序列擴頻(DSSS)和補碼鍵控(CCK)技術,支持IEEE 802.11 b/g/n協議的各種數據速率。

集成IEEE 802.11b/g/n基帶和RF(Radio Frequency)電路,射頻集成電路是一種緊湊的電子電路,它使用有源器件來實現所謂射頻(RF)范圍內的信號頻率,RF電路包括功率放大器PA(Power Amplifier)、低噪聲放大器LNA(Low Noise Amplifier)、RF Balun、天線開關以及電源管理等模塊;支持20MHz標準帶寬和5MHz/10MHz窄帶寬,提供最大72.2Mbit/s物理層速率。

Hi3861芯片集成高性能32bit微處理器、硬件安全引擎以及豐富的外設接口,外設接口包括SPI(Synchronous Peripheral Interface)、UART(Universal Asynchronous Receiver & Transmitter)、I2C(The Inter Integrated Circuit)、PWM(Pulse Width Modulation)、GPIO(General Purpose Input/Output)和多路ADC(Analog to Digital Converter),同時支持高速SDIO2.0(Secure Digital Input/Output)接口,最高時鐘可達50MHz;芯片內置SRAM(Static Random Access Memory)和Flash,可獨立運行,并支持在Flash上運行程序。支持HarmonyOS,并配套提供開放、易用的開發和調試運行環境。
Hi3861 WLAN模組資源十分有限,整板共2MB FLASH,可以理解成只讀內存(Read-Only Memory,縮寫:ROM),ROM所存數據,一般是裝入整機前事先寫好的,整機工作過程中只能讀出,而不像隨機存儲器那樣能快速地、方便地加以改寫。352KB RAM隨機存取存儲器(Random Access Memory,縮寫:RAM),也叫主存,是與CPU直接交換數據的內部存儲器。容量小的那個一定是內存RAM,容量大的一定是存儲(閃存)ROM,在編寫業務代碼時,需注意資源使用效率。
二、搭建環境
Linux編譯服務器使用的是Ubuntu16.04,需要檢查以下環境。
1、Python版本
- sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install make && sudo apt-get install zlib* && sudo apt-get install libffi-dev
- wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
- tar -xvzf Python-3.8.5.tgz && cd Python-3.8.5 && sudo ./configure --enable-optimizations && sudo make && sudo make install
- python --version
- which python3.8
- cd /usr/bin && sudo rm python && sudo ln -s python3.8-path python && python --version
2、pip3版本及相關模塊安裝
- sudo apt-get install python3-setuptools python3-pip -y
- sudo pip3 install --upgrade pip
- pip3 install setuptools -y
- sudo pip3 install kconfiglib -y
- sudo pip3 install pycryptodome -y
- sudo pip3 install six --upgrade --ignore-installed six -y
- sudo pip3 install ecdsa -y
- sudo apt-get install scons -y
- sudo apt-get install python-numpy -y
- sudo apt-get install python-opencv -y
- sudo pip install Pillow
- sudo apt-get install --reinstall python3-pkg-resources
- sudo apt install ffmpeg -y
3、安裝編譯工具
- wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
- tar -xvf gn.1523.tar -C ~/
- wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
- tar -xvf ninja.1.9.0.tar -C ~/
- wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
- tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/
- vim ~/.bashrc
- export PATH=~/gn:$PATH
- export PATH=~/ninja:$PATH
- export PATH=~/gcc_riscv32/bin:$PATH
- source ~/.bashrc
- riscv32-unknown-elf-gcc -v
4、獲取Hi3861源碼編譯檢驗環境
- wget https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
- python build.py wifiiot
編譯結束后,如果出現“BUILD SUCCESS”字樣,則證明構建成功。

三、編譯鴻蒙OS在0.96寸OLED屏上播放視頻
- git clone --recursive https://gitee.com/hihopeorg/harmonyos_oled_player.git
- vim build/lite/product/wifiiot.json
//applications/sample/wifi-iot/app替換為//harmonyos_oled_player:app。

進入harmonyos_oled_player目錄下,找一個視頻,命名為input.mp4,使用工具將幀率轉為10fps,目前ssd1306庫實測的最大幀率為10fps,使用video2bin將視頻轉為bin文件。
- ffmpeg -i input.mp4 -r 10 output.mp4
- ./video2bin.py output.mp4 out.bin
進入harmonyos_oled_player/play目錄下,根據熱點信息(SSID,PSK)和PC(ubuntu)的IP地址,修改play/net_params.h文件中的相關參數。

在openharmony源碼頂層目錄下執行編譯,構建成功后,會在./out/wifiiot/路徑中生成以下文件,編譯構建流程結束。使用 HiBurn 燒寫 .bin 文件到 Hi3861,記得勾選“Auto burn”,點擊 Connect,連接串口設備,按下開發板的 RESET 按鍵,燒錄成功后,需要手動點“Disconnect”斷開串口連接,否則會提示“Wait connect success flag (hisilicon) overtime.”,在PC(ubuntu)harmonyos_oled_player目錄下運行bin2stream,將會啟動一個TCP服務器,默認監聽5678端口,并復位設備,板子啟動后,首先會連上熱點,然后會連接PC上的TCP服務,就可以看到視頻的在OLED屏播放了。
- python build.py wifiiot
- ls -l out/wifiiot
- ./bin2stream.py out.bin