ST意法半导体
直播中

qjqb

8年用户 1255经验值
擅长:5762
私信 关注
[问答]

如何将RPMSG缓冲区大小从512字节减少到256字节?

我试图将 RPMSG 缓冲区大小从 512 字节减少到 256 字节。我已经成功地将过去的缓冲区大小增加到 1024,并为 32VRINGS 分配了更多内存。当尝试在 Linux 端将缓冲区大小减小到低于 512 时,Cube IDE 将提示“无法插入所有硬件断点...”。我真的很好奇 openamp_conf 与硬件断点的关系。
双方配置如下:
Linux 端
virtio_rpmsg_bus.c :
  • #define MAX_RPMSG_NUM_BUFS        (256)
  • #define MAX_RPMSG_BUF_SIZE        (256)
STM32mp15xx-dkx.dtsi:
  • vdev0vring0: vdev0vring0@10040000 {
  •                         compatible = "shared-dma-pool";
  •                         reg = <0x10040000 0x0800>;
  •                         no-map;
  •                 };
  •                 vdev0vring1: vdev0vring1@10040800 {
  •                         compatible = "shared-dma-pool";
  •                         reg = <0x10040800 0x0800>;
  •                         no-map;
  •                 };
  •                     vdev0buffer: vdev0buffer@10041000 {
  •                     compatible = "shared-dma-pool";
  •                     reg = <0x10041000 0x10000>;
  •                     no-map;
  •                   };
M4侧
STM32MP157CACX_RAM.ld
  • MEMORY
  • {
  •   RETRAM_interrupts        (xrw)        : ORIGIN = 0x00000000,        LENGTH = 0x00000298
  •   FLASH_text                (rx)        : ORIGIN = 0x10000000,        LENGTH = 128K
  •   RAM1_data                (xrw)        : ORIGIN = 0x10020000,        LENGTH = 128K
  •   RAM2_ipc_shm                (xrw)        : ORIGIN = 0x10040000,        LENGTH = 0x00011000
  • }







回帖(1)

叶紫薇

2022-12-15 14:17:57
缓冲区的大小仅影响 vdev0buffer 内存区域
  vdev0buffer_size = buffer_size * 缓冲区数量 * 2
=> 因子 2 用于 RX + TX
使用的缓冲区数量会影响 vdev0buffer,也会影响 vdev0vringX 区域。
实际上,vrings 包含缓冲区描述符结构 + 已用和可用的缓冲区结构
举报

更多回帖

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