lwip调试问题求解

嵌入梦想 2014-02-11 01:53:08
我现在使用lpc1788芯片,嵌入lwip协议栈,能够运行,但是通过串口输出的信息发现,接收描述符的状态字段,跟初始化的时候的内容一样。我初始化的时候使用的就是
lpc_enetif->prxs[idx].statushashcrc = 0xFFFFFFFF;
使用的驱动是nxp的官方驱动,我感觉像是接收DMA没有正常工作。同样的代码,在nxp的工程里面就可以正常运行。实在是困扰。串口输出的信息是
请前辈们给点意见。
...全文
368 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
inurlcn 2014-02-25
  • 打赏
  • 举报
回复
引用 6 楼 aifei7320 的回复:
[quote=引用 4 楼 inurlcn 的回复:] [quote=引用 3 楼 aifei7320 的回复:] 我现在更迷惑了,在arm芯片里面运没有问题的程序,只要把rw zi段分散加载到片外sdram,系统就死机。有没有碰到过这种情况的?求大神解答一下,是不是还需要在mdk里面进行一些设置?
在跳到main函数之前初始化sdram[/quote] 现在找到原因了,是因为sdram初始化的问题,但是具体是什么原因导致的,还是不清楚,因为使用的都是nxp官方的驱动程序,只是复制粘贴了一遍就能用了。在做这个改动之前,我写了一小段代码,查看sdram中向里面写的数据,在读出的时候是否正确,结果发现有一部分是正确的,后来就都是随机码了。才找到的这个问题。不过想请教一下 __main这个是干嘛的?我看到引导程序里面有个IMPORT __main 但是搜索不到这个东西。[/quote] 可能不同的RAM片子,配置的参数不一样吧。__main是CRT的初始化函数
嵌入梦想 2014-02-17
  • 打赏
  • 举报
回复
引用 4 楼 inurlcn 的回复:
[quote=引用 3 楼 aifei7320 的回复:] 我现在更迷惑了,在arm芯片里面运没有问题的程序,只要把rw zi段分散加载到片外sdram,系统就死机。有没有碰到过这种情况的?求大神解答一下,是不是还需要在mdk里面进行一些设置?
在跳到main函数之前初始化sdram[/quote] 现在找到原因了,是因为sdram初始化的问题,但是具体是什么原因导致的,还是不清楚,因为使用的都是nxp官方的驱动程序,只是复制粘贴了一遍就能用了。在做这个改动之前,我写了一小段代码,查看sdram中向里面写的数据,在读出的时候是否正确,结果发现有一部分是正确的,后来就都是随机码了。才找到的这个问题。不过想请教一下 __main这个是干嘛的?我看到引导程序里面有个IMPORT __main 但是搜索不到这个东西。
inurlcn 2014-02-14
  • 打赏
  • 举报
回复
引用 3 楼 aifei7320 的回复:
我现在更迷惑了,在arm芯片里面运没有问题的程序,只要把rw zi段分散加载到片外sdram,系统就死机。有没有碰到过这种情况的?求大神解答一下,是不是还需要在mdk里面进行一些设置?
搜索下“__main”记得带2个下划线
inurlcn 2014-02-14
  • 打赏
  • 举报
回复
引用 3 楼 aifei7320 的回复:
我现在更迷惑了,在arm芯片里面运没有问题的程序,只要把rw zi段分散加载到片外sdram,系统就死机。有没有碰到过这种情况的?求大神解答一下,是不是还需要在mdk里面进行一些设置?
在跳到main函数之前初始化sdram
嵌入梦想 2014-02-14
  • 打赏
  • 举报
回复
我现在更迷惑了,在arm芯片里面运没有问题的程序,只要把rw zi段分散加载到片外sdram,系统就死机。有没有碰到过这种情况的?求大神解答一下,是不是还需要在mdk里面进行一些设置?
嵌入梦想 2014-02-14
  • 打赏
  • 举报
