野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 652|回复: 0

FreeRTOS中关于TCB栈顶地址的疑问

[复制链接]
发表于 2024-5-22 15:55:02 | 显示全部楼层 |阅读模式
本帖最后由 微信用户-Zr9DCi 于 2024-5-22 22:48 编辑
  1. typedef struct tskTaskControlBlock
  2. {
  3.         volatile StackType_t *pxTopOfStack;                          // 栈顶
  4.         ListItem_t                             xStateListItem;                         // 任务节点
  5.         StackType_t          *pxStack;                               // 任务栈起始地址                                                                        
  6.         char                 pcTaskName[ configMAX_TASK_NAME_LEN ];  // 任务名称,字符串形式
  7.         TickType_t           xTicksToDelay;                          // 任务延时
  8. } tskTCB;
  9. typedef tskTCB TCB_t;
复制代码
野火老师在讲解任务创建的时候说栈顶位置是向下做8字节对齐,我在仿真的时候计算好像并没有得到正确的数值,有高手能帮我看一下吗?
这里以空闲栈为例。
栈起始地址是数组地址也就是pxStack = 0x2000047C,那么栈顶地址也就是0x20000494+0x200(512) = 0x20000694,然后向下8字节对齐,应该是0x20000690,但在仿真中看到的是0x20000650,差40个字节。这是因为什么?同样在其他任务的TCB中也同样是这样的
同时可以告知我栈的单位是字在哪里体现的吗?128 Word = 512Byte
谢谢高手们







野火论坛202405221545471923..png
回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 02:10 , Processed in 0.101038 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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