首页 > 其他分享 >arm设备调试常用方式

arm设备调试常用方式

时间:2023-10-12 15:58:23浏览次数:31  
标签:常用 stream -- xxx dev ctl data arm 调试

known_hosts过期:

ssh-keyscan -H xxx.xxx.xx.xxx >> ~/.ssh/known_hosts
git config --global --add url."[email protected]:".insteadOf "http://xxx.xxx.xx.xxx/"

scp 跨服务器拷贝文件

scp -r [email protected]:/home/xxxxxxxx/others/singleapk/ /snap/

scp -r [email protected]:/home/xxxxxxxx/workspace/xxxxx_linux/xxxxx_linux/rockdev rockdev

xxx项目代码及编译操作手册
(1)代码下载

git clone http://xxx.xxx.xx.xxx/root/xxxxx.git

(2)切换并在本地建立dev分支同步到远程分支:

git checkout remotes/origin/dev -b dev

更新临时分支上同一个commit id 提交记录内容

 

(3)Android编译

1)source build/envsetup.sh
2)lunch msmxxxx_64-userdebug
3)make -j64

同步dev分支最新代码

git pull origin dev

代码提交

git add
git commit -m ""
git push origin dev


使用-f强制push 到临时分支xxxxxxxxxx

git push -f origin HEAD:refs/heads/xxxxxxxxxx

版本回退命令使用

git reset --hard后面跟你要回退的那个版本的commit值,我们回退到 "配置文件提交" 那个版本。
git reset --hard HEAD^回退版本
可以直接使用git reset --hard HEAD^命令回退到上一个版本
git reset --hard HEAD~回退版本
git reset --hard HEAD~后面跟数字,就表示我们要回退多少步
使用**git reflog**命令可以看到所有的提交记录和回退记录

修改高通平台固件版本号:

Z:\xxx\build\make\core\build_id.mk
1
andriod主屏幕方向设置属性值:

persist.panel.orientation

使用fastboot更新固件img:

adb reboot bootloader

fastboot flash system system.img

fastboot flash vbmeta vbmeta.img

fastboot flash vendor vendor.img

fastboot flash recovery recovery.img

fastboot flash boot boot.img

fastboot flash dtbo dtbo.img

fastboot flash aboot emmc_appsboot.mbn

fastboot flash cache cache.img

fastboot flash userdata userdata.img

fastboot flash persist persist.img

fastboot flash mdtp mdtp.img

fastboot reboot

如果单刷boot:

adb reboot bootloader
fastboot flash boot boot.img
fastboot reboot

命令查看设备rtc时间

date +"%Y-%m-%d %H:%M:%S.%N"

#include <stdio.h>
#include <time.h>

int main() {
struct timespec tp;
clock_gettime(CLOCK_REALTIME, &tp);
printf("Current time: %ld seconds, %ld nanoseconds\n", tp.tv_sec, tp.tv_nsec);
return 0;
}

其他常用调试手段:

echo mem > /sys/power/state // kernel休眠

echo on > /sys/power/state //kernel唤醒

-------------------------------------------------

adb shell pm list packages -f // 查看所有应用位置

adb shell pm path 包名 //列出指定包名的apk位置

adb shell pm list packages // 查看所有应用

adb shell pm list packages -s // 查看系统应用

adb shell pm list packages -3 // 查看三方应用

-------------------------------------------------

busybox ifconfig //获取以太网信息

busybox ifconfig eth0 down //关闭以太网

busybox ifconfig eth0 up //开启以太网

-------------------------------------------------

svc data enable //开启移动网络

svc data disable //关闭移动网络

-------------------------------------------------

busybox ifconfig ppp0 down //关闭网络连接4G

stop ril-daemon //关闭网络注册上网服务

start ril-daemon //打开网络注册上网服务

-------------------------------------------------

adb shell wm size //查看屏幕分辨率

ps | grep face //根据关键字过滤

-------------------------------------------------

dumpsys window displays //查看屏幕信息

wm size 1080x1920 //修改屏幕像素

wm density 480 //修改屏幕dpi

-------------------------------------------------

logcat -b radio -v time //查看网络

logcat -V/D/I/W/E/F/S //查看日志

