Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread发布
RT-Thread 1.2.1版本发布说明
发布于 2014-04-08 16:54:47 浏览:13456
订阅该版
RT-Thread 1.2.1版本是原有的1.2.0版本的bug修正版本,也是1.2.0系列的第一个修正版本,原则上不添加任何的新功能,我们尽量会按照每个季度一个修订版本的方式推进。大家在使用的过程中有什么问题还请反馈给我们,这些问题很可能会在下个版本中修正! 以下是更改记录: **[内核]** * 用户应用,增加用户应用命令行参数支持; * 在挂起一个任务时,把相应的定时器也关闭; **[BSP]** * BeagleBone,加入更多串口驱动支持; * 移除BSP中rt_device_init_all函数调用,改成打开设备时自动进行初始化; * LPC176x,移除components初始化管理器; * LPC4088,修正LED驱动的问题; * STM32F107,移除components初始化管理器; **[组件]** * 文件系统,ELM FatFS加入对扇区不匹配情况下的信息输出,这样能够及时定位问题; * 文件系统,NFS网络文件系统修正相关的一些编译警告信息; * 文件系统,copy命令加入文件夹方式复制功能; * 文件系统,RAMFS,加入到components初始化管理器中; * 文件系统,ROMFS,用于转换文件的工具mkromfs.py,增加Linux主机的支持; * CMSIS更新到3.2.0版本; * 串口驱动框架加入serial->ops->control的调用; * 命令行系统,优化msh,支持用户应用的命令行参数; * 命令行系统,当使用msh时,默认使用msh >的命令行提示符; * TCP/IP协议栈,导出更多的lwIP接口给用户应用; * POSIX thread,修正了同时使用lwIP组件时的编译警告; * 第三方组件,加入TJPGD的移植,加入libpng的移植; **[编译脚本]** * 固件加入scons --target=ua -s,用于准备用户应用环境; **[发布后记]** * RT-Thread携带了众多的BSP,不一定能够一一保证每个分支上把RT-Thread上相应的功能使用起来。所以针对这种情况,我们有一款评估用的硬件开发板:[RealBoard 4088](http://www.rt-thread.org/node/82),在上面力求把一些相关例程都添加上,这样在一个基本的BSP基础上,可以对照着把其他的组件、功能添加进去; * [RealBoard 4088](http://www.rt-thread.org/node/82)使用的RT-Thread版本主要以RT-Thread 1.2.1版本为主。 **[下载链接]** [网盘](http://pan.baidu.com/s/1gdIaAQ3) ![RT-thread_lwip.png](https://oss-club.rt-thread.org/uploads/5926_44185b1217dad3d18c1d85ca3ef6d219.png) 下载附件 [pcm_read.c](https://oss-club.rt-thread.org/uploads/5926_a37e607b2fc01d201cf0b910f4d51480.c) 下载附件 [codec_wm8950_i2c.c](https://oss-club.rt-thread.org/uploads/5926_1eaf5744a3c4b6521ce585c0f3195a0d.c)
查看更多
17
个回答
默认排序
按发布时间排序
thomasgds
2014-06-30
这家伙很懒,什么也没写!
我在STM32F207IG板子上调试RT-Thread+LWIP,发现驱动能加载,但是程序运行后不能ping通设备: 这个板子外接的PHY是DP83848c。 **启动后的log如下**: ``` | / - RT - Thread Operating System / | 1.2.1 build Jun 30 2014 2006 - 2013 Copyright by rt-thread team rtc is not configured please configure with set_date and set_time ETH FullDuplex ETH speed 100M BIST pass lwIP-1.4.1 initialized! TCP/IP initialized! ``` **网口配置如下:** ``` finsh>>list_if() network interface: e0 (Default) MTU: 1500 MAC: 00 60 6e 32 00 3a FLAGS: UP LINK_UP ETHARP ip address: 172.16.12.58 gw address: 172.16.1.254 net mask : 255.255.0.0 dns server #0: 208.67.222.222 dns server #1: 0.0.0.0 0, 0x00000000 ``` **但是从同一局域网下的172.16.12.55机器上ping这个设备,得不到响应**。 $:**ping 172.16.12.58** ``` PING 172.16.12.58 (172.16.12.58) 56(84) bytes of data. .... From 172.16.12.55 icmp_seq=799 Destination Host Unreachable From 172.16.12.55 icmp_seq=800 Destination Host Unreachable From 172.16.12.55 icmp_seq=801 Destination Host Unreachable From 172.16.12.55 icmp_seq=802 Destination Host Unreachable From 172.16.12.55 icmp_seq=803 Destination Host Unreachable From 172.16.12.55 icmp_seq=804 Destination Host Unreachable From 172.16.12.55 icmp_seq=805 Destination Host Unreachable From 172.16.12.55 icmp_seq=806 Destination Host Unreachable From 172.16.12.55 icmp_seq=807 Destination Host Unreachable From 172.16.12.55 icmp_seq=808 Destination Host Unreachable From 172.16.12.55 icmp_seq=809 Destination Host Unreachable From 172.16.12.55 icmp_seq=810 Destination Host Unreachable ``` 请教一下,可能是什么情况?
thomasgds
2014-06-30
这家伙很懒,什么也没写!
我是在RT-Thread的bsp中先在rtconfig.h中使能lwip,然后使用scons脚本编译一遍,再在keil中按照scons的要求直接添加相关的lwip源代码的,工程结构如下: [attach]0[/attach] 是不是驱动什么地方有问题? 现在直接使用UDP往外发送数据,发现数据没有传送到网络上,而且运行一段时间后就报告tcpip线程异常而崩溃了。 **发送程序片段如下**: ``` #if RT_SEND_UDP // lwip 初始化 p = pbuf_alloc(PBUF_RAW,sizeof(mempool),PBUF_RAM); //p->payload=(void *)mempool; IP4_ADDR(&ipaddr,172,16,12,55); UdpPcb = udp_new(); udp_bind(UdpPcb,IP_ADDR_ANY,1025); udp_connect(UdpPcb,&ipaddr,1024); #endif ``` **此处通过在while()循环内不停发送**; ``` #if RT_SEND_UDP p->len = p->tot_len = rx_size; memcpy(p->payload, codec_buffer, rx_size); udp_send(UdpPcb,p); #endif ``` **一段时间后内核异常,打印如下**: ``` finsh>>psr: 0x21000000 r00: 0x200052f8 r01: 0x10000000 r02: 0xf0000000 r03: 0x00000020 r04: 0x20005320 r05: 0xffffffff r06: 0x653c6225 r07: 0x00000000 r08: 0x20000248 r09: 0x20006118 r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x08011e79 lr: 0x080125b3 pc: 0x080125b2 hard fault on thread: tcpip thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- pcmcap 0x09 suspend 0x000001ac 0x00004000 0x000001ac 0x00000014 000 tshell 0x14 suspend 0x00000094 0x00000800 0x000001b4 0x00000002 000 tcpip 0x0c ready 0x00000068 0x00000400 0x00000128 0x00000011 000 etx 0x0f ready 0x00000090 0x00000200 0x00000090 0x00000010 000 erx 0x0f ready 0x00000090 0x00000200 0x000000c0 0x0000000f 000 tidle 0x1f ready 0x0000005c 0x00000100 0x0000006c 0x0000000c 000 mem manage fault: SCB_CFSR_MFSR:0x01 IACCVIOL ```
aozima
2014-06-30
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
1. 为何有两个驱动文件?建议使用soncs生成工程 2. 好好的socket接口不用,另外也有现成的udp示例,为何时要自己动pbuf, 如何保证这块没有问题? 设计时,驱动中打开dump,PC上也抓包
thomasgds
2014-07-01
这家伙很懒,什么也没写!
>1. 为何有两个驱动文件?建议使用soncs生成工程 --- 我是在rtconfig.h中选择LWIP选项,然后运行scons命令来编译工程,通过后再在MDK中按照scons的编译文件修改工程的,不知怎样使用scons来直接生成工程?还请指导一下,谢谢! 另外,从代码上来看,stm32f2_eth.c应该是一致到RT-Thread上的设备驱动文件,注册一个“e0”设备吧。stm32f2x_eth.c文件应该是ST提供的MAC外设的驱动文件。 不知理解是否正确?
thomasgds
2014-07-01
这家伙很懒,什么也没写!
另外发现一个现象,即如果频繁快速的rt_malloc(),并rt_free()堆上的空间,系统很快就会报告异常了。 现在主循环使用socket接口来发送数据了,但是问题仍出现,Socket代码如下: **创建socket**: ``` #if RT_SEND_SOCKET sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); if(sock < 0) { rt_kprintf("create socket failed. "); return; } memset(&toAddr,0,sizeof(toAddr)); toAddr.sin_family=AF_INET; toAddr.sin_addr.s_addr=inet_addr("172.16.12.55"); toAddr.sin_port = htons(4000); #endif ``` **主循环中发送数据:** ``` #if RT_SEND_SOCKET //#if 0 if(sendto(sock,codec_buffer,rx_size,0,(struct sockaddr*)&toAddr,sizeof(toAddr)) != rx_size) { rt_kprintf("sendto() failed. "); closesocket(sock); return; } #endif ``` 如果主循环中不调用sendto()函数,则可以长时间连续运行; 一旦主循环中调用sendto()函数,执行不了几次就异常了。 跟踪了一下socket发送数据包的情况,里面也是对每个发送的数据包进行malloc和free处理的,所以经常打印出类似下面的这样的错误报告。 **错误类型:一** ``` finsh>>psr: 0x21000000 r00: 0x20005490 r01: 0x10000000 r02: 0xf0000000 r03: 0x00000020 r04: 0x005c0000 r05: 0x00000000 r06: 0x00000000 r07: 0xdeadbeef r08: 0xdeadbeef r09: 0xdeadbeef r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x08014011 lr: 0x0801474b pc: 0x0801474a hard fault on thread: tcpip thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- 0x04 ``` **错误类型:二** ``` finsh>>(mem->used) assert failed at rt_free:539 ``` **错误类型:三** ``` thread:? stack overflow thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- pcmcap 0x09 ready 0x00000174 0x00004000 0x0000017c 0x00000014 000 tshell 0x14 suspend 0x00000090 0x00000800 0x000001b0 0x00000009 000 tcpip 0x0c ready 0x000001d0 0x00000400 0x000001d0 0x00000014 000 etx 0x0f ready 0x00000074 0x00000200 0x00000094 0x00000010 000 erx 0x0f suspend 0x00000094 0x00000200 0x000000c4 0x00000010 000 tidle 0x1f ready 0x00000058 0x00000100 0x00000068 0x00000019 000 ``` **错误类型:四** ``` finsh>>pbuf_free: sane type Assertion: 635 in ....components etlwip-1.4.1srccorepbuf.c, thread tcpip (0) assert failed at sys_arch_assert:547 ```
bernard
2014-07-01
这家伙很懒,什么也没写!
ls,有QQ或邮件吗?我可以考虑在realnet上也测试下
thomasgds
2014-07-02
这家伙很懒,什么也没写!
这边深入测试了一下,感觉跟网口上发送的数据速率有关,速率越高,持续发送的时间就越短。 现在测试的网口速率在180KB/s左右,频繁出错的log如下: 错误类型:一 ``` psr: 0x21000000 r00: 0x20005490 r01: 0x10000000 r02: 0xf0000000 r03: 0x00000020 r04: 0x2000549c r05: 0xffffffff r06: 0x000003e8 r07: 0x0800708d r08: 0x00000000 r09: 0x200062b0 r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x08013f61 lr: 0x0801469b pc: 0x0801469a hard fault on thread: tcpip thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- pcmcap 0x09 suspend 0x0000017c 0x00000800 0x00000184 0x00000004 000 tshell 0x14 ready 0x00000148 0x00000800 0x000001b0 0x0000000a 000 tcpip 0x0c ready 0x00000180 0x00000400 0x000001c8 0x00000007 000 etx 0x0f ready 0x00000074 0x00000200 0x00000094 0x00000010 000 erx 0x0f suspend 0x00000094 0x00000200 0x000000c4 0x00000010 000 tidle 0x1f ready 0x00000040 0x00000100 0x00000068 0x00000019 000 bus fault: SCB_CFSR_BFSR:0x82 PRECISERR SCB->BFAR:3344564C ``` 错误类型:二 ``` pbuf_free: p->ref > 0 Assertion: 650 in ....components etlwip-1.4.1srccorepbuf.c, thread tcpip (0) assert failed at sys_arch_assert:547 ``` 错误类型:三 ``` pbuf_free: sane type Assertion: 635 in ....components etlwip-1.4.1srccorepbuf.c, thread tcpip (0) assert failed at sys_arch_assert:547 ```
grissiom
2014-07-02
这家伙很懒,什么也没写!
测试代码方便贴上来么?
thomasgds
2014-07-02
这家伙很懒,什么也没写!
>是不是驱动什么地方有问题? > >现在直接使用UDP往外发送数据,发现数据没有传送到网络上,而且运行一段时间后就报告tcpip线程异常而崩溃了。 --- 网卡不能发送数据包的问题解决了,是应为在STM32F207IG上使用了不同的GPIO口映射到TXD0和TXD1上导致的,在驱动程序上讲实际使用的GPIO口映射正确后就可以发送网络数据包了。 现在的问题集中 1. 在频繁快速的发送数据包时,会出现崩溃的现象。 2. 如果没有外部网络数据包发送过来(例如PC机ping设备),设备直接往外发送数据包,则很容易直接就崩溃掉。有外部数据包过来时,设备往外发送数据包大部分情况下能坚持个几秒到几十秒再崩溃;
thomasgds
2014-07-02
这家伙很懒,什么也没写!
>测试代码方便贴上来么? --- 比较郁闷! 使用独立的测试代码不能重现这个现象。 在测试代码中,使用独立线程来拼命发送数据包,网速可以达到3.6MB/s,也没有堆栈溢出或者rt_free()异常的现象; 在测试代码中,使用独立的线程来拼命rt_malloc()和rt_free()不同大小的堆空间,也没有异常现象; 但是在我们的工程中,这个现象还是出现的比较频繁,两者的区别就是:实际的工程中使用一个线程,从声卡设备上读取pcm数据,然后通过sendto()发送到外部服务器上。 现在工程做的还比较简单,但是没有实际的板卡无法运行这个程序,重现这个现象。 那就请各位直接帮忙分析一下工程代码吧,看看是不是那个地方有内存泄漏? ``` "对不起,您的附件限额已经用完了。" ``` 附件也有大小限制啊? 那直接提供关键的两个代码文件吧。 [attach]2328[/attach] [attach]2327[/attach]
撰写答案
登录
注册新账号
关注者
0
被浏览
13.5k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5943
被采纳
76
关注TA
发私信
相关问题
1
RT-Thread单内核v0.2.2正式版
2
[发布] RT-Thread RTOS v0.2.3版本
3
RT-Thread 0.3.0 beta
4
RT-Thread/STM32 0.3.0 RC1发布
5
RT-Thread/LM3S 0.3.0 RC1版发布
6
建议弄个MIPS版本的。龙芯上用。
7
开源实时操作系统RT-Thread 0.3.0正式版发布
8
关于RT-THREAD的UDP讨论
9
这里是BUG回报板块!
10
rt-thread stm32 0.3.0 rc1 网络问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
9
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部