求助MDK 如何定义变量到指定的区域IRAM1,
STM32F407芯片有两片ram地址,现在发行程序写到一定大小,定义的部分变量会跑到IRAM2区域,也就是0x10000000开始的地方,DMA的一些访问只能在IRAM1区域的变量,否则出现串数错误,在调试UART1 DMA传输时候就发现了这个问题,后来发现接受缓冲区位于IRAM2的去,是查看总线部分,发现不能访问,求助如何强制定义接受缓冲区到IRAM1去呢,如果用at一个地址好像不好,因为可能会和别的变量冲突,以后改程序的时候可能就会出现冲突情况,修改Scatter分散加载文件应该可以,可以参考下面帖子里面的类似做法。
【STM32F303开发】+ 使用片内的CCMRAM缩短代码执行时间
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=602255&fromuid=394920
(出处: 意法半导体STM32/STM8技术社区)
从KEIL 的HELP中查到,用如下代码可以定义,但楼主还是要测试一下:
char ass __attribute__((at(0x10000000))); 版主你的是不是反了,而且用这种指定地址的定义方式,当变量定义越来越多的时候会冲突的 RAM空间足够用,所以没遇到类似的问题,如果用这种方法就要注意使用。在map中会自动分配的。
页:
[1]