
每次想要更改机器人的某些功能时,您是否厌倦了连接程序员?为什么不试试无线编程呢? ![]() 项目中使用的东西 硬件组件 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输出: ![]() 注意编号的不同!在adafruit网站上,作者直接使用来自处理器的数字,而不是像我们大多数人那样使用标题数字。 ![]() 确保你的项目里的线路正确! 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 现在,您应该看到类似的内容: ![]() Eclipse 这是有可能的,但很难从shell中直接闪速和调试软件。这就是为什么把Eclipse配置为OpenOCD编程和调试的原因。 确保GDB能够与OpenOCD建立连接 首先,我们需要确保没有任何东西(例如防火墙)阻止连接 在RPi上执行sudo openocd 在本地的计算机上,通过执行arm - i - eabi - gdb,然后目标是192.1689。23333的地址,192。168.2。109是RPi的IP地址 如果一切正常,你应该看看: 在本地计算机 ![]() 关于RPi ![]() 最后一个测试是建立本地计算机和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 ![]() 给配置取个好名称,并在“调试”选项卡中更改设置。 ![]() 对于调试配置重复上述步骤(使用相同的配置)——> GDB OpenOCD调试 在同一个窗口中添加GDB硬件调试配置,设置如下: ![]() 测试它! 编写一些软件,并在Raspberry上运行sudo openocd。 ![]() 您应该能够实时跟踪程序和所有寄存器值; 玩得开心! ![]() 最后 无线调试为爱好者和专业人士提供了无限的机会。最后,不需要创建另一个接口/套接字/连接到flash或调试微控制器。 该解决方案是作为Turtle Rover软件的一部分开发的,但它是共享的开放源代码,供每个人使用。 了解更多信息:http://turtlerover.com ![]() |
RPI==树莓派 |