如何将SDRAM用做系统堆栈

2019-07-20 12:46发布

由于要做矢量字库,使得F429的内部空间不够用,所以希望使用板载的外部SDRAM作为系统堆栈。前期的工作如下所述。已经将8MB开始的1MB用做LCD的显存,代码如下:

[mw_shl_code=applescript,true]/*SDRAM起始地址;存储空间2的起始地址*/
#define SDRAM_BANK_ADDR     ((uint32_t)0xD0000000)

/* emWin动态内存首地址 */
#define SDRAM_APP_BUF     (SDRAM_BANK_ADDR + 1 * 1024 * 1024)[/mw_shl_code]
将8MB中间的6MB用作emwin的动态内存,代码如下:
[mw_shl_code=applescript,true]#define EX_SRAM   1/*1 used extern sram, 0 used internal sram */

#if EX_SRAM
#define GUI_NUMBYTES  (1024 * 1024 * 6)
#else[/mw_shl_code]
希望是将最后的1MB用做系统堆栈,在‘STM32F4xx_StdPeriph_Driver’中将以下代码1修改为代码2:

[mw_shl_code=applescript,true]//代码1
Heap_Size       EQU     0x00010000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit
                PRESERVE8
                THUMB

//代码2
Heap_Size       EQU     0x00100000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base                EQU                0xD0700000
Heap_Mem        SPACE   Heap_Size
__heap_limit        EQU                0xD07FFFFF
                PRESERVE8
                THUMB[/mw_shl_code]
理论上讲应该是能实现的,但是只要修改了堆栈,程序就进入harddefault,完全懵逼。
不知道有没有大侠知道这个要怎么解决呢?先谢过!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
花开的时候微笑
1楼-- · 2019-07-20 15:32
 精彩回答 2  元偷偷看……
jinggx
2楼-- · 2019-07-20 16:25
要改启动文件,还是有点麻烦。过大的栈,不是合理的设计。
哈哈哈哈
3楼-- · 2019-07-20 22:01
我觉得会很慢,很麻烦
mon51
4楼-- · 2019-07-21 03:22
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 04:54
 精彩回答 2  元偷偷看……

一周热门 更多>