嵌入式设备调试总结
[toc]
包含SDK开发中的常用命令及调试工具
工具
网络测试工具
wiresharke
Wireshark网络抓包(一)——数据包、着色规则和提示tcpdump
chmod 777 ./tcpdump # -w写入文件cap用于分析 ,-C指定文件大小100MB,host过滤主机url ./tcpdump -w /sdcard/test.cap -C 100 host <url>
串口调试
picocom
sudo apt-get install picocom sudo picocom -b 115200 /dev/ttyUSB0 #进入Picocom终端模式 # Ctrl+a进入转义模式,然后Ctrl+h 可以获取当前版本支持的命令
查看依赖库
objdump
objdump -x libxxx.so | grep NEEDED NEEDED libcurl.so.4 NEEDED libz.so.1 NEEDED libssl.so.1.0.0 NEEDED libcrypto.so.1.0.0 NEEDED libopencv_core.so.3.2 NEEDED libopencv_imgproc.so.3.2 NEEDED libopencv_imgcodecs.so.3.2 NEEDED libturbojpeg.so.0 NEEDED libstdc++.so.6 NEEDED libm.so.6 NEEDED libgcc_s.so.1 NEEDED libc.so.6
- 刷机工具
pkgburn
选择好固件,关机状态,按住串口线的按钮,电源数据线接入电脑,识别成功后就会自动烧录 刷完需要重新配置一遍设备环境
文件传输
- 通过TF卡拷贝
cp /mnt/<src> /tmp
通过smb
smb://192.168.1.100/...
通过adb
# 支持通配符 adb push <src> <dst> adb pull <src> <dst>
通过nfs
1. 设备是NFS的客户端,PC作为Server端,PC需要先安装nts-server。 # 安装nfs-server sudo apt install nfs-kernel-server 2. 创建PC共享文件夹(以/home/dell/ez为例)。 sudo mkdir -p /home/dell/ez sudo chown nobody:nogroup /home/dell/ez sudo chmod 777 /home/dell/ez 3. 设备连接局域网,查看设备的IP。 # 使用picocom打开串口,进入设备shell环境 sudo picocom -b 115200 /dev/ttyUSB0 # 设备环境下查看设备IP ifconfig 4. PC添加设备IP访问权限(替换下面命令中的实际IP)。 sudo nano /etc/exports /home/dell/ez IP(rw,sync,no_subtree_check) # Ctrl+X, entering Y, and then hitting Enter. 5. 启动nts-server。 sudo exportfs -a sudo systemctl restart nfs-kernel-server 6. 关闭PC防火墙。 # 查看防火墙状态 sudo ufw status # 如果是active状态,使用以下命令关闭,否则跳过。 sudo ufw disable 7. remount设备rootfs分区。 # 使用picocom打开串口,进入设备shell环境 sudo picocom -b 115200 /dev/ttyUSB0 # remount rootfs mount -o remount, rw / # 同步PC文件夹/home/dell/ez至设备的/mnt/nfs文件夹, 这里的IP为PC的IP地址。如果mount出现问题,可以ping PC的IP地址查看是否能访问 mount -t nfs -o nolock 192.168.1.31:/home/dell/ez /mnt/nfs export LD_LIBRARY_PATH=.:$PATH 8. 将文件拷贝至PC的/home/dell/ez下,可以同步到设备的/mnt/nfs目录,反之同理
一般命令
时间同步
# 指定时间源 ntpd -p ntp.ntsc.ac.cn # 检测是否更新ok date # 或者手动更新, 把系统软件时间同步到硬件,防止系统重启后时间被还原(ntpd不需要) date -s "2020-07-01 11:25:00" && hwclock -w
修改权限
chmod 777 /dir
adb
adb shell exit adb reboot
若程序执行错误打印返回值
echo './run_cmd echo $?'|sh
网络模拟测试
# 第一次调用change改为add,后面都change
# 设置wlan0端口的丢包率为30%
tc qdisc change dev wlan0 root netem loss 30%
# 发送的报文有 0.3% ~ 25% 的丢包率
tc qdisc change dev wlan0 root netem loss 0.3% 25%
# 随机产生 2% 损坏的报文(在报文的随机位置造成一个比特的错误)
tc qdisc add dev wlan0 root netem corrupt 2%
# 网卡延迟增加100ms
tc qdisc change dev wlan0 root netem delay 100ms
# 报文延迟的时间在 100ms ± 20ms 之间(90ms - 110ms)
tc qdisc change dev wlan0 root netem delay 100ms 20ms
# 因为网络状况是平滑变化的,短时间里相邻报文的延迟应该是近似的而不是完全随机的。这个值是个百分比,如果为 100%,就退化到固定延迟的情况;如果是 0% 则退化到随机延迟的情况
tc qdisc change dev wlan0 root netem delay 100ms 20ms 50%
# distribution 参数来限制它的延迟分布模型。比如让报文延迟时间满足正态分布
tc qdisc change dev wlan0 root netem delay 100ms 20ms distribution normal
# 清除wlan0端口的模拟状态
tc qdisc del dev wlan0 root
# 查看端口的限制状态
tc qdisc show
WIFI配置
# 修改/查看wifi配置
/home/conf/wpa_supplicant.conf
/etc/wpa_supplicant.conf
##### wpa_supplicant configuration file template
update_config=1
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
wowlan_triggers=any
network={
ssid="ssid"
psk="password"
key_mgmt=WPA-PSK
}
# 关闭
killall wpa_supplicant
# -D驱动程序名称(可以是多个驱动程序:nl80211,wext)
# -i接口名称 -c配置文件 -B在后台运行守护进程
wpa_supplicant -D nl80211 -i wlan0 -c /home/conf/wpa_supplicant.conf -B
# 动态主机配置(可省略)
udhcpc -i wlan0 -s /etc/udhcpc.script
wpa_cli -i wlan0 scan #搜索附件wifi热点
wpa_cli -i wlan0 scan_result #显示搜索wifi热点
wpa_cli -i wlan0 status #当前WPA/EAPOL/EAP通讯状态
wpa_cli -i wlan0 ping #pings wpa_supplicant
wpa_cli -i wlan0 add_network #添加一个网络连接,会返回<network id>
wpa_cli set_network 11 ssid '"iPanda-mi8"' #ssid名称
wpa_cli set_network 11 psk '"123456"' #密码
wpa_cli set_network 11 scan_ssid 1
wpa_cli set_network 11 priority 1 #优先级
wpa_cli -i wlan0 list_network #列举保存过的连接
wpa_cli -i wlan0 select_network <network id> #连接指定的ssid
wpa_cli -i wlan0 enable_network <network id> #使能制定的ssid
#保存连接
wpa_cli -i wlan0 save_config #信息保存到默认的配置文件中
#断开连接
wpa_cli -i wlan0 disable_network <network id>
网卡配置
1. 设置开发板的IP(配置IP地址、网络掩码、广播地址的同时,激活网卡eth0)
ifconfig eth0 192.168.1.37 broadcast 192.168.1.255 netmask 255.255.255.0 up
2. 配置网关
route add default gw 192.168.1.1
3. 配置DNS解析
echo "nameserver 114.114.114.114" > /etc/resolv.conf
4. 设置一下系统时间
date -s "2020-08-05 17:40:00" (当前时间,这里是示例)