openamp 实现linux业务功能需求

用户空间,

交叉编译移植openamp文件

使用petalinux工具自动生成的文件,可以执行
自己根据源码移植的可执行程序

Libmetal

Openamp

生成的文件不能执行,提示打开共享内存文件失败。在这个过程中遇到了很多问题

还没有解决方法

如何将openamp嵌入到自己的程序中,

方法一:试着将echo_test文件单独编译,提示头文件<linux/rpmsg.h>文件不存在,这个文件在内核中

方法二:echo_test文件提取不出来,那就把要添加的程序融入到petalinux工具生成的源码中

源码路径
<工程文件夹下>/components/yocto/layers/meta-openamp/recipes-openamp/rpmsg-examples/rpmsg-echo-test

wy@ubuntu:/opt/pkg/petalinux/2020.2/ZYNQ/components/yocto/layers/meta-openamp/recipes-openamp/rpmsg-examples/rpmsg-echo-test$ ls
fd_poll.c  ipc_sem.c  ipc_shm.c  ipc_usocket.c  ipc_usock_msg.c  LICENSE  Makefile     rpmsg.c
fd_poll.h  ipc_sem.h  ipc_shm.h  ipc_usocket.h  ipc_usock_msg.h  main.c   Makefile_WY  rpmsg.h

Makefile

APP=rpmsg_process #可执行文件名
APP_OBJS = main.o ipc_usocket.o ipc_shm.o ipc_sem.o ipc_usock_msg.o rpmsg.o fd_poll.o

# Add any other object files to this list below

all: $(APP)

$(APP): $(APP_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(APP_OBJS) $(LDLIBS) 

clean:
        rm -rf $(APP) *.o

%.o: %.c
        $(CC) -c $(CFLAGS) -o $@ $<


在rpmsg-echo-test_1.0.bb 文件中添加文件

SUMMARY = "RPMsg examples: echo test demo"

LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b30cbe0b980e98bfd9759b1e6ba3d107"

SRC_URI = "\
        file://LICENSE \
        file://Makefile \
        file://main.c \
        file://ipc_usocket.h \
        file://ipc_usocket.c \
        file://fd_poll.c \
        file://fd_poll.h \
        file://ipc_sem.c \
        file://ipc_sem.h \
        file://ipc_shm.c \
        file://ipc_shm.h \
        file://ipc_usock_msg.c \
        file://ipc_usock_msg.h \
        file://rpmsg.c \
        file://rpmsg.h \
        "

S = "${WORKDIR}"

RRECOMMENDS_${PN} = "kernel-module-rpmsg-char"

FILES_${PN} = "\
        /usr/bin/rpmsg_process\
"

do_install () {
        install -d ${D}/usr/bin
        install -m 0755 rpmsg_process ${D}/usr/bin/rpmsg_process
}

在echo_test.c源码文件中,接受和发送使用的read,write。添加许多文件,主要实现poll,socket,shm等功能,与其他进程实现通信。

猜你喜欢

转载自blog.csdn.net/WANGYONGZIXUE/article/details/121236940