硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3876|回复: 11
收起左侧

[μCOS-III] 现在网上各种uCOS的移植工程,没有把握住栈空间8字节对齐的精髓

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-7-24 14:19:20 | 显示全部楼层 |阅读模式
很多人喜欢这么干,实现栈空间的8字节对齐,这个是个治标不治本的错误处理办法。

3.jpg

根本的解决办法是在这里,在这里实现,可以确保万无一失。




为甚要做8字节对齐,如果不对齐的话,用户做浮点运算和64bit数据运算会有任务,网上各种问题里面最常见的就是printf打印浮点问题。

当然造成printf浮点问题的,除了8字节对齐还有硬件FPU的移植。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-7-24 14:26:27 | 显示全部楼层
基于V5,V6和V7的最新版uCOS-III V3.08.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-19)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96918

基于V5,V6和V7的最新版uCOS-II V2.93.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-20)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96928
回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2020-7-24 16:02:42 | 显示全部楼层
ucos中的那句话是怎么保证8字节对齐的呢?
回复

使用道具 举报

7

主题

190

回帖

216

积分

高级会员

积分
216
发表于 2020-7-24 16:04:00 | 显示全部楼层
感谢  之前学习没注意到这个
回复

使用道具 举报

609

主题

3047

回帖

4894

积分

至尊会员

积分
4894
发表于 2020-7-24 20:25:36 | 显示全部楼层
受教了,感谢感谢
回复

使用道具 举报

7

主题

70

回帖

91

积分

初级会员

积分
91
发表于 2020-7-24 21:12:27 | 显示全部楼层
感谢,原来一直这样处理。请老大帮忙解释一下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-7-25 01:15:38 | 显示全部楼层
木兰花 发表于 2020-7-24 16:02
ucos中的那句话是怎么保证8字节对齐的呢?

8字节对齐就是地址对8求余为0,这里直接屏蔽低3个bit,即设置低3bit为0,这样对8求余必定为0
回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-7-25 10:12:55 | 显示全部楼层
那原本传递进来的地址不是8字节对齐的,函数里面这么处理了,会不会用到了不该用的地方了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-7-25 10:28:28 | 显示全部楼层
morning_enr6U 发表于 2020-7-25 10:12
那原本传递进来的地址不是8字节对齐的,函数里面这么处理了,会不会用到了不该用的地方了?

这个是任务初始化阶段做的栈空间初始化。这样的话,传递进来的是不是8字节对齐都没有关系,这里会做专门的8字节对齐处理。

回复

使用道具 举报

41

主题

112

回帖

235

积分

高级会员

积分
235
发表于 2020-11-5 16:05:33 | 显示全部楼层
那如果定义一个大数组,stm32中,默认是几个字节对齐?
谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-11-5 16:43:51 | 显示全部楼层
bear_yh 发表于 2020-11-5 16:05
那如果定义一个大数组,stm32中,默认是几个字节对齐?
谢谢

MDK中全局变量的数据对齐问题说明
http://www.armbbs.cn/forum.php?m ... 3511&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
发表于 2023-8-12 19:15:21 | 显示全部楼层
昨天调试程序遇到浮点数问题,折腾了一天才知道是以前用的裸机系统没问题现在用的UCOS没有做8字节对齐,还以为是内存不够导致内存空间错乱了,现在8字节对齐就好了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 05:36 , Processed in 0.193046 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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