OpenEdv-开源电子网

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

strcmp 引起 UsageFault_Handler

[复制链接]

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-12-20 23:36:06 | 显示全部楼层 |阅读模式
5金钱

今天利用 strcmp 判断两个 u8 类型的字符串(一个结构体里的字符数组,一个普通的字符数组,strlen,strcpy 均能正常使用),居然引起 UsageFault_Handler,查看寄存器是 1000000,也就是执行了非对齐操作。


但是自己简单实现了  strmcp 如下:

[mw_shl_code=c,true]int _strcmp(char * a, char * b) { while(*a != NULL && *b != NULL) { if(*a != *b) return *a - *b; a++; b++; } return *a - *b; }[/mw_shl_code]

调用时,同样的参数却没有任何问题。


问下各位,strcmp stm32 的内部实现是咋样的呀,这个问题很诡异呀。

有软件开发经验,从0硬件基础学习STM32开发。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-12-21 10:08:49 | 显示全部楼层
你这个函数感觉怪怪的
回复

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
 楼主| 发表于 2015-12-21 12:31:46 | 显示全部楼层
回复【2楼】三叶草:
---------------------------------
我那个实现方法,是标准的实现方式。

目前主要是这个方式是可以工作的,同样的参数,换成 strcmp 立即就进入用法错误中断,报告非对齐的错误。
有软件开发经验,从0硬件基础学习STM32开发。
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12559
金钱
12559
注册时间
2015-11-5
在线时间
2149 小时
发表于 2015-12-22 12:22:16 | 显示全部楼层
回复【3楼】dragon7799:
---------------------------------
我一直都用strncmp,没发现过你所说的问题

这些字符串函数都封装了看不到源码,如果不怕麻烦的话你可以试下把结构体里面的char数组弄成全局数组,我试过发现全局数组一般都是以4字节对齐的
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
 楼主| 发表于 2015-12-23 23:28:43 | 显示全部楼层
回复【4楼】FreeRTOS:
---------------------------------
多谢,我回来再试试。

暂时这两天先用我自己写的那个方法去比较了。其实,这么多年的经验,我感觉问题肯定是出在我这里。往往计算机是不会犯错的。
这个问题,strcmp函数,其实同一个系统里,其他地方也有用到,就不报错,就这一个地方报错,而且把其中任意一个参数,换成字符串常量也报错。
更令我匪夷所思的是,同样的代码段,在后面几条语句中有一个对这两个参数的 strcpy 调用,就一点问题也没有。
有软件开发经验,从0硬件基础学习STM32开发。
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-1-23 16:14:34 | 显示全部楼层
dragon7799 发表于 2015-12-23 23:28
回复【4楼】FreeRTOS:
---------------------------------
多谢,我回来再试试。

暂时这两天先用我自己写 ...

奶奶的腿 我最近也遇到了  你查出原因了没?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 02:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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