IAR 和 keil 使用外部 SDRAM 的区别
当芯片内部的 SRAM 不够用时,就需要在外部扩展 SDRAM,然后在写程序时将一些比较大的 buffer 定义在外部内存中。在进行正确的配置之后,对外部 SDRAM 的使用,和芯片内部的 SRAM 是一样的,可以直接对 SDRAM 的地址进行读写访问。
因此,最简单的方法就是,如下所示的代码,直接使用指针指到外部 SDRAM 的地址,之后对指针进行移动,便可以对全部 SDRAM 进行读写。使用这种方法需要特别小心,要确保指针指向的地址在 SDRAM 的地址空间。
1 | uint8_t *sdram_buf = (uint8_t*)SDRAM_ADDR; |
另外的一种方法就是,将 buffer 数组定义在外部 SDRAM 中,这样可将指针操作改为对数组的操作。也就是在定义数组时,不是由编译器自动分配地址,而是手动指定数组的地址。不同的 IDE 语法不一样,在 IAR 下,需要使用如下的语句,
1 | IAR 在外部SDRAM定义数组的方法 |
编译后生成的 map 文件可以看出,有 7MB 的空间是使用绝对地址定义的。
keil 下使用如下语句:
1 | keil 在外部SDRAM定义数组的方法 |
原文链接:本人CSDN博客
- 标题: IAR 和 keil 使用外部 SDRAM 的区别
- 作者: The Redefine Team
- 创建于 : 2018-03-26 19:34:15
- 更新于 : 2020-02-19 21:32:26
- 链接: https://redefine.ohevan.com/2018/03/26/IAR 和 keil 使用外部 SDRAM 的区别/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论