0%

树莓派开发杂记

开发树莓派时一些散碎的知识记录

隐藏任务栏

有时候需要把自己的程序布满整个屏幕,用户只能操作这个界面,就需要把任务栏隐藏起来

可以右键任务栏,选择 Panel Preference,把 Geometry 中 Size 的 Width 设置为 0,这样任务栏的长度就是 0 了,就看不见了,保险起见,把 Advanced 中 Automatic hiding 的 Minimise panel when not in use 勾选上,并把 Size when minimised 设为 0。

问题:sudo: unable to resolve host raspberrypisnowyang

在执行 sudo 命令时出现

1
sudo: unable to resolve host raspberrypisnowyang

虽然命令最终成功了,但是卡住了一段时间,估计是在试图解析 host 超时了。

我的 host 是 raspberrypi@snowyang,但是错误信息里是 raspberrypisnowyang,估计就是这个 @ 符号让 sudo 以为是个域名进而解析导致了问题。

sudo raspi-config 吧 host name 中的 @ 去掉就好了

OpenOCD 不启动服务器

OpenOCD 默认会启动 TCP, Telnet 和 TCL 服务器,在频繁开关 OpenOCD 时会可能会造成问题,所以可使用 -c "gdb_port disabled" -c "tcl_port disabled" -c "telnet_port disabled" 选项来不启动这些服务器。

SCP 传输文件

http://www.runoob.com/linux/linux-comm-scp.html

netatalk 可以很方便的共享文件夹,可是 Raspberry 默认是没有安装此服务的,在上不了外网的情况下,还可以用自带的 scp 来传输文件。

1
2
scp local_file remote_username@remote_ip:remote_file 
scp -r local_folder remote_username@remote_ip:remote_folder

虚拟键盘

https://blog.csdn.net/xuelanlingying/article/details/78408617?locationNum=6&fps=1

设置静态 IP 地址

https://www.cnblogs.com/taojintianxia/p/6026225.html

修改*/etc/dhcpcd.conf* 文件

sudo vim /etc/dhcpcd.conf

1
2
3
4
5
6
7
8
9
10
11
interface eth0

static ip_address=10.0.0.2/24
static routers=10.0.0.1
static domain_name_servers=10.0.0.1

interface wlan0

static ip_address=10.0.0.3/24
static routers=10.0.0.1
static domain_name_servers=10.0.0.1

上面的配置文件中 , eth0是有线的配置 , wlan0是无线配置

ip_address就是静态IP , 后面要接/24

routers是网关sudo

static domain_name_servers是DNS

禁止休眠,屏幕常亮

https://blog.csdn.net/u011720560/article/details/78288128

1
该设置应用于2017-06-21-raspbian-jessie版本

我想让连接树莓派的HDMI屏幕一直显示,然后从网上找了许多关于禁止休眠的设置,最终找到了方法,那些方法估计是用在老版本系统上的。
其中Raspbian使用了轻量桌面显示管理器即lightdm,通过该管理器可对xserver桌面会话交互、显示等进行设置.

步骤

1.打开lightdm.conf

1
sudo vi /etc/lightdm/lightdm.conf

2.修改lightdm.conf

找到[SeatDefaults]段下的’xserver-command’,取消注释,修改为如下:

1
#xserver-command=X

修改为

1
xserver-command=X -s 0 -dpms
  • -s # –设置屏幕保护不启用
  • dpms 关闭电源节能管理

3.重启

1
reboot

参考连接

raspberry-pi-sleep-mode-how-to-avoid

VNC 连接树莓派

https://blog.csdn.net/u012952807/article/details/70225700

树莓派的Raspbian集成了VNC Server,默认却是不开启的,需要 raspi-config 的 interface 内开启,然后 reboot 后生效。

VNC client 推荐使用 VNC viewer:http://mac.softpedia.com/get/Network-Admin/VNC-Viewer.shtml

使用 waveshare 的 5 寸屏幕

http://www.waveshare.net/wiki/5inch_HDMI_LCD_(B)

在 /boot 目录下的 config.txt 文件尾部追加:

1
2
3
4
5
6
max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
hdmi_drive=1

图形界面开发快捷方法

使用 VNC 连接树莓派作显示,使用 Netatalk 来直接访问并编辑树莓派上的代码,比树莓派直接连个显示器来开发要方便多了。

