硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3075|回复: 2
收起左侧

[emWin] 内存分配的问题(enwin再加上malloc)

[复制链接]

5

主题

16

回帖

31

积分

新手上路

积分
31
发表于 2016-7-12 12:51:52 | 显示全部楼层 |阅读模式
首先这是emwin的地址分配空间和大小
#define GUI_NUMBYTES  (1024 * 1024) * 2  // x MByte

//
// Define the average block size
//
#define GUI_BLOCKSIZE 0x80

//地址是SDRAM区
#define SDRAM_BASE_ADDR          0xA0000000
#define LCD_VRAM_BASE_ADDR       ((uint32_t)SDRAM_BASE_ADDR)

#define LCD_GUI_RAM_BASE  (uint32_t)(LCD_VRAM_BASE_ADDR+(1024 * 1024) * 1)


这样分配emwin运行正常

由于程序要用到其他模块  需要动态分配内存  我用了别人写的malloc函数
我把这个函数整体放在了SDRAM中  分散加载文件如下:

LR_IROM1 0x00000000 0x00080000  {    ; load region size_region
    ER_IROM1 0x00000000 0x00080000  {  ; load address = execution address
        *.o (RESET, +First)
        *(InRoot$$Sections)
        .ANY (+RO)
    }

    RW_IRAM1 0x10000000 0x00010000  {  ; RW data
        startup_LPC177x_8x.o (STACK)
       ; startup_LPC177x_8x.o (HEAP)
        .ANY (+RW +ZI)
    }

    RW_IRAM2 0x20000000 0x00008000  {
        .ANY (+RW +ZI)
    }  
    RW_ESDRAM 0xA7000000 0x0800000  {
     
      malloc.o (+RW +ZI)
    }
}

查看map 以及在程序运行时查看malloc动态分配的内存池均是在0xA7000000之后的  内存貌似是不冲突  程序也正常运行,但只要运行到有malloc的地方,屏幕显示就会出现一道花道道,好奇怪  ,找不出什么原因,大神帮忙看看,谢谢了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-7-13 00:30:52 | 显示全部楼层
我以前做矢量汉字显示的时候,一部分SDRAM空间是通过malloc使用的,还有显存以及emWin动态内存都是用的SDRAM,没有遇到你所说的问题。
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2016-7-13 09:23:39 | 显示全部楼层
好的吧,我再找找原因,谢谢回复[s:142]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 04:12 , Processed in 0.368531 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表