K1 OH5.0 系统调试说明
修订记录
修订版本 | 修订日期 | 修订说明 |
001 | 2025-01-13 | 初始版本 |
002 | 2025-04-11 | 添加MUSE Pi Pro |
1. 调试工具和方法
1.1. 串口调试
可用,波特率 115200,直接使用即可,可以查看 uboot
,kernel
,OpenHarmony init
进程相关打印。
1.1.1. 调整串口打印等级
1.1.1.1. 仅本次启动有效
串口中执行如下命令即可:
echo 8 > /proc/sys/kernel/printk
1.1.1.2. 持续生效
主要通过修改 env_k1-x.txt
文件中的 loglevel
值来实现,有 2 种方式:
-
修改代码并编译固件,修改
device/board/spacemit/xxx/kernel/boot/bootfs/env_k1-x.txt
中loglevel
的值,重新编译固件并烧录即可 -
系统中直接修改,按照如下步骤进行:
- 挂载内核
# cd dev/block/
# ls
by-name loop5 mmcblk2p1 mmcblk2p3 mmcblk2p9 ram12 ram4
loop0 loop6 mmcblk2p10 mmcblk2p4 platform ram13 ram5
loop1 loop7 mmcblk2p11 mmcblk2p5 ram0 ram14 ram6
loop2 mmcblk2 mmcblk2p12 mmcblk2p6 ram1 ram15 ram7
loop3 mmcblk2boot0 mmcblk2p13 mmcblk2p7 ram10 ram2 ram8
loop4 mmcblk2boot1 mmcblk2p2 mmcblk2p8 ram11 ram3 ram9
#
# mount mmcblk2p5 /tmp
# cd /tmp
# ls
Image.itb bianbu.bmp env_k1-x.txt k1-x_ZT001H.dtb lost+found- 通过
hdc
拉出env_k1-x.txt
,修改后,再推入/tmp
文件夹
D:\>hdc file recv /tmp/env_k1-x.txt
FileTransfer finish, Size:134 time:23ms rate:5.83kB/s
D:\>hdc file send env_k1-x.txt /tmp/
FileTransfer finish, Size:134, File count = 1, time:8ms rate:16.75kB/s- 取消挂载内核,重启即可生效
# unmount /tmp
# reboot
1.1.2. 串口连接方式
1.1.2.1. MUSE Paper
MUSE Paper 可以通过 TF 卡口来引出串口,需要单独购买配件,如下:
将 TF 卡槽拿出来,将上面配件插入即可,上面配件的金手指朝向桌面。
1.1.2.2. MUSE Pi & MUSE Card
MUSE Pi 和 MUSE Card 开发板上面有明显的串口连接标识 (GND/RX/TX)
,按线序连接即可。
1.1.2.3. MUSE Pi Pro
1.1.2.4. MUSE Book
1.2. 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
1.2.1. 主机支持 hdc
1.2.1.1. windows 系统
windows 系统将 hdc.exe(点我下载)放在特定目录,并设置环境变量路径。
1.2.1.2. 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
1.2.2. hdc 连接
1.2.2.1. 网络连接
需确保 hdc 的服务端和客户端在同一个局域网内,连接方式如下:
D:\>hdc tconn 10.0.90.142:55555
Connect OK
D:\>hdc shell
#
1.2.2.2. usb 连接
D:\>hdc list targets
0123456789ABCDEF
D:\>hdc shell
#
1.2.2.3. 多设备连接
通过 -t
参数指定设备即可,如下:
D:\>hdc list targets
0123456789ABCDEF
ABCDEF
D:\>hdc -t 0123456789ABCDEF shell
#
1.2.3. 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 | 重启服务端 |
1.2.4. 各设备的 hdc 连接口
1.2.4.1. MUSEPaper&MUSEPaper2
1.2.4.2. MUSEPi
1.2.4.3. MUSECard
1.2.4.4. MUSEBook
1.2.4.5. MUSEPiPro
1.3. hilog
1.3.1. 基本使用方法
hilog 类似于 android 的 logcat,基本使用方法如下:
hilog
hilog -r
1.3.2. 常用命令
命令 | 用途 | 示例 |
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 |
1.3.3. 日志落盘
日志落盘意思就是将日志保存到文件中,导出来进行查看。
命令 | 用途 |
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
1.4. hidumper
hidumper 是 OpenHarmony 中为开发、测试人员,IDE 工具提供统一的系统信息获取工具,帮助使用者分析,定位问题。
命令 | 用途 |
hidumper -h | 获取帮助 |
hidumper --cpuusage [pid] | 查看某个进程的cpu占用信息 |
hidumper --mem [pid] | 查看某个进程的内存占用情况 |
hidumper --cpufreq | 查看cpu的频率 |
hidumper --storage | 查看存储情况 |
hidumper --net | 查看网络情况 |
1.5. 参数管理
命令 | 用途 |
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 | 设置系统参数 |
1.6. 模拟按键
1.6.1. 鼠标操作
# 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
1.6.1.1. 命令示例
命令 | 用途 |
uinput -M -m 50 50 | 鼠标光标移动到(50,50)位置 |
Uinput -M -b 50 200 0 100 300 | 鼠标在(50,200)左键双击,点击事件100ms,双击的间隔时间300ms |
1.6.2. 键盘操作
# 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
1.6.2.1. 按键值
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 |