logcat -c -b main -b events -b radio -b system //清除所有日志

-------------------------------------------------

mount -o rw,remount /system system //获取权限

mount -o rw,remount -t ext4 /system //通用

-------------------------------------------------

adb shell am start -S -R 10 -W xxpkg/xxx.xxAty //测试Aty启动速度 执行10次 可以查看平均值

am stopservice xxxpkg/xxx.xxService //停止Service

adb shell am broadcast -a 广播名 --ei/es/ez 参数名 参数类型

[ei 对应 integer | 类型es 对应 String | 类型ez 对应 boolean | 类型ef 对应 float | 类型el 对应 long ]

java: dumpsys window | grep mCurrentFocus // 获取顶层应用

cmd:adb shell dumpsys window | findstr mCurrentFocus // 获取顶层应用

-------------------------------------------------

cd sdcard;busybox find ./ -size +51200k > /sdcard/report.txt;cd / //安卓:19,查找大于50M的文件到指定文件夹

find sdcard/ -size +50M > /sdcard/report.txt //安卓:25,查找大于50M的文件到指定文件夹

du -m -d 1 /sdcard/* //列出sdcar文件夹下层级为1 的文件信息

-------------------------------------------------

data MMddHHmmyyyy.ss set //设置时间格式

date 010411482023.58 set //设置时间

-------------------------------------------------

adb bugreport ./Desktop/devicebug.zip //导出设备所有 bug 日志 anr|crash

adb shell tcpdump -i any -p -s 0 -w /data/data/capture.pcap //保存网络包

-------------------------------------------------

adb shell screencap -p /sdcard/screen.png //截屏到指定目录

adb shell screenrecord sdcard/record.mp4 //屏幕录制

-------------------------------------------------

adb shell cat /proc/meminfo //查看内存信息

adb shell cat /proc/cpuinfo //查看CPU信息

-------------------------------------------------

adb shell ime list -s //获取已经安装的输入法

-------------------------------------------------

获取错误指针位置:

003537b1 指向错误位置
进入目录prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin
命令执行:./arm-eabi-addr2line 003537b1 -e out/target/xxx/lib.so
执行结果为:/proc/self/cwd/art/runtime/utils.cc:1122 (discriminator 1)
动态库错误日志查看:cd /data/tombstones

命令启动app

am start -n com.DeviceTest.Techvision/com.DeviceTest.Techvision.AllTest

网络挂载文件

[root@XXXXX:~]# mount -t nfs -o nolock,vers=3 xxx.xxx.xx.xx:/home/book/nfs_rootfs /mnt

Linux交叉编译配置环境变量

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

在 Ubuntu 中可以执行以下命令编译、执行:

gcc -o hello hello.c
./hello

查看 tftp 服务是否在运行,运行如下命令,即可查看是否在后台运行。

ps -aux | grep “tftp”

安装相应的驱动模块。

[root@xxxx:~]# insmod xxxx_led.ko
可以强行安装驱动程序,比如使用“insmod -f hello_drv.ko”这样的命令

使用网络启动文件系统

=> setenv serverip xxx.xxx.xx.xx // 设置服务器的 IP 地址,这里指的是 Ubuntu 主机 IP
=> setenv ipaddr xxx.xxx.xx.xx // 设置开发板的 IP 地址。
=> setenv nfsroot /home/book/nfs_rootfs // 设置 nfs 文件系统所在目录。
=> run netboot //

交叉编译程序的万能命令

如果交叉编辑工具链的前缀是 arm-buildroot-linux-gnueabihf- ,比如 arm-
buildroot-linux-gnueabihf-gcc ,交叉编译开源软件时,如果它里面有 configure,
万能命令如下:
./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
make
make install

配置buildroot添加其实三方app

1.进入buildroot/output/rockchip_rk3568 执行 make menuconfig
Target packages --->
Networking applications --->
添加此两项编译
[*]ipset
[*]iptables

保存.config退出

make savedefconfig 保存到配置文件

查看3.5mm耳机是否接入

cat /sys/devices/platform/es8396-sound/extcon/extcon6/state

查看声卡es8396寄存器值:

cat /sys/kernel/debug/regmap/5-0010/registers (0-0010 前面那个零是I2C总线编号)

Linux命令录音播放

arecord -D hw:1,0 -r 48000 -f S16_LE -c 2 /data/test.pcm //hw:1,0 代表声卡1,设备0 -r为录音采样率 -r 为采样深度 -c为录音通道数 /data/test.pcm为保存录音文件路径和文件名称
aplay -D hw:1,0 /data/test.pcm

Linux查看声卡路由信息

amixer -D 0 //查看所有路由配置
1、amixer -c 1 controls
amixer -c 1 cget numid=15,iface=MIXER,name='Capture Digital Volume'
2、amixer -c 1 cget numid=1,iface=MIXER,name='Playback Path'.
amixer -c 1 cget numid=25,iface=MIXER,name='Output 2 Playback Volume'
3、amixer -c 1 cset numid=15,iface=MIXER,name='Capture Digital Volume' 192 192
amixer -c 1 cset numid=25,iface=MIXER,name='Output 2 Playback Volume' 192 192

android声卡录音调试命令:

录音:
tinycap /data/test.pcm -D 0 -d 0 -c 8 -r 48000
播放:
tinyplay /data/test.pcm -D 0 -d 0
声卡路由查看:
tinymix -D 0
查看每个不同声卡信息
tinypcminfo -D 0

视频调试常用命令:

视频图像抓取:
v4l2-ctl --verbose -d /dev/video0 \
--set-fmt-video=width=3840,height=2160,pixelformat='NV16' \
--stream-mmap=4

v4l2-ctl --verbose -d /dev/video0 \
--set-fmt-video=width=3840,height=2160,pixelformat='NV16' \
--stream-mmap=4 --stream-skip=3 \
--stream-to=/data/4k60_nv16.yuv \
--stream-count=5 --stream-poll

v4l2-ctl --verbose -d /dev/video0 \
--set-fmt-video=width=3840,height=2160,pixelformat='NV16' \
--stream-mmap=4 --stream-skip=3 \
--stream-to=/data/4k60_nv16.yuv \
--stream-count=5 --stream-poll


v4l2-ctl --verbose -d /dev/video34 \
--set-fmt-video=width=1920,height=1080,pixelformat='NV16' \
--stream-mmap=4 --stream-skip=3 \
--stream-to=/data/4k60_nv16.yuv \
--stream-count=5 --stream-poll

v4l2查看视频节点文件详细信息:
v4l2-ctl -d /dev/video33 --all

v4l2
v4l2-ctl --verbose -d /dev/video80 \
--set-fmt-video=width=3840,height=2160,pixelformat='NV16' \
--stream-mmap=4 --stream-skip=3 \
--stream-to=/data/4k60_nv16.yuv \
--stream-count=1 --stream-poll

抓取yuv图像播放:
ffplay.exe -f rawvideo -s 3840x2160 -pix_fmt bgr24 -i 4k60_nv16.yuv -x 1280 -y 720

rk命令接口录音播放:
rk_mpi_ai_test --device_rate=48000 --device_ch=2 --output=/sdcard --sound_card_name=hw:1,0 --out_ch=2 --out_rate=48000

rk_mpi_ao_test -i /sdcard/cap_out.pcm --input_ch=2 --input_rate=48000 --device_rate=48000 --sound_card_name=hw:1,0


rk_mpi_ai_test --device_rate=48000 --device_ch=2 --output=/sdcard --sound_card_name=hw:0,0 --out_ch=2 --out_rate=48000

rk_mpi_ao_test -i /sdcard/cap_out.pcm --input_ch=2 --input_rate=48000 --device_rate=48000 --sound_card_name=hw:1,0

v4l2-ctl --verbose -d /dev/video80 --set-fmt-video=width=3840,height=2160,pixelformat='NV16' --stream-mmap=4 --set-selection=target=crop, flags=0,top=0,left=0,width=3840,height=2160

arecord -D hw:1,0 -r 48000 -f S16_LE -c 2 /data/test.pcm
aplay -D hw:1,0 /data/test.pcm


/sys/class/video4linux/video44/name:rkisp_mainpath
/sys/class/video4linux/video53/name:rkisp_mainpath
/sys/class/video4linux/video62/name:rkisp_mainpath
/sys/class/video4linux/video71/name:rkisp_mainpath


v4l2-ctl --verbose -d /dev/video0 \
--set-fmt-video=width=1920,height=1080,pixelformat='NV12' \
--stream-mmap=4 --stream-skip=3 \
--stream-to=/data/4k60_nv16.out \
--stream-count=1 --stream-poll


查看mipi节点链路信息
media-ctl -p -d /dev/media3

i2c5:

media-ctl -d /dev/media3 \
--set-v4l2 '"m01_f_LT6911UXC 5-002b":0[UYVY8_2X8/0x0@720/640]'


~/>$ media-ctl -d/dev/media3 --set-v4l2 ' "rkisp-isp-subdev":0[fmt:SBGGR10/3840x2160]'
~/>$ media-ctl -d/dev/media3 --set-v4l2 ' "rkisp-isp-subdev":0[crop: (0, 0)/3840x2160]'
~/>$ media-ctl -d/dev/media3 --set-v4l2 ' "rkisp-isp-subdev":2[crop: (0, 0)/3840x2160]'
~/>$ v4l2-ctl -d/dev/video33\
--set-selection=target=crop, top=0, left=0, width=3840, height=2160


media-ctl -l '"m01_f_LT6911UXC":0->"rockchip-csi2-dphy3":0[1]' -d /dev/media3
media-ctl -l '"m02_f_LT6911UXC":0->"rockchip-csi2-dphy0":0[1]' -d /dev/media0

media-ctl -d /dev/media3 -l '"m01_f_LT6911UXC 5-002b":0->"rockchip-csi2-dphy3":0[1]'

media-ctl -d /dev/media3 --set-v4l2 '"m01_f_LT6911UXC 5-002b":0[fmt:UYVY8_2X8/1920x1080]'

v4l2-ctl -d /dev/video0 \
--set-fmt-video=width=1920,height=1080,pixelformat=NV21 \
--stream-mmap=3 \
--stream-skip=3 \
--stream-to=/data/cif.yuv \
--stream-count=1 \
--stream-poll


media-ctl -d /dev/media0 -l '"m02_f_LT6911UXC 7-002b":0->"rockchip-csi2-dphy0":0[1]'
media-ctl -d /dev/media0 --set-v4l2 '"m02_f_LT6911UXC 7-002b":0[fmt:UYVY8_2X8/1920x1080]'

export LD_LIBRARY_PATH=/data/xmm100/local/lib/


linu rk平台三方应用编译:

export PATH=$PATH:/development/xxxxxxx/rk3568_linux/rk3568_linux/buildroot/output/rockchip_rk3568/host/usr/aarch64-buildroot-linux-gnu/bin
export PATH=$PATH:/development/xxxxxxx/rk3568_linux/rk3568_linux/buildroot/output/rockchip_rk3568/host/usr/bin
./matrix -f ./cfg/local0.json

export LD_LIBRARY_PATH=/data/xmm100/local/lib/

非阻塞执行多条命令:

shell命令:
#!/bin/bash

nohup rk_mpi_ai_test --device_rate=48000 --device_ch=2 --output=/sdcard --sound_card_name=hw:0,0 --out_ch=2 --out_rate=48000&
usleep 100
nohup rk_mpi_ao_test -i /sdcard/cap_out.pcm --input_ch=2 --input_rate=48000 --device_rate=48000 --sound_card_name=hw:1,0&

arm平台设备cpu频率命令:

CPU性能模式
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor

DDR性能模式
echo performance > sys/class/devfreq/dmc/governor

NPU性能模式
echo performance > sys/class/devfreq/fdab0000.npu/governor

GPU性能模式
echo performance > sys/class/devfreq/fb000000.gpu/governor

Linux命令方式硬盘挂载:
1、fdisk -l

2、fdisk /dev/sda


3、mkfs.ext4 /dev/sda1

4、mkdir black
5、mount /dev/sda1 /black
————————————————
版权声明:本文为CSDN博主「学习中的农民工」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nihaoma95278/article/details/131890217

 

标签:常用,stream,--,xxx,dev,ctl,data,arm,调试
From: https://www.cnblogs.com/zxdplay/p/17759677.html

相关文章

  • java课程分享四种嵌入式arm调试方法
    作者|杂烩君转自|嵌入式大杂烩我们常常说,软件三分写七分调。实际开发中,确实也是这样子的。我工作这几年了,对这体会也越来越深。每当需求一下来,我代码很快就可以写完,但是,调试需要花很多时间。这里需要明确的是,调试的目的不仅仅是调通整个功能需求。调通功能是最基本的......
  • 分享嵌入式软件调试方法和几个工具
    分享嵌入式软件调试方法和几个工具strongerHuang于2022-11-0908:20:37发布1430 收藏 14文章标签: 嵌入式 网络 大数据 python java版权关注+星标公众号,不错过精彩内容作者|杂烩君转自|嵌入式大杂烩我们常常说,软件三分写七分调。实际开发中,确......
  • HarmonyOS跨进程通信—IPC与RPC通信开发指导
    HarmonyOS跨进程通信—IPC与RPC通信开发指导一、IPC与RPC通信概述基本概念IPC(Inter-ProcessCommunication)与RPC(RemoteProcedureCall)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备跨进程通信。需要跨进程通信的原因是因为......
  • git 常用指令与简单规范
    1.前言随着前端项目数量、前端开发人员、前端业务的日渐增多,则非常有必要整理一份简单的git规范,来进行项目开发的规范化约束。本文包括开发常用git指令、git分支管理规范、git提交规范等。2.git常用指令2.1.查看最新的远程分支#查看远程分支gitbranch-r#......
  • PageOffice6 版本常用事件
    1、AfterDocumentOpened事件打开文件后自动触发的事件是AfterDocumentOpened事件,它通常用于实现文件打开后自动执行某些业务逻辑,比如将默认控件全屏、禁止保存、另存、打印,或者显示或隐藏痕迹等。因此,所有需要在文件打开后自动触发的业务逻辑代码都可以放在此事件中执行。在实......
  • Java常用类,这一次帮你总结好
    常用类概述:内部类Object类包装类数学类时间类字符串StringBuilder和StringBufferDecimalFormat-   一、内部类  -概念:在一个类内部再定义一个完整的类。一般情况下类与类之间是相互独立的,内部类的意思就是打破这种独立思想,让一个类成为另一个类的内部信息,和成员变量、成......
  • 【HarmonyOS】低代码平台组件拖拽使用技巧之堆叠容器
    ​【关键字】HarmonyOS、低代码平台、组件拖拽、堆叠组件 1、写在前面从本篇开始,我们一起来学习一下低代码平台中组件的托拉拽,虽然组件拖拽十分简单,但实际上还是有一定的技巧,新手上路难免会遇到一定的问题,如果能熟练掌握拖拽的技巧,能够有效地提升咱们的开发效率哦,今天我们先......
  • 【HarmonyOS】低代码平台组件拖拽使用技巧之滚动容器
    ​【关键字】HarmonyOS、低代码平台、组件拖拽、滚动容器 1、写在前面上一篇中我们介绍了低代码平台组件库中的堆叠容器的一些拖拽技巧,本篇我们继续,今天带大家一些来看一个新的组件——滚动容器。关于滚动容器的直接使用其实很简单,所以这个不是今天的重点,今天的重点是如何在......
  • 开发人员常用Docker指令
    开发人员在使用Docker进行应用程序开发和部署时,常用的Docker指令可以分为以下几类:容器管理指令:dockerrun:创建并运行一个新的容器。dockerstart:启动一个已经停止的容器。dockerstop:停止一个正在运行的容器。dockerrestart:重启一个正在运行的容器。dockerpause:暂停一个......
  • HarmonyOS远端状态订阅开发实例
     IPC/RPC提供对远端Stub对象状态的订阅机制, 在远端Stub对象消亡时,可触发消亡通知告诉本地Proxy对象。这种状态通知订阅需要调用特定接口完成,当不再需要订阅时也需要调用特定接口取消。使用这种订阅机制的用户,需要实现消亡通知接口DeathRecipient并实现onRemoteDied方法清理资源......