回复
引用 1 楼 inurlcn 的回复:
是不是CRC已经在网络芯片里面计算了, 不用在 lwip中算 ?
找到原因了,是因为分散加载的问题。操作片外sdram有问题。谢谢了
inurlcn 2014-02-12
  • 打赏
  • 举报
回复
是不是CRC已经在网络芯片里面计算了, 不用在 lwip中算 ?
概述: 冬天到了,又到了靠烧煤取暖的季节了,虽然我们大南方还不知道啥时候才能享受到北方小伙伴一样的集中供暖,但是冬天的霾却不分彼此的席卷了全国各地。本方案使用的是RT-Thread的嵌入式实时系统,通过PMS70003传感器采集空气中的PM2.5浓度数据,并通过WiFi传输到移动onenet平台上,可以远程查看PM2.5实时数据。 开发环境: RT-Thread版本: 4.0.3 开发工具:使用RT-Thread Studio2.0.0 硬件平台:基于RT-Thread官方ART-Pi开发板+自制传感器拓展板 RT-Thread使用情况概述: 本项目基于RT-Thread内核版本: Ver 4.0.3开发,使用RT-Thread Studio V2.0.0开发,使用的软件包包括cjson、onenet、webclient、pahomqtt、fal、easyflash、u8g2; 打开的组件和服务层有:finsh命令、DFS、ulog日志、C++、lwIP、POSIX、libc、ymodem,以及串口、Pin、SPI、SFUD、SDIO。 硬件框架: 本项目使用的是官方的Art-Pi开发板+自己做的传感器拓展板制作的,拓展板上包含了一个SHT20的温湿度传感器,一个攀藤的PMS7003PM2.5传感器、一个炜盛的MQ-4B半导体可燃气体传感器、一个0.91”Oled单色显示屏,以及一个拨盘按键。其中PMS7003是通过串口把采集到的数据传输到ART-PI上,由板载WiFi连接到移动onenet云上实现数据上传。SHT20和OLED共用一组IIC数据总线,可燃气体传感器占用了两个ADC口(一组检测气体浓度,一组检测传感器失效),并且可以通过背面跳线选择ADC口。按键占用了额外的三个GPIO用于设定一些配置信息。 软件框架说明: 首先RT-Thread启动后,对各部分外设进行初始化,然后进入pms7003的读取线程,该线程负责采集PMS7003上传上来的PM2.5浓度数据,并在线程里对数据进行校验求解后,通过onenet线程,我们把采集到的数据通过WiFi定时推送到移动onenet云平台,推送频率为2S/次。通过后台的数据流信息页面,可以看到实时的浓度数据信息。 软件模块说明: 软件采用的RTT4.0.3为内核基础,使用了一个独立线程来读取PMS传感器的数据,一个onenet软件包来实现联网推送的服务,最后由板载的WiFi模块负责连接到网络并把数据推送上去。 演示效果: 附上视频效果: 比赛感悟: 在使用rt-thread实时系统以前,我一直都是简单的使用裸机开发,纯粹的单流水线模式,经常会因为各种时间任务分配问题搞得头大,每种硬件使用起来得先仔细了解数据手册,了解器件性质,功能,然后才敢上板子,撸代码。 这次其实也是我第一次接触嵌入式实时操作系统这么一个方式来开发单片机,讲真,里面走了不少的弯路,也有很多没遇到过的坑。不得不说,RT-Thread的文档支持工作做的还是非常到位的,每个细节、功能都做了详细的介绍,但是诚如此还是有一部分我没太想明白的地方,这里就多亏了官方的比赛群以及我的小伙伴们,遇到很多事情找他们帮忙都能很快的解决掉。 本次比赛我还是学到了很多的新鲜知识,而且RTT的使用的便捷性给我了很大的震撼,有许多代码例程写的都很经典,后面板子上的几个设备我还要继续调试下去,争取把这个项目继续走下去,把rtt学得更深入一些。希望以后也能自己独立开发一些项目。把自己平时那么多奇奇怪怪的小点子都实现出来。

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