【原创】【STM32F429开发日志】通过修改.sct文件自动分配SDRAM变量
第一步,打开SDRAM例程,SDRAM的起始地址为: 0xD000000, 分配RAM1大小为4M字节。
编译SDRAM例程,会生成一个.sct文件。
图1 使用Keil存储器分配图设置SDRAM的起始位置和大小
第二步, 取消选择Use Memory Layout from Target Dialog,手动编辑FMC_SDRAM.sct文件
图2 不再使用Keil的存储器设置对话框
图3 .sct文件修改前后对比
第三步,SDRAM变量声明
/* ADDRESS: 0x0D0000000 SIZE: 0x400000 */
#pragma arm section rwdata = "SD_RAM1", zidata = "SD_RAM1"
__IO uint8_t USART1_Rx_Buffer; // 0x10000: 64K
__IO uint16_t USART1_Rx_Count;
#pragma arm section rwdata
/* ADDRESS: 0xD0400000 SIZE: 0x400000 */
__IO uint8_t USART1_Rx_Buffer2 __attribute__ ((at(0xD0400000))); // 0x10000: 64K
第四步,对示例代码进行硬件仿真测试,在观察串口查看变量的位置和内容。
for (counter = 0x00; counter < IS42S16400J_SIZE; counter++)
{
*(__IO uint8_t*) (SDRAM_BANK_ADDR + counter) = (uint8_t)0x0;
}
for(counter = 0; counter < 0x10000; ++counter){
USART1_Rx_Buffer = 0x03;
}
for (counter = 0x00; counter < IS42S16400J_SIZE; counter++)
{
*(__IO uint8_t*) (SDRAM_BANK_ADDR + 0x400000 + counter) = (uint8_t)0x0;
}
for(counter = 0; counter < 0x10000; ++counter){
USART1_Rx_Buffer2 = 0x02;
}
你好,能上传工程文件看下吗? 有版本限制的,MDK-ARM编译器比较奇怪,有的版本支持某个.sct文件,有的版本就不支持,如果不是做bootlaoder之类的,不建议修改.sct文件,推荐用GCC编译器。 你好,能上传工程文件看下吗? 又多学到一种手段。
赞,LZ:) 学习了,收藏下,兴许以后可以用到~
页:
[1]