CN / EN
CN / EN

GR5515IGND基于SDK_1.7.0开发屏幕类应用RAM空间不够缓存画面数据怎么增加? GR551x

137****com

2025-07-10 14:48

我司已用GR5515IGND芯片、基于SDK_1.7.0版本、基于工程...GR551x_SDK_V1.7.0\projects\ble\ble_peripheral\ble_app_uart 开发的。

基本保持了ble_app_uart 的原有BLE交互逻辑、参数配置,只是增加了数据接收后的处理业务。


第一代产品屏幕分辨率较低,一帧画面需要10KByte左右就可以。

现在迭代升级,屏幕尺寸更大,一帧画面的数据量达到192000Byte。

尝试不改变原有工程的架构、业务逻辑的情况下,直接放大接收缓冲区,期望在缓冲区中一次性把一帧画面收完,定义的位置如下:

...GR551x_SDK_V1.7.0\projects\ble\ble_peripheral\ble_app_uart\Src\user\transport_scheduler.c

#define RING_BUFFER_SIZE_BLE 192000
#define RING_BUFFER_SIZE_UART 512
#define UART_ONCE_SEND_SIZE 244
#define BLE_MtU_MAX 512
/*
 * LOCAL VARIABLE DEFINITIONS
 *****************************************************************************************
 */
static uint16_t s_mtu_size = 23;
static bool s_transport_flag[FLAGS_NB];
static uint8_t s_uart_to_ble_buff[RING_BUFFER_SIZE_UART]; // 串口 -> BLE 全量待发缓冲
static uint8_t s_ble_to_uart_buff[RING_BUFFER_SIZE_BLE];  // BLE -> 串口 全量待发缓冲
static uint8_t s_uart_tx_data[UART_ONCE_SEND_SIZE];       // 串口 单次 待发缓冲
static uint8_t s_ble_tx_data[BLE_MtU_MAX];                // BLE 单次 待发缓冲
static ring_buffer_t s_uart_rx_ring_buffer;
static ring_buffer_t s_ble_rx_ring_buffer;

直接把RING_BUFFER_SIZE_BLE 设置为192000,编译报错如下:


曾经尝试,把RING_BUFFER_SIZE_BLE设置为150*1024,如下:


#define RING_BUFFER_SIZE_BLE 150*1024

编译可通过,并且.map文件的程序大小统计如下:

==============================================================================


      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   

     88372      10634       7576       1988     200336     775847   Grand Totals
     88372      10634       7576       1012     200336     775847   ELF Image Totals (compressed)
     88372      10634       7576       1012          0          0   ROM Totals

==============================================================================

    Total RO  Size (Code + RO Data)                95948 (  93.70kB)
    Total RW  Size (RW Data + ZI Data)            202324 ( 197.58kB)
    Total ROM Size (Code + RO Data + RW Data)      96960 (  94.69kB)

==============================================================================

由此可见,RAM空间只用了197.58KB。


请教帮忙解答:

1、当设置#define RING_BUFFER_SIZE_BLE 150*1024 时RAM空间只用了197.58KB。,是否可以理解仍有 256KB-197.58KB = 58.42KB空间可以支配?

2、该程序中的RING_BUFFER_SIZE_BLE 总共需要 188 *1024 的大小,那么此时还需要38KB,从剩余的58.42KB,如何把它利用起来?具体设置哪些参数?

0收藏

0赞成

zhongchengzhi

汇顶员工
2025-07-10 15:48

您好:

1、Map文件的202324 ( 197.58kB)并不包含系统预留,ROM使用和RAM code size等,当链接报错时,此时系统无更多可用的SRAM。

2、您可以根据需求,调整custom_config.h里面的配置来优化SRAM使用,custom_config的配置参考: https://developers.goodix.com/zh/bbs/detail/62629017497443a8a23007970c1d3769?answerId=0ffad09987484459ae6ccf94e5a30437


5条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注