【鴻蒙開發(fā)板試用報(bào)告】鴻蒙 OS Hi3861 OLED 屏上播放視頻
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
本文將介紹Hi3861 WLAN模組的開發(fā)環(huán)境搭建、版本編譯構(gòu)建、燒錄、源碼修改、調(diào)試驗(yàn)證視頻播放功能。通過學(xué)習(xí),開發(fā)者會(huì)對(duì)Hi3861 WLAN模組、0.96 OLED屏模組開發(fā)流程有初步認(rèn)識(shí),并可上手業(yè)務(wù)開發(fā)。
一、開發(fā)板簡介
Hi3861底板可以與其他模塊連接,具有擴(kuò)充自身的外設(shè)能力,可以接WLAM模組主板、接OLED屏板。

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

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

Hi3861芯片集成高性能32bit微處理器、硬件安全引擎以及豐富的外設(shè)接口,外設(shè)接口包括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),同時(shí)支持高速SDIO2.0(Secure Digital Input/Output)接口,最高時(shí)鐘可達(dá)50MHz;芯片內(nèi)置SRAM(Static Random Access Memory)和Flash,可獨(dú)立運(yùn)行,并支持在Flash上運(yùn)行程序。支持HarmonyOS,并配套提供開放、易用的開發(fā)和調(diào)試運(yùn)行環(huán)境。
Hi3861 WLAN模組資源十分有限,整板共2MB FLASH,可以理解成只讀內(nèi)存(Read-Only Memory,縮寫:ROM),ROM所存數(shù)據(jù),一般是裝入整機(jī)前事先寫好的,整機(jī)工作過程中只能讀出,而不像隨機(jī)存儲(chǔ)器那樣能快速地、方便地加以改寫。352KB RAM隨機(jī)存取存儲(chǔ)器(Random Access Memory,縮寫:RAM),也叫主存,是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲(chǔ)器。容量小的那個(gè)一定是內(nèi)存RAM,容量大的一定是存儲(chǔ)(閃存)ROM,在編寫業(yè)務(wù)代碼時(shí),需注意資源使用效率。
二、搭建環(huán)境
Linux編譯服務(wù)器使用的是Ubuntu16.04,需要檢查以下環(huán)境。
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版本及相關(guān)模塊安裝
- 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源碼編譯檢驗(yàn)環(huán)境
- wget https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
- python build.py wifiiot
編譯結(jié)束后,如果出現(xiàn)“BUILD SUCCESS”字樣,則證明構(gòu)建成功。

三、編譯鴻蒙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。

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

在openharmony源碼頂層目錄下執(zhí)行編譯,構(gòu)建成功后,會(huì)在./out/wifiiot/路徑中生成以下文件,編譯構(gòu)建流程結(jié)束。使用 HiBurn 燒寫 .bin 文件到 Hi3861,記得勾選“Auto burn”,點(diǎn)擊 Connect,連接串口設(shè)備,按下開發(fā)板的 RESET 按鍵,燒錄成功后,需要手動(dòng)點(diǎn)“Disconnect”斷開串口連接,否則會(huì)提示“Wait connect success flag (hisilicon) overtime.”,在PC(ubuntu)harmonyos_oled_player目錄下運(yùn)行bin2stream,將會(huì)啟動(dòng)一個(gè)TCP服務(wù)器,默認(rèn)監(jiān)聽5678端口,并復(fù)位設(shè)備,板子啟動(dòng)后,首先會(huì)連上熱點(diǎn),然后會(huì)連接PC上的TCP服務(wù),就可以看到視頻的在OLED屏播放了。
- python build.py wifiiot
- ls -l out/wifiiot
- ./bin2stream.py out.bin
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)