裸机可以用,但是freertos无法使用

原因是内存分配,内存管理问题,可以将显示和SD卡内存分开

0 开始,长度为 32 KB 的内存区域,其结束后的下一个地址(即第 32 KB 开始的地址)是:

0x00008000

计算过程
起始地址: 0x00000000
长度: 32 KB
换算为字节: 32 times 1024 = 32,768 字节
换算为十六进制:
    32 = 2^5
    1 text{ KB} = 2^{10}
    32 text{ KB} = 2^5 times 2^{10} = 2^{15}
    2^{15} 在十六进制中对应 0x8000
最后一个有效字节地址: 0x00007FFF
第 32 KB 开始的地址: 0x00007FFF + 1 = 0x00008000

结合 STM32H7 的实际应用

如果你是将这个偏移量应用到 SRAM1 (0x24000000) 上:

基准地址: 0x24000000
偏移量: 32 KB (0x8000)
计算结果: 0x24000000 + 0x8000 = 0x24008000

这个地址在哪里?
它位于 SRAM1 的最前端。
    0 ~ 32KB: 0x24000000 ~ 0x24007FFF
    32KB 开始: 0x24008000 (你问的这里)
    32KB ~ 64KB: 0x24008000 ~ 0x2400FFFF

MPU 配置提示
如果你打算用 MPU 保护从 0x24000000 开始的 32 KB 区域:
Base Address: 0x24000000
Size: MPU_REGION_SIZE_32KB
覆盖范围: 0x24000000 到 0x24007FFF
下一个可用地址: 0x24008000

如果你是想把变量放在 32 KB 之后 的位置(避开前 32KB):
请使用地址 0x24008000。

快速对照表 (基于 0x24000000 起始)
偏移大小   十六进制偏移   目标地址 (0x24000000 + 偏移)   说明
32 KB   0x8000   0x24008000   第 32KB 开始

64 KB   0x10000   0x24010000   第 64KB 开始

128 KB   0x20000   0x24020000   第 128KB 开始

256 KB   0x40000   0x24040000   第 256KB 开始

512 KB   0x80000   0x24080000   SRAM1 结束,SRAM2 开始
Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