高中生
最后登录1970-1-1
在线时间 小时
注册时间2017-5-17
|
楼主 |
发表于 2017-8-9 14:59:02
|
显示全部楼层
已经可以正常使用外部SDRAM作为堆区了,部分代码我贴在下方吧。以下是.s文件的部分程序:- Stack_Size EQU 0x00003000
- AREA STACK, NOINIT, READWRITE, ALIGN=3
- Stack_Mem SPACE Stack_Size
- __initial_sp
- ; <h> Heap Configuration
- ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
- ; </h>
- Heap_Size EQU 0x00200000
- AREA HEAP, NOINIT, READWRITE, ALIGN=3
- __heap_base EQU 0xD0600000
- Heap_Mem SPACE Heap_Size
- __heap_limit EQU 0xD07FFFFF
- PRESERVE8
- THUMB
复制代码 以下是SDRAM的.h文件部分程序:
- /*SDRAM起始地址;存储空间2的起始地址*/
- #define SDRAM_BANK_ADDR ((uint32_t)0xD0000000)
- /*SDRAM大小,8M字节*/
- #define IS42S16400J_SIZE 8*1024*1024
- /* emWin动态内存首地址 */
- #define SDRAM_APP_BUF (SDRAM_BANK_ADDR + 3 * 1024 * 1024)
复制代码 以下是GUIConfig.c的部分程序:
- #define EX_SRAM 1/*1 used extern sram, 0 used internal sram */
- #if EX_SRAM
- #define GUI_NUMBYTES (1024 * 1024 * 3)
- #else
- #define GUI_NUMBYTES (100 * 1024)
- #endif
复制代码 最终可以实现将sdram的一部分内存用做系统堆的,栈我还是用了mcu自带的内存。
|
|