硬汉嵌入式论坛

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

[μCGUI] 怎么把“动态内存”分配到外部SDRAM呢?

[复制链接]

20

主题

92

回帖

152

积分

初级会员

积分
152
发表于 2018-7-27 14:55:26 | 显示全部楼层 |阅读模式
  1. #define GUI_ALLOC_SIZE            12500  /* Size of dynamic memory ... For WM and memory devices*/
复制代码
GUIConf.h里分配的12KB动态内存是内部SRAM吧,请问怎么把uCGUI的动态内存分配到外部SDRAM呢?

回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2018-7-27 15:04:11 | 显示全部楼层
定义一个指针,将指针指到外部SDRAM的地址,再将指针分配给GUI
回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
 楼主| 发表于 2018-7-27 22:48:41 | 显示全部楼层
爱恋之燕 发表于 2018-7-27 15:04
定义一个指针,将指针指到外部SDRAM的地址,再将指针分配给GUI

请问把“指针分配给GUI”指的是什么操作呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106938
QQ
发表于 2018-7-28 01:32:32 | 显示全部楼层
tovax 发表于 2018-7-27 22:48
请问把“指针分配给GUI”指的是什么操作呢?

这里任意下载一个我们的emWin例子,看GUIConf.c文件
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1

  1. #include "GUI.h"
  2. #include "bsp.h"

  3. /*********************************************************************
  4. *
  5. *       Defines
  6. *
  7. **********************************************************************
  8. */
  9. //
  10. // Define the available number of bytes available for the GUI
  11. //
  12. #define EX_SRAM   1/*1 used extern sram, 0 used internal sram */

  13. #if EX_SRAM
  14. #define GUI_NUMBYTES  (1024*1024*8)
  15. #else
  16. #define GUI_NUMBYTES  (100*1024)
  17. #endif

  18. /* Define the average block size */
  19. #define GUI_BLOCKSIZE 0x80



  20. /*********************************************************************
  21. *
  22. *       Public code
  23. *
  24. **********************************************************************
  25. */
  26. /*********************************************************************
  27. *
  28. *       GUI_X_Config
  29. *
  30. * Purpose:
  31. *   Called during the initialization process in order to set up the
  32. *   available memory for the GUI.
  33. */
  34. void GUI_X_Config(void)
  35. {
  36. #if EX_SRAM
  37.         static U32 *aMemory;
  38.         aMemory = (U32 *)SDRAM_APP_BUF;
  39.        
  40.         /*  Assign memory to emWin */
  41.         GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
  42.         GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
  43. #else       
  44.         /* 32 bit aligned memory area */
  45.         static U32 aMemory[GUI_NUMBYTES / 4];
  46.        
  47.         /*  Assign memory to emWin */
  48.         GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
  49.         GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
  50. #endif
  51. }
复制代码



回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
 楼主| 发表于 2018-8-7 22:21:36 | 显示全部楼层
eric2013 发表于 2018-7-28 01:32
这里任意下载一个我们的emWin例子,看GUIConf.c文件
http://www.armbbs.cn/forum.php?mod=viewthread ...

这个方法是适用于emwin的吧,ucgui好像没有这些配置函数。
我看ucgui3.98的源码GUIAlloc.c中有这样的语句,或是分配到外部SDRAM的方法,不知道理解的对不对:
  1. #ifndef GUI_ALLOC_LOCATION
  2.   #define GUI_ALLOC_LOCATION
  3. #endif

  4. #ifndef GUI_MEM_ALLOC          /* Allows us in some systems to place the GUI memory */
  5.   #define GUI_MEM_ALLOC        /* in a different memory space ... eg "__far"        */
  6. #endif

  7. ... ... ... ... ... ...

  8. GUI_MEM_ALLOC GUI_HEAP GUI_Heap GUI_ALLOC_LOCATION;         /* Public for debugging only */

复制代码


GUI_Heap就是动态分配的可用空间吧,不过注释“Public for debugging only”,有点儿晕了。。。

按以上代码,定义合适的GUI_ALLOC_LOCATION和GUI_MEM_ALLOC是不是可以实现外部SDRAM的定位呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106938
QQ
发表于 2018-8-8 00:20:56 | 显示全部楼层
tovax 发表于 2018-8-7 22:21
这个方法是适用于emwin的吧,ucgui好像没有这些配置函数。
我看ucgui3.98的源码GUIAlloc.c中有这样的语 ...

是的,就这个。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 04:48 , Processed in 0.276836 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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