OpenVela-03-快速入门-lvgldemo 与NSH终端测试

在这里插入图片描述

前置操作:

步骤三:编译源代码

完成源代码下载后,请在 openvela 根目录下执行以下编译步骤。

1. (可选)自定义内核配置

您可以通过 menuconfig 命令打开图形化界面,以调整 NuttX 内核与组件的配置。

cd ~/openvela
./build.sh vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap/ --cmake menuconfig

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

按 / 键可搜索配置项。
按 空格键 可切换选中状态(启用/禁用/模块化)。
配置完成后,选择 Save 保存并退出。

2. 执行编译

编译前的目录
在这里插入图片描述

执行以下命令,构建整个项目。

./build.sh vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap/ --cmake -j$(nproc)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编译成功后,您将在 cmake_out/vela_goldfish-arm64-v8a-ap 目录下找到 nuttx 等编译产物。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ubuntu@ubuntu-virtual-machine:~/openvela$ ll cmake_out/vela_goldfish-arm64-v8a-ap/vela_ap*
-rwxrwxr-x 1 ubuntu ubuntu 64550296  33 17:03 cmake_out/vela_goldfish-arm64-v8a-ap/vela_ap.bin*
-rwxrwxr-x 1 ubuntu ubuntu 64550296  33 17:03 cmake_out/vela_goldfish-arm64-v8a-ap/vela_ap.elf*
ubuntu@ubuntu-virtual-machine:~/openvela$ file cmake_out/vela_goldfish-arm64-v8a-ap/vela_ap.elf
cmake_out/vela_goldfish-arm64-v8a-ap/vela_ap.elf: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=80e432b908c5546fe7ff8fb0fbca8cfcadab5606, with debug_info, not stripped

# 进入编译输出目录
cd cmake_out/vela_goldfish-arm64-v8a-ap/

# 用 QEMU 启动 vela_ap.elf(goldfish 虚拟板专用命令)
qemu-system-aarch64 -machine goldfish64 -cpu cortex-a53 -kernel vela_ap.elf -serial stdio -nographic

步骤四:运行模拟器

先安装

sudo apt update && sudo apt install -y android-tools-adb

在 openvela 根目录下,执行以下脚本启动 Vela Emulator 并加载您的编译产物。

./emulator.sh cmake_out/vela_goldfish-arm64-v8a-ap/

模拟器启动后,您将看到 goldfish-armv8a-ap> 提示符,表明 openvela 已成功运行。同时会弹出Android emulator的界面。

启动lvgldemo

在 goldfish-armv8a-ap> 输入

NuttShell (NSH)
goldfish-armv8a-ap> lvgldemo &
lvgldemo [13:100]
goldfish-armv8a-ap>

Android emulator的界面会加载默认内容:
在这里插入图片描述

测试 NSH 终端

下面是一套针对 OpenVela 下 goldfish-armv8a-ap 板型 NSH 终端的系统化测试命令集,按「基础系统→硬件/驱动→网络/无线→图形/应用→调试排障」分类整理,覆盖核心功能验证,新手可直接复制执行:

一、基础系统功能测试(必测)

验证系统核心运行状态,所有环境通用:

# 1. 系统信息查询
uname -a                  # 查看内核/架构/版本(确认ARM64、NuttX版本)
id                        # 查看当前用户权限(默认root)
date                      # 查看系统时间(验证RTC/时钟驱动)
echo "hello openvela"     # 验证shell基本输出
# ls -l /                   # 查看根目录结构(验证文件系统挂载)
# ls -l /可能会崩溃
ls /
pwd                       # 查看当前工作目录

在这里插入图片描述

# 2. 进程管理
ps                        # 查看所有运行进程(如kvdbd/adbd/telnetd)
sleep 10 &                # 后台启动睡眠进程
# ps | grep sleep           # 过滤进程(验证管道/ grep 命令) 默认没有grep命令
ps 
kill $(pgrep sleep)       # 终止睡眠进程(验证进程控制)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

# 3. 内存/存储测试
free                      # 查看内存使用(总内存/已用/空闲)
df -h                     # 查看文件系统挂载(验证虚拟存储)
mkdir /tmp/test           # 创建目录(验证文件系统可写)
echo "test" > /tmp/test.txt # 写入文件
cat /tmp/test.txt         # 读取文件
rm /tmp/test.txt && rmdir /tmp/test # 删除文件/目录

在这里插入图片描述

# 4. 环境变量
env                       # 查看环境变量
export TEST=openvela      # 设置临时环境变量
echo $TEST                # 读取环境变量

在这里插入图片描述

二、硬件/驱动功能测试(适配goldfish虚拟板)

验证虚拟板外设驱动是否正常:

# 1. 设备节点检查(核心驱动)
ls -l /dev/fb0            # 帧缓冲设备(图形显示依赖)
ls -l /dev/ttyS0          # 串口设备(控制台/蓝牙HCI依赖)
ls -l /dev/net/tun        # 虚拟网卡设备(网络依赖)
ls -l /dev/urandom        # 随机数设备(加密/Matter依赖)

# 2. 串口测试(若启用)
echo "serial test" > /dev/ttyS0  # 向串口写数据
cat /dev/ttyS0 &          # 后台监听串口输出(按Ctrl+C终止)

# 3. 帧缓冲(显示)测试
cat /sys/class/graphics/fb0/modes # 查看支持的分辨率
echo "800x480-32" > /sys/class/graphics/fb0/modes # 设置分辨率

# 4. 输入设备测试(若启用触摸/键盘)
ls -l /dev/input/event0   # 输入事件设备
cat /dev/input/event0     # 监听触摸/键盘事件(按Ctrl+C终止)

