OpenEdv-开源电子网

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

FATFS一个小BUG搞了我2天才解决.特此发帖,希望大家不要重蹈我的覆辙.

  [复制链接]

0

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-17
在线时间
3 小时
发表于 2015-7-27 10:39:57 | 显示全部楼层
对齐的问题,,一直没找到好的解决方法~~
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

22

主题

180

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2015-6-29
在线时间
101 小时
发表于 2015-9-6 16:28:45 | 显示全部楼层
无意中看到这个帖子,好贴!!各路大神果然厉害
我是菜鸟
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-9-6 17:11:16 | 显示全部楼层
不顶一下仰慕之情久久无法平复
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-9-5
在线时间
0 小时
发表于 2015-9-10 09:53:56 | 显示全部楼层
无意中看到这个帖子,让我想起了当年移植yaffs2时遇到的问题,当时也是遇到各种BUG,但是做如下设置之后就OK,


现在想来也是字节对齐的问题。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
 楼主| 发表于 2015-9-11 00:35:36 | 显示全部楼层
回复【55楼】wallTec:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2015-10-24
在线时间
15 小时
发表于 2015-11-7 18:15:46 | 显示全部楼层
一个对齐问题,引发这么多人膜拜啊。。。
你艹我,我艹你,都一样。
回复 支持 反对

使用道具 举报

5

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
615
金钱
615
注册时间
2011-11-7
在线时间
180 小时
发表于 2015-11-7 22:41:23 | 显示全部楼层
这个要标记一下
回复 支持 反对

使用道具 举报

11

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-11-2
在线时间
17 小时
发表于 2016-1-12 15:08:52 | 显示全部楼层
mark this post.
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2014-6-23
在线时间
17 小时
发表于 2016-2-7 16:39:33 | 显示全部楼层
mark~~
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2014-6-23
在线时间
17 小时
发表于 2016-2-14 17:47:44 | 显示全部楼层
mark~~
回复 支持 反对

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3761
金钱
3761
注册时间
2015-4-26
在线时间
761 小时
发表于 2016-2-16 15:54:32 | 显示全部楼层
mark,以后明白了再学习一下,现在根本不知道你们说的啥
我有故事,你有酒吗
回复 支持 反对

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2015-12-6
在线时间
15 小时
发表于 2016-2-22 21:57:05 | 显示全部楼层
mygod 发表于 2013-7-5 15:32
这种问题一般出现在使用OS 时候 ,不用OS 是不会有这样问题出现的,如果用了OS,在任务栈内 ...

你好,想请教下为什么是要8字节对齐而不是4字节呢?32位机的最佳寻址应该是4字节啊。
回复 支持 反对

使用道具 举报

18

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2016-2-18
在线时间
49 小时
发表于 2016-3-10 11:20:31 | 显示全部楼层
冰是睡着的水 发表于 2012-8-30 21:54
回复【14楼】Pony279:
---------------------------------
每次看到你回复,感觉都是天书一下,,我何时才 ...

现在应该看懂了吧,大神,我现在就想说你过的话
回复 支持 反对

使用道具 举报

15

主题

313

帖子

0

精华

高级会员

Rank: 4

积分
827
金钱
827
注册时间
2015-2-12
在线时间
346 小时
发表于 2016-3-11 11:02:37 | 显示全部楼层
无私的奉献!鸣谢!并做个标记。
回复 支持 反对

使用道具 举报

15

主题

313

帖子

0

精华

高级会员

Rank: 4

积分
827
金钱
827
注册时间
2015-2-12
在线时间
346 小时
发表于 2016-3-11 11:03:33 | 显示全部楼层
Pony279 发表于 2012-8-9 18:21
在 programming manual 中有提到对齐问题,
通常编译器在生成代码的时候都会进行结构体填充,保证最高性能 ...

高手!
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1919
金钱
1919
注册时间
2016-2-20
在线时间
258 小时
发表于 2016-3-11 13:40:50 | 显示全部楼层
字节对齐问题~~
回复 支持 反对

