CrisJay
CrisJay - 认证专家

注册于 1 year ago

回答
27
文章
3
关注者
2

你所说的日志应该指的是 Mb_TCP_thread restart for listen server_fd<0 说明你的modbus tcp服务没有起来,而且是失败在modbus_tcp_listen上。你可以去modbus_tcp_listen里看看为什么没有监听成功。

看一下有没有打开 LWIP 选项,如果没有打开 TFTP 就不会显示。

LWIP官方是有SNMP例程的,推荐题主阅读一下源码。
源码路径:lwip/src/apps/snmp
image.png

你好,如果能够把错误的输出截个图发出来就更好了

image.png

点击图片可放大查看,摘自 RT-Thread 官方文档原文链接

看了一下题主成功的map文件,最后的统计数据如下:
image.png
可以看到总的ROM大小已经到达了508.68kB,也就是说在题主成功的状态下flash已经占用了508.68kB,而Pandora开发板的flash总大小为512kB,剩余空间也就只有3.32kB,自然就不够了。
并不是说cjson占用存储空间大,而是题主没用cjson时已经占用了99%的存储空间,必然再加一个模块就会导致存储空间不足。
题主可以开一下优化看看能否缩小代码占用空间,如果优化后仍不足那就需要手动优化了。

题主检查一下在调用 free 的时候传入的地址是否是已经释放过的内存地址,或者是非 malloc 动态申请的内存地址。

可以通过如下方式添加多个DNS地址

dns_setserver(0, &dns_s0);
dns_setserver(1, &dns_s1);
dns_setserver(2, &dns_s2);

当然在程序中也可以调用 dns_setserver 来动态设置DNS地址

netdev 组件中会默认导出 ping 功能支持,如果使用系统中包含并开启 netdev 组件,该配置选项在 ENV 中将不会被显示。 (摘自netuils/ping README)
请题主确认一下是否开启了netdev组件😉


netdev 组件在 RT-Thread Components -> Network -> Network interface device 下开启或关闭:
image.png

首先得弄清楚通讯失败的本质是什么,也就是到底是哪个处理导致的RTU通讯失败,如题主描述的被高优先级任务切走这个机制本身并不会导致通讯的失败,如果题主能够定位本质问题的话也就能提供对应的解决方案了。

可能是由于是elm-chan 开发的 fatfs ,所以简称elm-fatfs。

我个人倒是没有遇到过这个问题,之前我的问题是直接会失败而不是挂起,可能需要看看其他坛友有没有类似问题的解决方案了

可以做动态网页,对于题主处理session内存的方式我个人认为可以尝试一下。
动态网页方面题主可以参考我的一个业余正在开发的项目:
部署效果,访问不了点下面备用链接
部署效果备用(访问速度慢)
网页源码
后端源码

这个需要根据同一时间的最大连接数来判断,同一时间连接越多,占用内存越大。
下面贴一个RTT 官方的测试结果:
image.png
但是上述消耗并不一定是准确的,不过其计算方法是对的,也就是说会随着连接数量的增加而增加。

题主可以看一下你所框出的下面一行文字,可编程字节为1-256,所以说是可以写入256个字节的,但是这有个前提,正如题主所说写之前应该先擦除对应扇区,其实就是因为flash的写入操作只能是把1写成0,而不能把0写成1,而擦除操作就是把对应区域的0全部变成1,这样就可以开始有效的写入。如果不进行擦除操作,并且写入的区域已经有值的话由于无法将原来存在的0变成1,就会产生写入后读取的值不同于写入的值。

所以如果想要在已写入的区域写入新值,那么就必须先擦除这个区域,而一次擦除最小就是4096字节。

发布
问题

分享
好友