【开发板试用报告】鸿蒙 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
有没有源码fen x
https://gitee.com/hihopeorg/harmonyos_oled_player
播放貌似是测试视频这个咋回事呢?
[18:49:14.231]收←◆server :
server_id : 172.16.30.254
mask : 255.255.255.0, 1
gw : 172.16.30.254
T0 : 86400
T1 : 43200
T2 : 75600
clients <1> :
mac_idx mac addr state lease tries rto
0 b4c9b9af67db 172.16.30.151 8 0 1 1
netifapi_netif_common: 0
lwip_connect failed!
frames: 0, time cost: 0.01
[18:49:14.762]收←◆+NOTICE:DISCONNECTED
OnWifiConnectionChanged 55, state = 0, info =
bssid: 58:6A:B1:32:BA:70, rssi: 0, connState: 0, reason: 3, ssid:
Disconnect: 0
UnRegisterWifiEvent: 0
RemoveDevice: 0
DisableWifi: 0