在这里插入图片描述

三、网络/无线功能测试(核心物联网能力)

验证网络、蓝牙、WiFi、Matter 功能(需提前配置编译):

# 1. 基础网络测试
ifconfig                  # 查看网络接口(如eth0/wlan0)
ifconfig eth0 up          # 启动网卡
ping -c 3 8.8.8.8         # 测试外网连通性(虚拟板需联网)
netstat -tnlp             # 查看监听端口(如ADB 5555、Telnet 23)

# 2. 蓝牙功能测试(需编译bluetoothctl)
bluetoothctl power on     # 开启蓝牙控制器
bluetoothctl scan on      # 扫描周边蓝牙设备
bluetoothctl show         # 查看蓝牙设备信息
bluetoothctl power off    # 关闭蓝牙

# 3. WiFi功能测试(需编译iw)
iw dev                    # 查看WiFi接口(如wlan0)
iw wlan0 scan             # 扫描WiFi热点
iw wlan0 connect "SSID"  # 连接WiFi(替换为实际热点名)
iw wlan0 disconnect       # 断开WiFi

# 4. Matter协议测试(需编译matterctl)
matterctl init            # 初始化Matter设备
matterctl commission ble  # 蓝牙配网(Matter BLE Commissioning)
matterctl status          # 查看Matter设备状态

四、图形/应用功能测试(LVGL/演示程序)

验证图形界面和应用程序运行:

# 1. LVGL演示程序测试
lvgldemo -h               # 查看LVGL演示帮助
lvgldemo &                # 后台启动LVGL演示(图形界面)
ps | grep lvgldemo        # 确认进程运行
kill $(pgrep lvgldemo)    # 终止LVGL演示

# 2. ADB/Telnet服务测试
adbd &                    # 启动ADB服务
telnetd &                 # 启动Telnet服务
netstat -tnlp | grep 5555 # 确认ADB端口监听
netstat -tnlp | grep 23   # 确认Telnet端口监听

# 3. 自定义脚本/程序测试
echo '#!/bin/sh
echo "OpenVela test script"' > /tmp/test.sh  # 编写脚本
chmod +x /tmp/test.sh     # 添加执行权限
/tmp/test.sh              # 运行脚本

替换如下命令

# 验证图形界面和应用程序运行(适配NSH无grep/pgrep/netstat版本)
# 1. LVGL演示程序测试
lvgldemo -h               # 查看LVGL演示帮助(若提示命令不存在,需编译LVGL)
lvgldemo &                # 后台启动LVGL演示(图形界面)
ps                        # 手动查看进程列表,找到lvgldemo对应的PID(比如PID=14)
kill 14                   # 替换为实际PID,终止LVGL演示(示例PID=14,需按实际修改)

# 2. ADB/Telnet服务测试
adbd &                    # 启动ADB服务
telnetd &                 # 启动Telnet服务
# 替代netstat -tnlp | grep 5555:通过ps查看adbd/telnetd是否运行
ps                        # 手动检查列表中是否有adbd(ADB服务)、telnetd(Telnet服务)进程
# 额外验证:检查ADB/Telnet设备节点(虚拟板特有)
ls /dev/adb               # 确认ADB设备节点存在
ls /dev/telnet            # 确认Telnet设备节点存在

# 3. 自定义脚本/程序测试(NSH简化版,避免复杂语法)
echo "echo \"OpenVela test script\"" > /tmp/test.sh  # 简化脚本内容(NSH对多行echo支持有限)
chmod +x /tmp/test.sh     # 添加执行权限
/tmp/test.sh              # 运行脚本
rm /tmp/test.sh           # 测试完成后清理脚本(可选)

五、调试/排障测试(定位问题)

当功能异常时,用于快速定位问题:

# 1. 日志/调试信息
dmesg                     # 查看内核启动日志(驱动加载/错误)
dmesg | grep error        # 过滤错误日志
loglevel 6                # 提高日志级别(显示更多调试信息)

# 2. 驱动加载检查
lsmod                     # 查看加载的内核模块(若启用模块)
cat /proc/modules         # 替代lsmod(部分系统无lsmod)

# 3. 性能监控
top                       # 实时监控CPU/内存占用(按q退出)
ps -aux                   # 详细进程信息(CPU/内存使用率)

# 4. 网络抓包(若启用tcpdump)
tcpdump -i eth0 -c 10     # 抓取eth0网卡10个数据包(调试网络问题)

六、使用说明

  1. 执行顺序:建议按「基础→硬件→网络→应用→调试」的顺序执行,先确认基础功能正常;
  2. 命令缺失处理:若提示「command not found」,说明未编译对应功能,需回到 menuconfig 开启(如 bluetoothctl 需开启 Wireless Support -> Bluetooth -> Bluetooth Command Line Tool);
  3. 虚拟板适配:goldfish 是虚拟板,部分物理硬件命令(如 iw wlan0 connect)需依赖仿真驱动,若执行失败属正常,重点验证「进程/文件/网络基础功能」即可;
  4. 后台进程终止:所有后台进程(加 & 启动)可通过 kill PID 终止,或重启仿真器清空。

总结

这套命令覆盖 NSH 终端的核心测试场景:

  1. 基础系统(进程/文件/内存)验证系统可用性;
  2. 硬件驱动(串口/显示/输入)验证外设适配;
  3. 网络无线(蓝牙/WiFi/Matter)验证物联网核心能力;
  4. 应用/调试(LVGL/日志/性能)验证上层功能和问题定位。

可根据你的实际需求(如重点测试 Matter 或 LVGL),挑选对应分类的命令执行。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