使用道具 举报

9

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2012-2-16
在线时间
11 小时
发表于 2016-5-6 15:04:24 | 显示全部楼层
内存对齐问题
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-5-5
在线时间
2 小时
发表于 2016-5-6 15:27:18 | 显示全部楼层
本帖最后由 ds2xor 于 2016-5-6 15:38 编辑

。。m3也有指令不支持非对齐访问的,学习了。
回复 支持 反对

使用道具 举报

4

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
622
金钱
622
注册时间
2016-5-11
在线时间
40 小时
发表于 2016-5-23 18:31:21 | 显示全部楼层
学习了...
回复 支持 反对

使用道具 举报

11

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
651
金钱
651
注册时间
2012-8-1
在线时间
68 小时
发表于 2016-5-31 16:29:45 | 显示全部楼层
感谢原子哥这样的先行者分享他们的宝贵经验!
回复 支持 反对

使用道具 举报

1

主题

20

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-11-22
在线时间
0 小时
发表于 2016-7-7 17:57:16 | 显示全部楼层
字节对齐这个问题,不注意会有大麻烦啊
回复 支持 反对

使用道具 举报

2

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2015-9-24
在线时间
41 小时
发表于 2016-7-9 15:19:50 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-7-20
在线时间
1 小时
发表于 2016-7-20 10:17:14 | 显示全部楼层
谢谢楼主,正好碰到这样的问题
回复 支持 反对

使用道具 举报

53

主题

126

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2013-6-1
在线时间
37 小时
发表于 2016-7-20 10:44:14 | 显示全部楼层
不是都做了对齐处理吗?
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-6-6
在线时间
6 小时
发表于 2016-8-3 12:40:08 | 显示全部楼层
很好,
回复 支持 反对

使用道具 举报

5

主题

62

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2016-3-9
在线时间
74 小时
发表于 2016-8-16 11:02:05 | 显示全部楼层
mark!!!!
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-10-19
在线时间
4 小时
发表于 2016-9-6 16:40:58 | 显示全部楼层
mark标记
回复 支持 反对

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-9-20 15:15:52 | 显示全部楼层
前段时间看这里感觉有点迷迷糊糊,今天又看了一次,清楚多了。
刚刚又梳理了一下堆和栈,以及动态分配内存的做法和理解,感觉好博大精深啊。
回复 支持 反对

使用道具 举报

5

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2016-3-23
在线时间
49 小时
发表于 2016-9-20 20:38:37 | 显示全部楼层
原子大哥,可以把 与 Malloc 相关的程序更新一下吧,折腾两天,发现问题所在,上网一查,又确信了一下,麻烦你了
回复 支持 反对

使用道具 举报

5

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2016-3-23
在线时间
49 小时
发表于 2016-9-20 21:29:49 | 显示全部楼层
原子哥,按照这个方法还是解决不了,还是在hard_fault之前挺住,原子哥,有可参考的程序吗,还有如果不用malloc,该怎么完成建立TXT,并存数据,多谢了,小白
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2015-3-17
在线时间
22 小时
发表于 2016-10-8 11:44:29 | 显示全部楼层
学习了,mark~
回复 支持 反对

使用道具 举报

35

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-30
在线时间
49 小时
发表于 2016-11-9 13:43:35 | 显示全部楼层
憨厚诚实大叔 发表于 2016-9-20 15:15
前段时间看这里感觉有点迷迷糊糊,今天又看了一次,清楚多了。
刚刚又梳理了一下堆和栈,以及动态分配内存 ...

为什么我看MDK里对于32的编译器有这么一句话
The default is #pragma pack(8),即为什么是默认8字节对齐呐?
我就是我,是颜色不一样的烟火。
回复 支持 反对

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2016-4-30
在线时间
26 小时
发表于 2016-11-27 15:08:40 | 显示全部楼层
谢谢原子哥
回复 支持 反对

