完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前段时间发过一个关于STM32+ucos进入hard fault的帖子,没人回我,自己后来调试后找到问题报告为:试图切入ARM状态。本人在排查过程中发现了问题所在,但是不知道该怎么解释这个问题,而且解决办法也不是很标准,求懂的人解释一下原因和解决办法。
问题描述: 声明了一个unsigned int A[8]数组,在某个函数中使用时出错进入hardfalut状态。 在这个数组前面再申明一个unsigned int数组 当数组大于等于3的时候系统可以跑了。 当我将数组声明为unsigned int A[11],而不对数组前三个操作时,系统也正常。 分析原因: 此数组在内存中的物理地址与cpu处理地址的对齐方式是不是存在着某种牵连导致了数组不能正常被使用。 在此欢迎大家讨论! |
|
相关推荐
11个回答
|
|
给的代码里面更该过,我没注意看确实没有,我试试剥离其他工作。还有就是忘了说,这个没有在ucos下跑,只是跑逻辑的时候是没有问题的!
|
|
|
|
看你怎么用这个数组的了。。。用了sprintf这些东西没有?
|
|
|
|
操作越界了吧。
|
|
|
|
对数组操作的指针是没有越界的!
|
|
|
|
一般出现这种越界可能机会大,或者有些指针没有初始化,野指针。
至于你说的对齐,你可以把数组添加__align(4)进行对齐试试就知道了,我觉得不是。 项目里int各种数组多着呢,也没遇到你的情况。 |
|
|
|
用斜体好难看啊。
你最后的描述是用个短的全局变量替换一个长的全局变量做参数就变正常了。好像跟你这里说的不一样。 在另外buf没有传递参数的样子,我怎么看起来一直在赋值buf[0]?? |
|
|
|
|
|
|
|
并没有什么buf+i。这个问题我还是觉得是别的问题引起的。你如果要说明这个问题存在,就必须剥离其他工作,单独跑一个task,然后传递参数赋值看看。
我的项目160K左右,都没遇到unsigned int传递有问题。 |
|
|
|
我在ucosiii下跑,没问题。
|
|
|
|
只能说硬件这个环境太不可控了,现在我将工程还原已经不能捕获到那个异常了!
|
|
|
|
额不会玩这个帖子 最佳准备给你的,怎么就变成自己的了
|
|
|
|
只有小组成员才能发言,加入小组>>
916 浏览 1 评论
2309 浏览 5 评论
2625 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2431 浏览 6 评论
2336 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
483浏览 9评论
492浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
595浏览 6评论
471浏览 5评论
508浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 00:23 , Processed in 1.341559 second(s), Total 98, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191