anchao opened a new pull request, #15827: URL: https://github.com/apache/nuttx/pull/15827
## Summary qemu-armv8a/ivshmem: add ivshmem chapter An example implementation for OpenAMP based on the Inter-VM share memory(ivshmem):: rpproxy_ivshmem: Remote slave(client) proxy process. rpserver_ivshmem: Remote master(host) server process. Please refer to the official Qemu ivshmem documentation for more information: https://www.qemu.org/docs/master/system/devices/ivshmem.html Signed-off-by: chao an <anchao.arc...@bytedance.com> ## Impact N/A ## Testing a. Start rpserver_ivshmem:: $ qemu-system-aarch64 -cpu cortex-a53 -nographic -machine virt,virtualization=on,gic-version=3 -kernel server/nuttx \ -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,addr=0xb \ -object memory-backend-file,id=shmmem-shmem0,mem-path=/dev/shm/ivshmem0,size=4194304,share=yes b. Start rpproxy_ivshmem:: $ qemu-system-aarch64 -cpu cortex-a53 -nographic -machine virt,virtualization=on,gic-version=3 -kernel proxy/nuttx \ -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,addr=0xb \ -object memory-backend-file,discard-data=on,id=shmmem-shmem0,mem-path=/dev/shm/ivshmem0,size=4194304,share=yes c. Check the RPMSG Syslog in rpserver shell: In the current configuration, the proxy syslog will be sent to the server by default. You can check whether there is proxy startup log in the server shell. RpServer bring up:: $ qemu-system-aarch64 -cpu cortex-a53 -nographic -machine virt,virtualization=on,gic-version=3 -kernel server/nuttx \ -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,addr=0xb \ -object memory-backend-file,id=shmmem-shmem0,mem-path=/dev/shm/ivshmem0,size=4194304,share=yes [ 0.000000] [ 0] [ INFO] [server] pci_register_rptun_ivshmem_driver: Register ivshmem driver, id=0, cpuname=proxy, master=1 ... [ 0.033200] [ 3] [ INFO] [server] ivshmem_probe: shmem addr=0x10400000 size=4194304 reg=0x10008000 [ 0.033700] [ 3] [ INFO] [server] rptun_ivshmem_probe: shmem addr=0x10400000 size=4194304 After rpproxy bring up, check the log from rpserver:: NuttShell (NSH) NuttX-10.4.0 server> [ 0.000000] [ 0] [ INFO] [proxy] pci_register_rptun_ivshmem_driver: Register ivshmem driver, id=0, cpuname=server, master=0 ... [ 0.031400] [ 3] [ INFO] [proxy] ivshmem_probe: shmem addr=0x10400000 size=4194304 reg=0x10008000 [ 0.031800] [ 3] [ INFO] [proxy] rptun_ivshmem_probe: shmem addr=0x10400000 size=4194304 [ 0.033100] [ 3] [ INFO] [proxy] rptun_ivshmem_probe: Start the wdog d. IPC test via RPMSG socket: Start rpmsg socket server:: server> rpsock_server stream block test server: create socket SOCK_STREAM nonblock 0 server: bind cpu , name test ... server: listen ... server: try accept ... server: Connection accepted -- 4 server: try accept ... Switch to proxy shell and start rpmsg socket client, test start:: proxy> rpsock_client stream block test server client: create socket SOCK_STREAM nonblock 0 client: Connecting to server,test... client: Connected client send data, cnt 0, total len 64, BUFHEAD process0007, msg0000, name:test client recv data process0007, msg0000, name:test ... client recv done, total 4096000, endflags, send total 4096000 client: Terminating Check the log on rpserver shell:: server recv data normal exit server Complete ret 0, errno 0 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org