完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CHH22307包含PHY,使用RT,其他系统,主任务仅使用一个线程配置,无论是仅接收、发送、回传、回传,几秒级或几大几倍的数据量秒后就死机。
请帮忙分析是什么问题,谢谢。 代码: 而(1) { rt_thread_delay(500); //* 等待 eth phy 启用 host = (struct hostent*)gethostbyname(url); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(port); serveraddr.sin_addr = *((struct in_addr *)host->h_addr); rt_memset(&(serveraddr.sin_zero), 0, sizeof(serveraddr.sin_zero)); if((sock=socket(AF_INET,SOCK_STREAM,0)) == -1) { rt_kprintf("套接字错误 sock=%d ",sock); 休息; } if (connect(sock, (struct sockaddr *)&serveraddr, sizeof(struct sockaddr)) == -1) { rt_kprintf("连接失败! "); 关闭套接字(袜子); 继续; } 别的 { rt_kprintf("连接sock_%d成功 ",sock); } 而(1) { /*bytes_received = recv(sock, rx_buffer, sizeof(rx_buffer) - 1, 0); 如果 (bytes_received < 0) { //接收超时,继续接收下一个socket 休息; } 别的 { rx_buffer[bytes_received] = 0; }*/ //int err = send(sock, rx_buffer, strlen(rx_buffer), 0); int err = send(sock, rx_buffer, 100, 0); //rt_thread_mdelay(100); 如果(错误 < 0){ rt_kprintf("发送时出错:errno % . ", err); rt_kprintf("正在关闭套接字并重新启动..."); // 关机(袜子,0); 关闭套接字(袜子); rt_thread_mdelay(1000); 休息; } } } 打印信息,但经常不完整。 | / - RT - 线程操作系统 / | 4.0.4 构建 2022 年 3 月 25 日 2006 - 2021 版权所有 rt-thread 团队 lwIP-2.1.2 已初始化! 单片机:CH32V307 系统时钟:144000000Hz msh >连接失败! 连接失败! 连接 sock_0 成功 状态! 断言:../rt-thread/components/net/lwip-2.1.2/src/api/api_msg.c 中的 1836,线程 etx 硬的 mepc:0bd3fca8 原因:00000001 mtval:0bd3fca8 LWIP 配置 测速速度 |
|
相关推荐
11个回答
|
|
您好,您可以尝试以下几个方法:
|
|
|
|
/************************************************* ******************************
* 函数名称:HardFault_Handler * 描述:此函数处理硬故障异常。 * 输入:无 * 返回:无 ****************************************************** *****************************/ 无效硬故障处理程序(无效) { GET_INT_SP(); rt_interrupt_enter(); rt_kprintf(“hardfultrn”); rt_kprintf(“mepc:%08xrn”,__get_MEPC()); rt_kprintf(“mcause:%08xrn”,__get_MCAUSE()); rt_kprintf(“mtval:%08xrn”,__get_MTVAL()); 而(1); rt_interrupt_leave(); FREE_INT_SP(); } 从打印信息,明显是进入了HardFaultHandler,此时协议栈及都中断了 |
|
|
|
您好,您可以查看一下此时硬件故障的打印值,看看是否是内存管理等原因导致的
|
|
|
|
我想知道,这几个是什么,意味着我也遇到了这个问题。
rt_kprintf("mepc:%08xrn",__get_MEPC()); rt_kprintf("mcause:%08xrn",__get_MCAUSE()); rt_kprintf("mtval:%08xrn",__get_MTVAL()); |
|
|
|
您好,mepc、mepc、mtval预审mcSR,其中的pc、mtval预审mcSR,其中,或支付验证当前值异常时的下PC指令,关闭前异常执行的指令PC,退出或标准后值的返回地址在保存我当前的位置。由于当前支付的异常类型,可以通过该查看引发的原因或编号发现异常。当进入手册下载异常和链接时,将这三个 CSR 的价值自动提供,可QingKeV 参考手册更新我们的介绍。
|
|
|
|
游戏功能:
无效硬故障处理程序(无效) { GET_INT_SP(); rt_interrupt_enter(); rt_kprintf("hardfultrn"); rt_kprintf(" %srn", rt_thread_self()->name); rt_kprintf("mepc:%08xrn",__get_MEPC()); rt_kprintf("mcause:%08xrn",__get_MCAUSE()); rt_kprintf("mtval:%08xrn",__get_MTVAL()); 而(1); //NVIC_SystemReset(); //硬件错误就重启模块 rt_interrupt_leave(); FREE_INT_SP(); } 输出: 硬的 tcpip 机电:706e7074 mcause:00000002(异常?保留?) mtval:00000000 文档: |
|
|
|
您好,mepc 的值为 706e7074 说明异常的返回值,这个地址超出了我们的 FLASH 的范围,地址溢出了;mcause 的值为 2,说明是指示导致异常;mtval 的值为 00000000,即 70000000,即是否非法指令的指令编码为000000000000导致异常的原因可能是内存地址溢出了,0000导致异常的原因是,可检查不是定义的范围越界导致的,或查看下标的范围越界。
|
|
|
|
我也遇到了同样的问题,V307+RTT+LWIP,即使没有创建任何任务,在主里电灯的后台仍然会报出硬件错误,PC会指向错误的地址
|
|
|
|
|
|
|
|
你好,看看8楼的分析,根据打印的信息,感觉你的问题和。
|
|
|
|
修改源工程已发至lzs@wch.cn,目前工程基于RT Thread Studio下的CH32V307工程创建:打开LWIP,创建呼吸灯线程,脚本RAM大小至128K。
目前进展:打开RTT的跟踪和溢出检测后,排线后复现栈溢出,因此确实是高深的溢出导致的,但溢出原因未明。 调试截图: |
|
|
|
只有小组成员才能发言,加入小组>>
453 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2865 浏览 2 评论
2351 浏览 1 评论
800浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
625浏览 1评论
489浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
353浏览 1评论
628浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 09:19 , Processed in 1.197047 second(s), Total 97, Slave 80 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号