树莓派GPIO配置驱动舵机时出现malloc内存分配错误求助
树莓派GPIO驱动舵机出现malloc内存分配错误的排查方向
问题重现
在树莓派上使用Python的RPi.GPIO库配置GPIO驱动舵机时,执行代码触发内存分配错误,代码及报错如下:
代码:
# Import libraries import RPi.GPIO as GPIO import time # Set GPIO numbering mode GPIO.setmode(GPIO.BOARD) # Set pin 11 as an output, and set servo1 as pin 11 as PWM GPIO.setup(11,GPIO.OUT) servo1 = GPIO.PWM(11,50) # Note 11 is pin, 50 = 50Hz pulse
报错信息:
malloc(): invalid size (unsorted) Aborted
已确认舵机为全新品,引脚连接无误,以下是可能的原因及解决方法:
可能的原因及解决办法
RPi.GPIO库版本存在bug
旧版RPi.GPIO在PWM初始化环节可能存在内存分配bug,优先尝试更新库到最新稳定版:sudo pip install --upgrade RPi.GPIO若更新后问题仍存在,可替换为更稳定的
gpiozero库(注意引脚编号为BCM模式,BOARD11对应BCM17):from gpiozero import Servo from time import sleep servo = Servo(17) servo.min() sleep(1) servo.mid() sleep(1) servo.max()Python环境与系统架构不兼容
若树莓派为64位系统但Python是32位版本,可能引发内存分配异常。执行以下命令检查Python架构:python3 -c "import platform; print(platform.architecture())"若显示32位,建议安装对应64位的Python版本,或切换到32位树莓派系统。
系统内存不足或内存碎片堆积
后台进程过多导致内存不足,或长期运行产生的内存碎片会触发这类错误。先清理内存再测试:sudo sync && sudo sysctl -w vm.drop_caches=3同时可以关闭一些不需要的后台服务释放资源。
GPIO权限不足引发底层异常
低权限下的GPIO操作可能伪装成内存分配错误,尝试用sudo运行脚本:sudo python3 your_script.py
内容的提问来源于stack exchange,提问作者Andrew Mason
相关产品推荐
相关产品推荐

