系统调试
调试工具和方法
串口调试 可用,波特率 115200,直接使用即可,可以查看 uboot,kernel,OpenHarmony init 进程相关打印。
hdc
hdc 类似 android 的 adb,支持 usb 和 tcp 这 2 种连接模式,使用 tcp 模式,端口默认设置为 55555。 配置文件为 device/board/spacemit/xxx/cfg 的 default.para,如下所示:
persist.hdc.mode=usb,tcp
persist.hdc.port=55555
主机支持
windows 系统将 hdc.exe(点我下载)放在特定目录,并设置环境变量路径。
ubuntu 系统安装依赖项:打开终端,输入以下命令来更新软件包列表并安装必要的开发工具和库
sudo apt-get update
sudo apt-get install build-essential libstdc++6 libc++1·
下载 HDC 工具包:
前往 OpenHarmony 官网下载适用于 Linux 平台的最新版 HDC 工具压缩包。将其放置于合适位置后进行解压操作,请根据实际情况调整解压路径
tar -zxvf hdc_std_<version>_linux.tar.gz -C /opt/hdc/
设置环境变量:编辑用户的 shell 初始化脚本(如 .bashrc),添加以下行至文件末尾:
export PATH=$PATH:/opt/hdc/bin
source ~/.bashrc
验证安装成功与否:在新的终端窗口里尝试运行简单的帮助指令以确认一切就绪,如果能够看到详细的帮助文档,则表明整个过程顺利完成
hdc 连接
网络连接 需确保 hdc 的服务端和客户端在同一个局域网内,连接方式如下:
D:\>hdc tconn 10.0.90.142:55555
Connect OK
D:\>hdc shell
#
usb 连接
D:\>hdc list targets
0123456789ABCDEF
D:\>hdc shell
#
多设备连接
通过 -t 参数指定设备即可,如下:
D:\>hdc list targets
0123456789ABCDEF
ABCDEF
D:\>hdc -t 0123456789ABCDEF shell
#
hdc 常用命令
命令 用途
hdc list targets 查看当前所有设备
hdc shell reboot 重启
hdc uninstall com.example.myapp 卸载hap包
hdc install -r xxx.hap 重新安装hap包
hdc shell aa start -a EntryAbility -b com.example.myapp 启动hap
hdc file recv /xxx D:/ 从小机copy文件到本地
hdc file send D:/xxx /data/ 发送本地文件到小机
hdc start -r 重启服务端
hilog 基本使用方法
hilog 类似于 android 的 logcat,基本使用方法如下:
命令 用途 示例
hilog -h 获取帮助
hilog -t app|core|kmsg|init - 阻塞式实时查询模块日志
- 可以与其他参数同时使用 hilog -t core
hilog -t app|core|kmsg|init -x - 非阻塞式实时查询模块日志
- 可以与其他参数同时使用 hilog -t core -x
hilog -T <tag> - 模块内指定tag
- 可以与其他参数一起使用 hilog -T Launcher_Default
hilog -L D|I|W|E|F - 指定level查询
- D:debug, I:info, W:warning, E:error, F:fatal hilog -L I
hilog -D <domain>
- 日志的服务域,用于指定输出日志所对应的业务领域
- 这是一个十六进制整数,范围从 0x0 到 0xFFFFF。
- 建议使用0xAAABB格式,AAA表示子系统,BB表示模块
- 指定domian查询
- 可以与其他参数一起使用 hilog -D 0x0
^ - 排除 hilog -t ^app -T ^BatteryThread
日志落盘
日志落盘意思就是将日志保存到文件中,导出来进行查看。
命令 用途
hilog -w start [-f "xxx"] [-l <length>] [-j <jobid>] [-m <algorithm>] [-n <number>] 启动落盘任务
hilog -w query [-j <jobid>] 查询落盘任务
hilog -w stop [-j <jobid>] 停止落盘任务
示例如下:
# hilog -w query
#
#hilog -w start -f "hilog" -l 66k -j 222 -m zlib -n 2
Persist task [jobid:222] started successfully
#cd /data/log/hilog
# ls -al
total 100
drwxr-x--- 2 logd log 4096 1970-01-02 03:34 .
drwxrwx--- 6 system log 4096 1970-01-01 00:38 ..
-rw-r----- 1 logd system 65540 1970-01-02 03:34 .persisterInfo_222
-rw-r----- 1 logd system 132 1970-01-02 03:34 .persisterInfo_222.info
-rw-r----- 1 logd system 12239 1970-01-02 03:34 hilog.002.19700102-033431.gz
-rw-r----- 1 logd system 6883 1970-01-02 03:34 hilog.003.19700102-033431.gz
#
# hilog -w query -j 222 #指定jobid查询
222 core,app zlib /data/log/hilog/hilog 67584 2
#
# hilog -w query #查询全部落盘任务
222 core,app zlib /data/log/hilog/hilog 67584 2
#
# hilog -w stop -j 222
Persist task [jobid:222] stopped successfully
#
# ls -al
total 36
drwxr-x--- 2 logd log 4096 1970-01-02 03:35 .
drwxrwx--- 6 system log 4096 1970-01-01 00:38 ..
-rw-r----- 1 logd system 12239 1970-01-02 03:34 hilog.002.19700102-033431.gz
-rw-r----- 1 logd system 13000 1970-01-02 03:35 hilog.003.19700102-033431.gz
hidumper
hidumper 是 OpenHarmony 中为开发、测试人员,IDE 工具提供统一的系统信息获取工具,帮助使用者分析,定位问题。
命令 用途
hidumper -h 获取帮助
hidumper --cpuusage [pid] 查看某个进程的cpu占用信息
hidumper --mem [pid] 查看某个进程的内存占用情况
hidumper --cpufreq 查看cpu的频率
hidumper --storage 查看存储情况
hidumper --net 查看网络情况
参数管理
命令 用途
param -h 获取帮助
param ls -r 查看所用系统参数
param ls -r persist.sys.hilog.debug.on 查看系统参数
param get persist.sys.hilog.debug.on 获取系统参数
param set persist.sys.hilog.debug.on true 设置系统参数
模拟按键
鼠标操作
# uinput -?
Usage: uinput <option> <command> <arg>...
The option are:
-M --mouse
commands for mouse:
-m <dx> <dy> --move <dx> <dy> -move to relative position (dx,dy),
<dx1> <dy1> <dx2> <dy2> [smooth time] --trace -dx1 dy1 to dx2 dy2 smooth movement
-d <key> --down key -press down a button,
0 is the left button, 1 is the right,
2 is the middle
-u <key> --up <key> -release a button
-c <key> --click <key> -press the left button down,then raise
-b <dx1> <dy1> <id> [press time] [click interval time] --double click
[press time] the time range is more than 1ms but less than 300ms,
[click interval time] the time range is more than 1ms but less than 450ms,
Otherwise the operation result may produce error or invalid operation
-press the left button down,then raise
key value:0 - button left
key value:1 - button right
key value:2 - button middle
key value:3 - button side
key value:4 - button extra
key value:5 - button forward
key value:6 - button back
key value:7 - button task
-s <key> --scroll <key> -positive values are sliding backwards
-g <dx1> <dy1> <dx2> <dy2> [total time] --drag <dx1> <dy1> <dx2> <dy2> [total time],
dx1 dy1 to dx2 dy2 smooth drag
-i <time> --interval <time> -the program interval for the (time) milliseconds
negative values are sliding forwards
命令示例
命令 用途
uinput -M -m 50 50 鼠标光标移动到(50,50)位置
Uinput -M -b 50 200 0 100 300 鼠标在(50,200)左键双击,点击事件100ms,双击的间隔时间300ms
键盘操作
# uinput -?
Usage: uinput <option> <command> <arg>...
The option are:
-K --keyboard
commands for keyboard:
-d <key> --down <key> -press down a key
-u <key> --up <key> -release a key
-l <key> [long press time] --long_press <key> [long press time] -press and hold the key
-i <time> --interval <time> -the program interval for the (time) milliseconds
按键值
key keycode
KEYCODE_HOME 1
KEYCODE_BACK 2
KEYCODE_VOLUME_UP 16
KEYCODE_VOLUME_DOWN 17
KEYCODE_POWER 18
KEYCODE_VOLUME_MUTE 22
KEYCODE_DPAD_UP 2012
KEYCODE_DPAD_DOWN 2013
KEYCODE_DPAD_LEFT 2014
KEYCODE_DPAD_RIGHT 2015
KEYCODE_DPAD_CENTER 2016
KEYCODE_TAB 2049
命令示例
命令 用途
uinput -K -d 1 -u 1 按HOME键返回主界面
uinput -K -d 1 -u 1 声音调大
触屏操作
# uinput -?
Usage: uinput <option> <command> <arg>...
The option are:
-T --touch
commands for touch:
-d <dx1> <dy1> --down <dx1> <dy1> -press down a position dx1 dy1,
-u <dx1> <dy1> --up <dx1> <dy1> -release a position dx1 dy1,
-m <dx1> <dy1> <dx2> <dy2> [smooth time] --smooth movement
<dx1> <dy1> <dx2> <dy2> [smooth time] -smooth movement,
dx1 dy1 to dx2 dy2 smooth movement
-c <dx1> <dy1> [click interval] -touch screen click dx1 dy1
服务管理
命令 用途
service_control start pulseaudio 启动pulseaudio服务
service_control stop pulseaudio 停止pulseaudio服务
hiperf
https://device.harmonyos.com/cn/docs/documentation/guide/subsys-toolchain-hiperf-0000001186316470
bytrace
通过 hdc 来获取 trace 的方法如下:
抓取 trace:
D:\>hdc shell
# param set const.security.developermode.state true
# param set persist.hdc.root 1
# echo > /sys/kernel/debug/tracing/trace
# echo 4096 > /sys/kernel/debug/tracing/saved_cmdlines_size
# bytrace -t 10 -b 4096 --overwrite ohos zimage zmedia zcamera zaudio ability distributeddatamgr graphic freq irq mdfs workq mmc idle notification sync pagecache ace app > /mnt/mynewtrace.ftrace
# echo > /sys/kernel/debug/tracing/trace
# exit
D:\>hdc file recv /mnt/mynewtrace.ftrace
查看trace:
https://ui.perfetto.dev(科学上网)
bootchart 使用方法:
1. hdc shell
2. begetctl bootchart enable
3. reboot 或者断电重启
4. begetctl bootchart stop
5. begetctl bootchart disable
6. 进入到/data/service/el0/startup/init/文件夹下查看是否有如下文件:
header、proc_diskstats.log、proc_ps.log、proc_stat.log
7. 在/data/service/el0/startup/init/目录下执行命令:tar -czf bootchart.tgz * # 打包
8. hdc_std file recv /data/service/el0/startup/init/bootchart.tgz ./ #导出
9. 生成开机性能图片 java -jar bootchart.jar bootchart.tgz
glmark
使用方法:
执行下面3条命令可运行glmark老化:
power-shell setmode 602
cd /system/bin
./glmark2-es2 --run-forever --size 720x720
wpa_supplicant&wpa_cli
使用方法:
1. 开启再关闭wifi
2. cd /vendor/bin/
3. ./wpa_supplicant -B -i wlan0 -c /data/service/el1/public/wifi/wpa_supplicant/wpa_supplicant.conf
4. ps -ef | grep wpa查看wpa_supplicant是否起来
5. /wpa_cli -p /data/service/el1/public/wifi/sockets/wpa
6. > scan
7. > scan_results
8. > add_network,返回一个ID
9. > set_network ID ssid "WIFI名称"
10. > set_network ID psk "WIFI密码"
11. > enable_network ID
snapshot_display
param set const.security.developermode.state true
param set persist.hdc.root 1
snapshot_display -f /data/local/tmp/test1.jpeg
power-shell
power-shell setmode 602 #性能模式,关闭休眠
power-shell suspend #休眠
power-shell display -s xxx #设置亮度
重新挂载 system/vendor 分区为可读写 system/vendor 分区默认挂载为只读(ro),当调试的时候需要使用 hdc file send 推文件的时候,需要将其重新挂载为可读写,如下:
mount -o remount,rw /vendor
mount -o remount,rw /
系统重启后失效,需要重新挂载
调频 CPU 频率
cd /sys/devices/system/cpu/cpufreq/policy0/
cat scaling_cur_freq
查看当前频率
cat scaling_available_frequencies
查看可用频率
echo userspace > scaling_governor
echo 1228800 > scaling_setspeed
调整频率
cat scaling_cur_freq
查看调整是否生效
DDR 调频
频率表:
2400M C
1200M 8
800M 4
600M 2
devmem 0xd4282980 4
读取当前频率
devmem 0xd4282980 4 0xX
设置频率,0xX值要比频率表的值+1,相当于bit0写1
比如设置2400M,devmem 0xd4282980 32 0xD
常用测试方法
常见问题调试手段
外设屏幕背光无法调节:
通过查看和设置节点 sys/class/backlight/backlight/brightness 来确认驱动是否正常, 如果设置上述节点亮度无变化,说明驱动存在问题,需要查驱动,重点查看背光对应的 PWM 是否正常工作, 如果设置上述节点亮度有变化,说明是 OH 上层的问题,可以通过命令 power-shell display -s xxx(100>xxx>0)来查看亮度是否有变化.