RT-Thread论坛
直播中

温暖镜头

9年用户 994经验值
擅长:电源/新能源 制造/封装
私信 关注

rt-thread中的lvgl怎样才使用外部RAM?

我想问一下rt-thread中的lvgl怎样才使用外部RAM,我想把lvgl的绘图缓冲区搬到外部RAM上,我是这么做的,直接在lv_port_disp.c中修改

lv_disp_draw_buf_init(&draw_buf_dsc_1, buf_1, NULL,MY_DISP_HOR_RES * MY_DISP_VER_RES*2/10 );
但是编译时出现下面问题,这种情况怎么解决,那位大神能指点一下?
QQ截图20240713113848.png

回帖(1)

jjll652

2024-7-15 17:02:54
要在RT-Thread中使用外部RAM作为LVGL的绘图缓冲区,您需要按照以下步骤操作:

1. 确保您的硬件平台支持外部RAM,并已经正确配置了外部RAM。

2. 在RT-Thread中,您需要配置外部RAM的驱动。这通常包括初始化外部RAM、设置内存分配器等。您可以查阅RT-Thread的官方文档,了解如何配置外部RAM。

3. 在LVGL的移植层(lv_port_disp.c)中,您需要修改绘图缓冲区的初始化代码。您已经尝试修改了`lv_disp_draw_buf_init`函数,但是遇到了编译问题。这可能是因为您的修改方式不正确或者缺少了一些必要的配置。

   正确的修改方法如下:

   ```c
   #include "lvgl/lvgl.h"

   // 定义外部RAM的缓冲区
   uint16_t *ext_ram_buf = (uint16_t *)your_external_ram_address;
   size_t ext_ram_buf_size = MY_DISP_HOR_RES * MY_DISP_VER_RES * 2 / 10;

   // 初始化LVGL的绘图缓冲区
   static lv_disp_draw_buf_t draw_buf;
   lv_disp_draw_buf_init(&draw_buf, ext_ram_buf, NULL, ext_ram_buf_size);
   ```

   请确保将`your_external_ram_address`替换为您的外部RAM的实际地址。

4. 在LVGL的显示驱动初始化代码中,设置绘图缓冲区:

   ```c
   lv_disp_drv_t disp_drv;
   lv_disp_drv_init(&disp_drv);
   disp_drv.draw_buf = &draw_buf;
   // 其他配置...
   lv_disp_drv_register(&disp_drv);
   ```

5. 重新编译您的项目,确保所有修改都已正确应用。

6. 如果编译过程中仍然出现问题,请检查您的代码和配置,确保没有遗漏或错误。您还可以查阅RT-Thread和LVGL的官方文档,了解更多关于外部RAM和显示驱动配置的信息。

通过以上步骤,您应该能够成功地将LVGL的绘图缓冲区搬到外部RAM上。如果仍然遇到问题,请提供更多详细信息,以便我们能够更好地帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分