AM5728的A15与DSP的IPC通讯,消息最大长度不能超过512字节 - AM5728 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 591|回复: 5

[已解决] AM5728的A15与DSP的IPC通讯,消息最大长度不能超过512字节

[复制链接]

6

主题

12

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
发表于 2019-1-10 17:04:48 | 显示全部楼层 |阅读模式
我们现在调AM5728的IPC通讯遇到问题:这个问题是A15(LINUX端)向DSP通过IPC发数据,数据不能超过512字节,超过就发不出去并提示TransportRpmsg_put: send failed: 90 (Message too long),我怎么设才能发送超过512字节的消息?

最佳答案

Dear 您好,     在Linux内核源码的“drivers/rpmsg/virtio_rpmsg_bus.c ”文件中,最大值已经限制为512Byte,如下图所示,您需要修改内核源码。
最近访问 头像模式 列表模式
回复

使用道具 举报

0

主题

192

帖子

2010

积分

广州创龙

Rank: 8Rank: 8

积分
2010
发表于 2019-1-11 17:22:48 | 显示全部楼层
Dear 您好,

    在Linux内核源码的“drivers/rpmsg/virtio_rpmsg_bus.c ”文件中,最大值已经限制为512Byte,如下图所示,您需要修改内核源码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

6

主题

12

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
 楼主| 发表于 2019-1-11 17:27:06 | 显示全部楼层
这个我将512改成1024的,但还是最大消息长度不能超过512
回复 支持 反对

使用道具 举报

6

主题

12

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
 楼主| 发表于 2019-1-11 17:30:43 | 显示全部楼层
这个我昨天就修改了试过的,效果还是一样的
回复 支持 反对

使用道具 举报

6

主题

12

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
 楼主| 发表于 2019-1-11 17:34:04 | 显示全部楼层
Bool TransportRpmsg_put(Void *handle, Ptr pmsg)
{
    MessageQ_Msg msg  = (MessageQ_Msg)pmsg;
    Int     status    = TRUE;
    int     sock;
    int     err;
    UInt16  clusterId;
    (Void)handle;

    /*
     * Retrieve the socket for the AF_SYSLINK protocol associated with this
     * transport.
     */
    clusterId = msg->dstProc - MultiProc_getBaseIdOfCluster();
    sock = TransportRpmsg_module->sock[clusterId];
    if (sock == INVALIDSOCKET) {
        return FALSE;
    }

    PRINTVERBOSE2("Sending msgId: %d via sock: %d\n", msg->msgId, sock)
    err = send(sock, msg, msg->msgSize, 0);
    if (err < 0) {
        fprintf(stderr, "TransportRpmsg_put: send failedxxx20190110: %d (%s)\n",
                errno, strerror(errno));
        status = FALSE;

        goto exit;
    }

    /*
     * Free the message, as this is a copy transport, we maintain MessageQ
     * semantics.
     */
    MessageQ_free(msg);

exit:
    return status;
}
现在测试情况看的是在执行send的候就报错了,超过长度后都去不到驱动层,所以改了驱动层的BUFFER长度也没有效果的
回复 支持 反对

使用道具 举报

0

主题

192

帖子

2010

积分

广州创龙

Rank: 8Rank: 8

积分
2010
发表于 2019-1-14 08:40:40 | 显示全部楼层
Dear 您好,

       一般来说我们只是通过该机制在核间传递消息,而不会去修改数据的大小。如果您需要传输较大的数据量,建议使用共享内存。
回复 支持 反对

使用道具 举报

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

本版积分规则  回帖提醒

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号-1  

GMT+8, 2019-6-25 02:54 , Processed in 0.149483 second(s), 48 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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