K1 JOH5.0 系统调试说明
调试工具和方法
串口调试
可用,波特率 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
主机支持 hdc
windows 系统
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 help
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 | 重启服务端 |
各设备的 hdc 连接口
MUSEPaper&MUSEPaper2
MUSEPi
MUSECard
MUSEBook
hilog
基本使用方法
hilog 类似于 android 的 logcat,基本使用方法如下:
hilog
hilog -r
常用命令
命令 | 用途 | 示例 |
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(科学上网)
查看 trace:
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
wukong
待完善
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 /
系统重启后失效,需要重新挂载
gdb 调试
待添加
常用测试方法
monkey 测试
待添加
循环 reboot
待添加
循环音乐播放
待添加
循环视频播放
待添加
常见问题调试手段
外设
屏幕背光无法调节
- 通过查看和设置节点
sys/class/backlight/backlight/brightness
来确认驱动是否正常 - 如果设置上述节点亮度无变化,说明驱动存在问题,需要查驱动,重点查看背光对应的 PWM 是否正常工作
- 如果设置上述节点亮度有变化,说明是 OH 上层的问题,可以通过命令 power-shell display -s xxx(100>xxx>0)来查看亮度是否有变化
系统
cppcrash
待添加
引用自 进迭时空开发者文档