OpenEdv-开源电子网

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

uCOS II+LWIP总是进入HardFault_Handler

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-10-27
在线时间
6 小时
跳转到指定楼层
楼主
发表于 2015-3-2 15:38:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5金钱
我自己做的板子,使用探索者开发版“扩展例程”中的“网络实验2 LWIP带UCOS操作系统移植”作为基础工程进行修改,结果执行到OSStart();后就进入了HardFault_Handler。

由于我自己做的板子使用的是DP83848作为PHY(那个LAN8720的Thermal Pad我实在焊不上),按照STM324xG-EVAL Board的连接方式进行连接,并且没有使用外部SRAM。我在stm32f4x7_eth_conf.h将寄存器的定义改回DP83848的配置,并且在LAN8720_Init()中更改了相应的引脚设置,在LAN8720.h中将PHY地址改为0x01,并将接口改为MII。同时,将之前stm32f4x7_eth.c、mem.c、memp.c中注释掉的数组都还原回来,并且注销掉了原子老师提供的文件中有关内存申请的函数,删除了有关FSMC、MALLOC和SRAM的代码;将sys_mbox_new函数和sys_mbox_free函数中的的mymalloc和myfree改成了malloc和free,并且启用了MicroLib。

经过以上修改后lwip_comm_init()可以正常通过,但执行到OSStart()的时候,就进入HardFault_Handler了。

希望原子
老师和论坛里好心的朋友能够帮忙解决。谢谢!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
2#
发表于 2015-3-2 19:44:20 | 只看该作者
是不是你的任务堆栈太小了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-10-27
在线时间
6 小时
3#
 楼主| 发表于 2015-3-2 21:39:55 | 只看该作者
回复【2楼】正点原子:
---------------------------------
不会吧?我只是用了例子中的任务,除了START任务之外,就只有一个DISPLAY任务和一个LED任务,任务堆栈大小都用的例子中默认的。
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-10-27
在线时间
6 小时
4#
 楼主| 发表于 2015-3-2 22:01:42 | 只看该作者
回复【2楼】正点原子:
---------------------------------
经过反复试验,我发现只要勾选Use MicroLib,就会造成执行OSStart()后进入HardFault,但如果不勾选Use MicroLib,就无法使用系统自带的malloc申请内存。由于我这个应用的引脚资源非常紧张,没办法加外置SRAM了,所以没办法使用例子中提供的mymalloc函数。请问还有没有什么办法绕过MicroLib进行动态内存分配?
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
5#
发表于 2015-3-2 22:12:42 | 只看该作者
回复【4楼】wangkai87:
---------------------------------

原子的malloc可以分配内部和外部啊 

不是说一定要分配外部

原子的malloc,自己配一下就好的
学无止境
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-10-27
在线时间
6 小时
6#
 楼主| 发表于 2015-3-2 22:38:35 | 只看该作者
回复【5楼】jermy_z:
---------------------------------
刚才我又试了原子的mymalloc,故障依旧,其实sys_mbox_new和sys_mbox_free暂时留空也是一样的故障。这次即使去掉Use MicroLib也不行。但main中去掉LWIP的初始化函数就可以了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
7#
发表于 2015-3-3 00:25:02 | 只看该作者
回复【3楼】wangkai87:
---------------------------------
你lwip数据的处理是在哪个任务?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-10-27
在线时间
6 小时
8#
 楼主| 发表于 2015-3-3 18:42:15 | 只看该作者
回复【7楼】正点原子:
---------------------------------
并未进行LWIP数据处理,目前只是想测试是否能Ping通。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
9#
发表于 2015-3-3 22:05:06 | 只看该作者
回复【8楼】wangkai87:
---------------------------------
lwip数据处理所在的任务,堆栈开大点。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-5-5
在线时间
0 小时
10#
发表于 2015-5-7 09:25:20 | 只看该作者
楼主解决问题了么
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-3-13
在线时间
1 小时
11#
发表于 2015-11-6 13:13:56 | 只看该作者
我也碰到了相同问题
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
12#
发表于 2015-12-15 17:29:38 | 只看该作者
找了两天的问题,终于发现就是“勾选Use MicroLib,就会造成执行OSStart()后进入HardFault”,不勾直接好了,话说楼主怎么发现的呀
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2020-4-9
在线时间
33 小时
13#
发表于 2020-5-8 18:21:56 | 只看该作者
wangkai87 发表于 2015-3-2 22:01
回复【2楼】正点原子:
---------------------------------
经过反复试验,我发现只要勾选Use MicroLib ...

这个解决方法可行。谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 17:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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