硬汉嵌入式论坛

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

[SRAM] STM32H7的64KB ITCM空间给RTX5做任务栈空间,注意分配不要将ITCM首地址给任务栈

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2021-7-27 09:09:22 | 显示全部楼层 |阅读模式
ITCM的首地址是0x0000 0000.

这个地址太特殊了,很多函数判断地址是否有效,都是判断是否等于NULL。

如果使用ITCM做RAM空间就容易出这个问题。比如下面这样分配

const osThreadAttr_t ThreadLED_Attr =
{
        .name = "osRtxLEDThread",
        .attr_bits = osThreadDetached,
        .priority = osPriorityNormal1,
        .stack_mem = (void *)0x00000000,    首地址
        .stack_size = 64* 1024,
};

只要不使用0x0000 0000做首地址就没有问题





回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2021-7-27 11:22:36 | 显示全部楼层
itcm 不是说 什么 dma 使用吗 ? 如果作为 任务堆栈使用的话,且又使用 dma 的话,会不会发生冲突 ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
 楼主| 发表于 2021-7-27 11:25:42 | 显示全部楼层
hpdell 发表于 2021-7-27 11:22
itcm 不是说 什么 dma 使用吗 ? 如果作为 任务堆栈使用的话,且又使用 dma 的话,会不会发生冲突 ?

DMA使用其它RAM空间
回复

使用道具 举报

2

主题

75

回帖

81

积分

初级会员

积分
81
发表于 2021-7-30 10:17:59 | 显示全部楼层
首地址应该设成0x00000004吧,单片机里也有这个对齐需求吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
 楼主| 发表于 2021-7-30 10:19:52 | 显示全部楼层
eggplant886 发表于 2021-7-30 10:17
首地址应该设成0x00000004吧,单片机里也有这个对齐需求吧

最好8字节对齐。
回复

使用道具 举报

12

主题

26

回帖

62

积分

初级会员

积分
62
发表于 2021-9-30 17:36:51 | 显示全部楼层
这个地址不是指令专用空间吗?也可以用做栈空间?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
 楼主| 发表于 2021-10-1 08:30:12 | 显示全部楼层
szttg 发表于 2021-9-30 17:36
这个地址不是指令专用空间吗?也可以用做栈空间?

是的,做数据存储反倒靠谱,实测了两个月时间。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 17:35 , Processed in 0.187656 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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