OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4016|回复: 16

STM32f407以太网口调试,可以不用参考的外部SRAM不?我不加SRAM就一直说申请内存失败。

[复制链接]

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
发表于 2016-12-6 11:38:55 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-12-6 11:38:56 | 显示全部楼层
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-6 12:40:15 | 显示全部楼层

用内部的sram??改该怎么调用??
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2016-12-6 16:39:40 | 显示全部楼层
你初始化了内存池了没有?内存申请失败可能是有两个原因的,在lan8720.c下面有两个函数,u8 ETH_Mem_Malloc(void)和void ETH_Mem_Free(void),你看看你的是用内部的SRAM还是外部的?在lwip_comm.c下有两个函数,u8 lwip_comm_mem_malloc(void)和void lwip_comm_mem_free(void),也看一下用的是内部的还是外部的SRAM?如果是内部的,但老是申请失败,那先看有没有对内部内存池进行初始化,        my_mem_init(SRAMIN);        如果初始化了,但还是出现这个问题,那就查一下,是否有哪个地方申请了内存之后没有释放掉,没有释放的内存很容易导致程序崩溃。如果还是不行就把lwip_comm.c下面的那几个申请的内存改成申请外部SRAM,相应的释放SRAM那里也要改成外部的 void lwip_comm_mem_free(void)
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-6 18:12:47 | 显示全部楼层
lzq12 发表于 2016-12-6 16:39
你初始化了内存池了没有?内存申请失败可能是有两个原因的,在lan8720.c下面有两个函数,u8 ETH_Mem_Malloc ...

我是用的原子哥的板子,程序也是那里的例程,今天尝试了一下,只要屏蔽LCD初始化,就导致网口不通。该如何修改??
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-6 18:21:37 | 显示全部楼层
willpower 发表于 2016-12-6 18:12
我是用的原子哥的板子,程序也是那里的例程,今天尝试了一下,只要屏蔽LCD初始化,就导致网口不通。该如 ...

我想用内部SRAM,进行以太网口通讯,用原子哥的板子和例程可以实现通讯,一旦屏蔽了LCD初始化,就连接不上了。求教大神们,该如何改动??
回复

使用道具 举报

9

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2016-11-14
在线时间
32 小时
发表于 2016-12-6 19:55:36 | 显示全部楼层
willpower 发表于 2016-12-6 18:21
我想用内部SRAM,进行以太网口通讯,用原子哥的板子和例程可以实现通讯,一旦屏蔽了LCD初始化,就连接不 ...

我也遇到了一样的情况,请问楼主现在情况怎么样了?
回复

使用道具 举报

9

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2016-11-14
在线时间
32 小时
发表于 2016-12-6 19:57:30 | 显示全部楼层
lzq12 发表于 2016-12-6 16:39
你初始化了内存池了没有?内存申请失败可能是有两个原因的,在lan8720.c下面有两个函数,u8 ETH_Mem_Malloc ...

全部是在外部申请的还是有这个问题怎么搞
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-7 10:57:57 | 显示全部楼层
sogaside 发表于 2016-12-6 19:55
我也遇到了一样的情况,请问楼主现在情况怎么样了?

现在可以屏蔽LCD初始化,能收  不能发  一发数据  板子就死机
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2016-12-7 11:07:16 | 显示全部楼层
willpower 发表于 2016-12-6 18:12
我是用的原子哥的板子,程序也是那里的例程,今天尝试了一下,只要屏蔽LCD初始化,就导致网口不通。该如 ...

原子哥的LCD有用到外部SRAM的,你屏蔽掉之后,后面肯定是出问题的,slcd_dma_init();这个函数在初始化的时候也要一起屏蔽掉,如果你是都不用LCD显示,那建议你把跟LCD显示相关的文件给去掉,最主要的就是这个spblcd.c和spb.c这两个文件,里面申请了大量的内存来进行显示,尤其是这个sramlcdbuf,还有spbdev,如果是不用LCD,那首先要删除的文件就有spblcd.c和spb.c,但得慢慢删了,因为用到这两个文件里面函数的地方实在有点多,至于还是不能申请内存,那应该就是某个地方对内存申请了没有释放,或者使用不对,因为内存使用的问题引起的程序错误,我也是被折腾了好多次,总结出来的经验就是,只要有内存申请的地方,就要找到相应的内存释放,而且内存申请了之后,使用时还要注意不能溢出,比如你申请了char a[5];但不小心溢出了,如a,i这个变量可能在某个地方大于4了,然后自己又没注意到,程序也不报错,但这个时候就会产生程序崩溃,或者某个申请内存失败。
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2016-12-7 11:10:37 | 显示全部楼层
sogaside 发表于 2016-12-6 19:57
全部是在外部申请的还是有这个问题怎么搞

那得看看是不是在哪个地方的内存使用方面出了问题,比如内存不足,内存申请了没有释放,某些数组或者指针使用之后导致了内存溢出,一般就是内存引起的,如果重点排查内存溢出的情况
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-7 13:37:19 | 显示全部楼层
lzq12 发表于 2016-12-7 11:07
原子哥的LCD有用到外部SRAM的,你屏蔽掉之后,后面肯定是出问题的,slcd_dma_init();这个函数在初始化的 ...

我程序里面没有找到你说的这些啊!我在线调试,能收到我发的数据  但只有一次  接着就没得反应了,重新按按键设置配置模式,就又可以发一次
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2016-12-7 17:00:23 | 显示全部楼层
willpower 发表于 2016-12-7 13:37
我程序里面没有找到你说的这些啊!我在线调试,能收到我发的数据  但只有一次  接着就没得反应了,重新按 ...

直接用原子哥的程序,然后就只屏蔽掉其中的LCD程序什么的就会这样么?
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-7 17:25:03 | 显示全部楼层
lzq12 发表于 2016-12-7 17:00
直接用原子哥的程序,然后就只屏蔽掉其中的LCD程序什么的就会这样么?

现在好了  调通了,但是切换模式时,有时会切换不过来,在线切换就没得问题。
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2016-12-8 12:10:21 | 显示全部楼层
willpower 发表于 2016-12-7 17:25
现在好了  调通了,但是切换模式时,有时会切换不过来,在线切换就没得问题。

那之前是什么问题的?
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2016-12-8 15:29:07 | 显示全部楼层
lzq12 发表于 2016-12-8 12:10
那之前是什么问题的?

等自己开的板子回来,验证了才晓得真正通了没有  之前是因为原子哥没有在LAN8720.c里面没有初始化GPIOD的时钟。PD3
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2016-12-9 08:52:53 | 显示全部楼层
willpower 发表于 2016-12-8 15:29
等自己开的板子回来,验证了才晓得真正通了没有  之前是因为原子哥没有在LAN8720.c里面没有初始化GPIOD的 ...

嗯嗯,网卡复位引脚没有初始化是会出现问题,不过他现在的程序都有初始化了,你那个是比较旧的程序嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-9 02:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表