使用道具 举报

Nachtmusik 该用户已被删除
发表于 2017-1-22 13:45:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-1-23
在线时间
5 小时
发表于 2017-1-30 22:41:48 | 显示全部楼层
此贴高人出没,,,
为防止掉坑,mark一下。
回复 支持 反对

使用道具 举报

qq317808023 该用户已被删除
发表于 2017-1-31 03:02:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

12

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2016-9-24
在线时间
26 小时
发表于 2017-3-15 14:35:23 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2015-7-16
在线时间
51 小时
发表于 2017-6-26 15:48:20 | 显示全部楼层
= =  小菜鸟来报道。。
回复 支持 反对

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2015-7-16
在线时间
51 小时
发表于 2017-6-27 09:29:49 | 显示全部楼层
Tardis 发表于 2013-6-27 09:40
回复【楼主位】正点原子:
---------------------------------
果然是FATFS结构体导致的,我之前也一直怀疑 ...

大神你在吗?就是想问,这个FATFS全局变量建立后怎么去赋初值呢?因为我不给值的话,*fp的值为0,在f_open函数进去的时候直接就执行“if (!fp) return FR_INVALID_OBJECT;”,然后就返回了,现象就是打开文件失败了。
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2017-7-7 14:12:17 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-1
在线时间
7 小时
发表于 2019-2-26 10:27:29 | 显示全部楼层
12年的帖子才来学习,惭愧啊......
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-1
在线时间
7 小时
发表于 2019-2-26 10:36:31 | 显示全部楼层
正点原子 发表于 2012-8-10 00:09
回复【13楼】Pony279:
---------------------------------
是的,这里确实是我哪个malloc的问题.
在内存池前 ...

原子哥,请教下,我移植了战舰板的综合试验中关于Fatfs 、malloc的相关代码读写SD卡,我看到字节对其的问题在这些工程里已完成了。但实际调试时,f_mkdir异常,因RAM空间不足,将Fatfs内存申请从内部RAM,改到CCM内存池,f_mkdir正常工作了,也可新建成功,但f_open无法正常工作,会进入hard_fault,这是什么问题。CCM内存池用于FATFS应该没问题吧
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-4-25
在线时间
2 小时
发表于 2019-5-17 10:38:05 | 显示全部楼层
mark标记
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2019-3-14
在线时间
21 小时
发表于 2019-5-21 10:13:48 | 显示全部楼层
真是牛
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2019-7-4
在线时间
23 小时
发表于 2019-12-16 15:41:19 | 显示全部楼层
MARK一下
回复 支持 反对

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2014-8-31
在线时间
33 小时
发表于 2020-5-15 13:52:32 | 显示全部楼层
看各位大神回帖感觉好爽,有种华山论剑的感觉,开心MARK!
回复 支持 反对

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2020-6-19 11:21:47 | 显示全部楼层
好帖,来学习一下。其实我想知道的是stm32内存默认是多少字节对齐?
typedef struct
{
    uint8_t a;
    float b;
    uint8_t c;
}s_learnMemSize;
如果不写#pragma pack(2),用默认的对齐方式,该结构体sizeof为12
添加#pragma pack(2),该结构体sizeof为8
回复 支持 反对

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2020-6-20 18:19:41 | 显示全部楼层
LuoBen 发表于 2020-6-19 11:21
好帖,来学习一下。其实我想知道的是stm32内存默认是多少字节对齐?
typedef struct
{

默认4字节
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2020-7-23
在线时间
34 小时
发表于 2020-8-12 17:14:48 | 显示全部楼层
mark,学习学习
回复 支持 反对

使用道具 举报

4

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2019-12-5
在线时间
40 小时
发表于 2021-5-18 09:59:53 | 显示全部楼层
惭愧 搞了一星期的文件系统 接口函数封装完好  但一直格式化不成功  今天一看 受益匪浅  拜谢
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 00:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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