PyInstaller

在树莓派上 pip3 installer pyinstaller 后,在 shell 中却找不到 pyinstaller 可执行文件,用 pip3 show -f pyinstaller 查看发现其路径在 /home/pi/.local/bin/ 目录下,而此目录不在 PATH 内,所以 shell 内找不到 pyinstaller,很简单,把其在 .bashrc 加入 PATH 就好了: PATH=$PATH:/home/pi/.local/bin/

raspi-config 的命令行用法

在把树莓派用作产品批量生产时,用图形化的 raspi-config 是低效且易错的,所以命令行模式的 raspi-config 就很有用了

http://www.52pi.net/archives/623

https://github.com/raspberrypi-ui/rc_gui/blob/master/src/rc_gui.c#L23-L70

比如说要 expand filesystem,那么使用命令:sudo raspi-config nonint do_expand_rootfs 就可以了。

这样的好处是可以把配置命令集合到 shell 脚本内,生产时只需执行这个脚本就可以配置好树莓派了。

树莓派 Wi-Fi 抓包

https://www.jianshu.com/p/8a27249997c0

http://www.360zhijia.com/360anquanke/309676.html

https://blog.csdn.net/QS_0928/article/details/77387335

https://www.cnblogs.com/sjqlwy/p/zero_otg.html

应该可以用在 windows 上抓包

USB 供电和 HUB

若屏幕使用 USB 供电,那么接入的 HUB 就必须自带电源供电,否则 USB 插入设备不被识别。

性能模式和 CPU 主频

http://bbs.elecfans.com/jishu_804044_1_1.html

树莓派默认的性能模式是 ondemand,即按需快速动态调整CPU频率,此模式下会根据供电,CPU 温度和计算量自动的调整频率。

https://blog.csdn.net/zhenwenxian/article/details/6196943

1
2
3
4
5
6
7
8
9
10
cpufreq是一个动态调整cpu频率的模块,系统启动时生成一个文件夹/sys/devices/system/cpu/cpu0/cpufreq/,里面有几个文件,其中scaling_min_freq代表最低频率,scaling_max_freq代表最高频率,scalin_governor代表cpu频率调整模式,用它来控制CPU频率。

1,performance :顾名思义只注重效率,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。
2,powersave:将CPU频率设置为最低的所谓“省电”模式,CPU会固定工作在其支持的最低运行频率上。

因此这两种governors 都属于静态governor,即在使用它们时CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种governors 对应的是两种极端的应用场景,使用performance governor 是对系统高性能的最大追求,而使用powersave governor 则是对系统低功耗的最大追求。

3,Userspace:最早的cpufreq 子系统通过userspace governor为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置。
4,ondemand 按需快速动态调整CPU频率,一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率。
5,conservative 与ondemand不同,平滑地调整CPU频率,频率的升降是渐变式的,会自动在频率上下限调整,和ondemand的区别 在于它会按需分配频率,而不是一味追求最高频率。

要修改性能模式,有以下三种方法:

  • 命令行内修改:

    https://www.guokr.com/post/687371/

    sudo -i 切换到root用户,然后再echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

    或者:

    https://raspberrypi.stackexchange.com/questions/9034/how-to-change-the-default-governor?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

    sudo sh -c "echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"

  • 启动时修改:

    https://www.raspberrypi.org/forums/viewtopic.php?t=114536

    Have a look at /etc/init.d/raspi-config that controls the on-demand governor during boot up.

    把 /etc/init.d/raspi-config 内的 ondemand 修改为 powersave

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ...
    case "$1" in
    start)
    log_daemon_msg "Checking if shift key is held down"
    if [ -x /usr/sbin/thd ] && timeout 1 thd --dump /dev/input/event* | grep -q "LEFTSHIFT\|RIGHTSHIFT"; then
    printf " Yes. Not enabling powersave scaling governor"
    log_end_msg 0
    else
    printf " No. Switching to powersave scaling governor"
    SYS_CPUFREQ_GOVERNOR=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    if [ -e $SYS_CPUFREQ_GOVERNOR ]; then
    echo "powersave" > $SYS_CPUFREQ_GOVERNOR
    echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    fi
    log_end_msg 0
    ...
坚持原创技术分享,您的支持将鼓励我继续创作!