嵌入式设备调试总结

[toc]

包含SDK开发中的常用命令及调试工具

工具

  • 网络测试工具

  • 串口调试 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
    

网络模拟测试

Linux模拟复杂网络环境下的传输(netem和tc)

基于TC和netem实现网络异常情况的模拟

# 第一次调用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" (当前时间,这里是示例)
guobao.v@gmail.com all right reserved,powered by Gitbook最后编辑时间: 2022-11-29 14:59:32

results matching ""

    No results matching ""