你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32和RPi进行无线编程和调试

[复制链接]
木木&点点 发布时间:2018-11-30 15:39
每次想要更改机器人的某些功能时,您是否厌倦了连接程序员?为什么不试试无线编程呢?
5-1.jpg
项目中使用的东西
硬件组件
RPi 3型号B  ×1
乌龟探测器  ×1
软件应用和在线服务
故事
使用STM32和RPi进行无线编程和调试
你是否厌倦了每次需要在你的机器人中修改软件时都连接程序员? 你还记得你为了修复软件里的小漏洞而把一半的工作都分解了吗?现在情况不再是这样了! 使用任何支持SWD -串行线调试-和RPi的单片机,您可以使用WiFi连接轻松编程和调试您的uC !
等等,无线编程?你在开玩笑…
是的,我们也很惊讶,在互联网上几乎没有什么可以实现它。事实上,我们是在开玩笑,因为程序本身不是无线的。单片机必须连接到一些设备,这些设备将被用作程序员。但是如果我们和RPi一起使用呢?我们都知道ssh与RPi的连接非常简单。那么,我们还需要什么?
来源
在这里,您可以找到所有帮助我们处理此功能的来源:
http://visualgdb.com/tutorials/arm/st-link/
http://vedder.se/2012/12/debugging-the-stm32f4-using-openocd-gdb-and-eclipse/
http://stackoverflow.com/questions/5535110/stm32-gdb-openocd-commands-and-initialization-for-flash-and-ram-debugging
http://openocd.org/doc/html/index.html
http://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi/wiring-and-test
http://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi/compiling-openocd
最后一页对我们来说是最重要的。它描述了与我们想要的完全相同的东西,但是用Arduino代替STM32单片机。
让我们从电子设备开始
首先要做的是下载你的单片机的数据表,并找到哪些引脚是启用为SWD:
现在,让我们仔细看看adafruit上的RPi输出:
5-2.jpg
注意编号的不同!在adafruit网站上,作者直接使用来自处理器的数字,而不是像我们大多数人那样使用标题数字。
5-3.jpg
确保你的项目里的线路正确!
OpenOCD
开放式片上调试器(OpenOCD)旨在为嵌入式目标设备提供调试、系统内编程和边界扫描测试。
OpenOCD项目网站
我们使用OpenOCD定义规则,使STM32能够直接从RPi微处理器进行编程。
RPi上安装OpenOCD
不幸的是,OpenOCD不能从存储库中获得,我们需要从头编译它。不过,在这里,您可以找到如何执行此操作的优秀教程。
查找接口和目标
界面描述了我们的程序员-在我们的例子树莓派。让我们输入RPi的控制台:
ls/usr/local/share/openocd/scripts/interface
现在您应该看到支持的设备。我们对RPi 2-native.cfg很感兴趣。写下这个文件的名称(好的,你可以稍后从这里复制它;)
注意:如果你有RPi 3,那就不要麻烦了。在RPi 2和RPi 3中,接口完全相同,所以这个文件对它们都适用。
目标描述了一个我们想要编程的单片机。让我们来看看支持的那些:
ls/usr/local/share/openocd/scripts/target/
不错的名单,对吧?找到你的单片机,写下文件名。在我们的例子中是stm32f0x.cfg。
准备OpenOCD配置文件
现在是时候为我们的单片机写配置文件了。作为一个很好的起点,我们选择了adafruit:
source [findinterface/raspberrypi2-native.cfg]
transportselect swd
set CHIPNAMEat91samd21g18
source [findtarget/at91samdXX.cfg]
# did not yetmanage to make a working setup using srst
#reset_configsrst_only
reset_config  srst_nogate
adapter_nsrst_delay100
adapter_nsrst_assert_width100
init
targets
reset halt
如果是STM系列,我们不需要提供芯片名称,相反,将workarUNKze设置为0x2000是至关重要的。修改后的文件如下:
source [findinterface/raspberrypi2-native.cfg]
transportselect swd
setWORKAREASIZE 0x2000
source [findtarget/stm32f0x.cfg]
reset_configsrst_only srst_nogate
adapter_nsrst_delay100
adapter_nsrst_assert_width100
init
targets
reset halt
在SD卡上找一个合适的地方,创建一个名为openocd的文件。然后粘贴上面的代码。
验证电子设备
要验证是否一切正常,请转到放置openocd的目录。cfg文件及类型:
sudo openocd
现在,您应该看到类似的内容:
5-4.jpg
Eclipse
这是有可能的,但很难从shell中直接闪速和调试软件。这就是为什么把Eclipse配置为OpenOCD编程和调试的原因。
确保GDB能够与OpenOCD建立连接
首先,我们需要确保没有任何东西(例如防火墙)阻止连接
在RPi上执行sudo openocd
在本地的计算机上,通过执行arm - i - eabi - gdb,然后目标是192.1689。23333的地址,192。168.2。109是RPi的IP地址
如果一切正常,你应该看看:
在本地计算机
5-5.jpg
关于RPi
5-6.jpg
最后一个测试是建立本地计算机和RPi的telnet连接。让OpenOCD在RPi上运行,并在本地计算机上执行:telnet 192.168.2.109 4444。记得换IP!你现在应该接通了。输入exit退出。
安装OpenOCD Eclipse插件
要远程使用OpenOCD,您需要安装GNU ARM C/c++ OpenOCD调试插件。在这里,您将找到一个很好的教程如何做到这一点。
设置运行配置
要在现有项目中使用无线编程和调试,您需要更改运行配置。
在eclipse中打开项目并选择Run ->Run Configurations……
在新窗口中,右键单击GDB OpenOCD调试并选择new
5-7.jpg
给配置取个好名称,并在“调试”选项卡中更改设置。
5-8.jpg
对于调试配置重复上述步骤(使用相同的配置)——> GDB OpenOCD调试
在同一个窗口中添加GDB硬件调试配置,设置如下:
5-9.jpg
测试它!
编写一些软件,并在Raspberry上运行sudo openocd。
5-10.jpg
您应该能够实时跟踪程序和所有寄存器值;
玩得开心!
5-11.jpg
最后
无线调试为爱好者和专业人士提供了无限的机会。最后,不需要创建另一个接口/套接字/连接到flash或调试微控制器。
该解决方案是作为Turtle Rover软件的一部分开发的,但它是共享的开放源代码,供每个人使用。
了解更多信息:http://turtlerover.com
5-12.jpg
# ^* ^! D) B  Q1 y) ~+ y  |

评分

参与人数 1 ST金币 +20 收起 理由
STMCU + 20 活动奖励

查看全部评分

收藏 评论1 发布时间:2018-11-30 15:39

举报

1个回答
tanic 回答时间:2018-11-30 22:39:33
RPI==树莓派

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版