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.

[参考译文] TM4C129XNCZAD:托管 Web 服务器的电路板崩溃

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1323118/tm4c129xnczad-crash-of-board-hosting-web-server

器件型号:TM4C129XNCZAD

您好!

我使用的系统有一个托管在 TM4C129XNCZAD 微控制器上的 Web 服务器。 客户端每5秒向服务器发送一次周期性 HTTP 请求。 有时 TM4C 电路板会崩溃、我想 了解 根本原因。  

我调查了崩溃信息,它让我,它发生在以下 API 从 NDK 堆栈: SockPcbFind ,
特别是在以下条件下:  
/*本地端口 NULL 表示套接字未绑定*/
if (!ps->LPort)
继续;

我假设客户端向服务器发送请求的速率可能很快(每5秒)、这是否是崩溃的可能原因?


以下是崩溃信息:

============================ 崩溃报告================================
错误 ID:0x11450000
错误消息:e_busFault:PRECISERR:立即总线故障、确切的地址已知、地址:f0500090
错误 arg0:0xab008
错误 arg1:0xf0500090
文件名:
行号:1172
模块编号:32814
结束转储错误信息
结束错误挂钩
开始异常


============================ 崩溃原因信息详细信息:=========================================== bogus 异常返回值:0x000b6bab。
硬故障 ID = 0x11170000 -详细信息:强制
Thschoclia Type_Task 发生异常。
任务名称:用户的 NDK 堆栈线程、句柄:0x2003e4.
任务堆栈基地址:0x200313d0。
任务堆栈大小:0x800。
R0 = 0x00000000 R8 = 0xb600010a
R1 = 0x4400010a R9 = 0x00000000
R2 = 0x00005000 R10 = 0x200319d8
R3 = 0xf0012140 R11 = 0x00005000
R4 = 0xf04ffc R12 = 0xcb3aa600
R5 = 0x000024ea SP (R13)= 0x200319a0
R6 = 0x00000009 LR (R14)= 0x000b6bab
R7 = 0x4400010a PC (R15)= 0x000c8324
PSR = 0xa1000000
ICSR = 0x00423803
MMFSR = 0x00
BFSR = 0x82
UFSR = 0x0000
HFSR = 0x40000000
DFSR = 0x00000000
MMAR = 0xf0500090
BFAR = 0xf0500090
AFSR = 0x00000000

================================================================
结束异常


谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    错误消息:e_busFault:PRECISERR:立即总线故障,确切地址已知,地址:f0500090
    [/报价]

    您好!

     我不确定是什么原因导致了崩溃、但错误表明处理器在错误地址0xf0500090处遇到总线故障。 这是一个未实现的地址。 错误很可能是由于堆或堆栈内存不足所致。  

     请参阅  请参阅其中 Todd 附加了一个 HTTP 示例和演示文稿。 在他的演示中、他提到了堆大小分配的重要性。  

    还请使用以下链接诊断 TI-RTOS 相关问题。  

    调试

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

    您好

    我按照建议将 dchild 任务的堆栈大小增加到4096字节、但电路板仍在同一地址崩溃。

    此外、堆转储表明我们有足够的空闲内存:
    总堆= 157696
    可用总数= 32576
    最大自由= 15152

    似乎我们正在尝试在 SockPcbFind 函数中访问一个不存在的上下文。 在我们记录的崩溃报告中、我发现在电路板崩溃时、dchild 任务被删除。 在未创建 dchild 任务的情况下、我们如何访问 SockPcbFind 上下文?

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

    您好!

     我不确定问题的原因是什么。 我所能知道的就是、崩溃是由地址0xF0500090处的总线故障导致的。 这是存储器中未实现的地址。 任何到非法地址的访问将生成一个故障。  

    ============================ 崩溃报告================================
    错误 ID:0x11450000
    错误消息:e_busFault:PRECISERR:立即总线故障、确切的地址已知、地址:f0500090

    如果运行 stock NDK HTTP GET 示例、是否存在同样的问题? 您能否将此示例与您的代码及其存储器设置进行比较?

    您是否可以使用以下链接对异常进行故障排除?

    调试