This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP432E401Y:lwIP 库中出现硬故障、尝试实现 MODBUS

Guru**** 2032800 points
Other Parts Discussed in Thread: MSP432E401Y
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1432560/msp432e401y-hard-fault-in-lwip-library-trying-to-implement-modbus

器件型号:MSP432E401Y

工具与软件:

您好!

我正在尝试在 MSP432E401Y 上的一个项目中实施 Modbus。  我以 lwIP 中的 HTTPD 代码为例、创建了一个相当简单的处理程序和回调集。

如果我运行代码、系统将在接受连接后崩溃(我使用命令"telnet 502"(用于生成连接)。  我已经尝试单步执行代码、但如果它在调试器中单步执行、则不会发生硬故障。  特定的硬故障是故障地址为0x99200111的精确总线错误。  我是否有办法尝试找出导致此错误的代码?


我的虚拟服务器实现如下所示:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* Data has been received on this pcb.
* For HTTP 1.0, this should normally only happen once (if the request fits in one packet).
*/
static err_t MOD_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err){
USB_Send_String("MODBUS: recv();");
if(p->next != NULL){
USB_Send_String("MODBUS: Multi-payload over capacity;");
return ERR_MEM;
}
struct MOD_Frame * frame = (struct MOD_Frame*) p->payload;
switch(frame->function){
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX



关于为何无法按预期工作、你们都有什么建议或想法吗?  感谢你能抽出时间。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    具体的硬故障是故障地址为0x99200111的精确总线错误。

    0x99200111在此处理器的存储器映射中不是有效地址。 因此、非法地址将导致总线故障、从而使处理器进入异常状态。 您是否分配了足够的堆栈? 我建议您增加堆栈大小以查看问题是否消除。  什么是 USB_USB?Send_String 该函数是用于通过 UART 或 USB 发送文本字符串吗?

    本应用手册  诊断 与 MSP432E 芯片相同的 TM4C129 MCU 在 StellarisRegistered微控制器中的软件故障将有助于找到导致故障生成的指令。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     我没有听到你的声音。 我现在将结束该主题。 如果您有任何更新、您可以写入此帖子、并且状态将更改为"打开"。