Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm 如何通过USB读取swd输出?_Arm_Stm32_Libusb 1.0_Stm32f4discovery_Cortex M - Fatal编程技术网

Arm 如何通过USB读取swd输出?

Arm 如何通过USB读取swd输出?,arm,stm32,libusb-1.0,stm32f4discovery,cortex-m,Arm,Stm32,Libusb 1.0,Stm32f4discovery,Cortex M,我正在尝试编写一个类似于stmicro的应用程序,它通过USB从运行在设备()上的嵌入式应用程序读取变量。如何读取来自电路板的输出(变量),最好是使用C#应用程序的应用程序?您应该四处搜索,看看是否有某种API或库可用于与SWD调试器对话。或者他们有一个命令行界面,你可以从你的程序中运行。您可以尝试联系制造商(ST) 如果他们不支持你,那么是时候戴上逆向工程的帽子了。我会得到一个USB协议分析仪。卖的很好,我已经用他们400美元的一个调试我的USB设备很长一段时间了。您的操作系统可能还具有一些内

我正在尝试编写一个类似于stmicro的应用程序,它通过USB从运行在设备()上的嵌入式应用程序读取变量。如何读取来自电路板的输出(变量),最好是使用C#应用程序的应用程序?

您应该四处搜索,看看是否有某种API或库可用于与SWD调试器对话。或者他们有一个命令行界面,你可以从你的程序中运行。您可以尝试联系制造商(ST)

如果他们不支持你,那么是时候戴上逆向工程的帽子了。我会得到一个USB协议分析仪。卖的很好,我已经用他们400美元的一个调试我的USB设备很长一段时间了。您的操作系统可能还具有一些内置USB调试功能。然后运行STM STUDIO,看看当您单击各种按钮时会发生什么。希望你能找到答案

您可能需要对SWD协议有深入的了解,以便了解您在分析仪上看到的USB通信量。

如果您使用OpenOCD(如果您通过USB连接的ST链路进行开发和调试,则可能使用OpenOCD)然后,您可以通过端口4444上的telnet连接到OpenOCD,并发出读取和写入内存的命令。您可以通过交互式telnet会话来尝试这一点。在telnet会话中,读取32位变量的方法是
mdw
。例如,要读取RAM中地址0x20000024处的变量,请使用命令
mdw 0x20000024
,并期望得到类似
0x20000242:89ABCDEF
的响应,其中89ABCDEF表示十六进制值。可以使用
UInt32 myUInt32=UInt32.Parse(myHexString,System.Globalization.NumberStyles.HexNumber)这样的表达式转换C#中的十六进制值

有一个教程.pdf描述了如何使用telnet连接到OpenOCD

那么问题是。。。应该使用什么内存地址?有两种方法可以获取地址:从linker.map文件(通过编程或手动)获取地址,或者使用库从.elf文件解析和提取调试信息

我还没有找到一个在一个包中完成这一切的自包含DLL或.net包装器


另一个类似于STM Studio的工具是T.I.,它适用于T.I.的ARM处理器,并通过JTAG或SWD进行通信。我没有尝试将GUI Composer与STM处理器一起使用,但其概念类似,即在不修改FW的情况下,将调试接口用作GUI的通信协处理器。

要实现哪个USB类?STM Studio正在使用JTAG或SWD调试器,因此不太清楚您希望如何使用USB实现相同的功能。我正在使用SWD调试器。他们(St Micro)有令人印象深刻的应用程序STMStudio,可以动态读取SWD。一旦提供了运行.elf文件,它将列出所有变量并读取当前值dynamicallyOk。。当我说我想读取SWD调试器输出/并使用usb/SWD将SWD命令写回主板时,我认为这是显而易见的。我是否使用HID或任何其他类对我来说都无关紧要。。任何允许我通过usb读/写swd的东西都可以。所以你有一个swd调试器,它通过usb向你的计算机发送信息,你想在你的应用程序中读取这些usb消息,对吗?您是否有随SWD调试器提供的API?是哪一个?