SlideShare a Scribd company logo
2
Most read
5
Most read
13
Most read
LAS16-TR06
Remoteproc & rpmsg development
Bjorn Andersson
ENGINEERS
AND DEVICES
WORKING
TOGETHER
remoteproc
A framework for controlling the lifecycle of secondary
processors in an asymmetric multiprocessor system
ENGINEERS AND DEVICES
WORKING TOGETHER
remoteproc drivers
Implements the hardware interface for starting and stopping a remoteproc
● rproc_alloc(…, ops, firmware, …)
● rproc_add()
● rproc_del()
● rproc_put()
ops struct contains:
● start()
● stop()
Separate ops struct for fw handling operations
ENGINEERS AND DEVICES
WORKING TOGETHER
Resource table
● Firmware contains resource table section, listing:
○ Memory carveouts
○ IOMMU mappings
○ Trace buffers
○ Virtio devices
● Loaded and processed by the remoteproc core before loading code and data
segments and calling start()
● Limited implementation support for controlling physical placement of memory
carveouts
○ Resource table entries contains (optional) physical address
○ Dynamic allocation done in the context of the remoteproc driver
ENGINEERS AND DEVICES
WORKING TOGETHER
Auto-booting a remoteproc
● Traditionally a remoteproc was booted:
○ explicitly by a client, or
○ by the virtio devices registered during early resource table parsing
● First virtio device registered boots the core
○ Resources for additional virtio devices might not yet be registered
○ No ability to control a remoteproc explicitly if it has virtio devices in its resource table
● Change introduced to flag a remoteproc to auto-boot
○ Behavior no longer depends on listed and loaded virtio devices
○ Simplifies resource handling
ENGINEERS AND DEVICES
WORKING TOGETHER
Amend resource table entries
● Remoteproc driver might need to provide additional data for resources
○ Constraints on carveout allocations
○ Communicate addresses of programmatically registered resources
Suggestion:
● Provide API for remoteproc drivers to register resources
● Merge resources with entries from the resource table
○ FW_RSC_ADDR_ANY can be overridden by more specific data
○ Deny size growth
○ Update resource table, when applicable
ENGINEERS AND DEVICES
WORKING TOGETHER
Firmware without resource table
● Support for firmware files without resource table
○ Hard coded memory regions in driver
○ Firmware with non-standard data structures
● Still want to reuse core support for carveouts etc
● Traditionally remoteproc drivers could override resource table load operation
and programmatically inject generated table
○ Resource table is a on-disk structure, making this inconvenient
Suggestion:
● Expose API for remoteproc drivers to register resources with the core
ENGINEERS AND DEVICES
WORKING TOGETHER
Resource-list and API
● Group different types of memory regions in common list
○ Support carveout, ioremap and other types
● Extend previously suggested APIs to cover additional resources
○ Merge and validate with existing resources
● Remoteproc drivers and resource table parser using the same API
○ Decouples the remoteproc core from version 1 of the resource table format
● Defer allocations until boot time
○ Allows the merging of static and dynamically registered resources before allocation
● Use mechanism for allocating vring memory
○ Matching on device, then physical address and falling back on carveout
○ Allows driver to register ioremap’ed region to be used to vrings
ENGINEERS AND DEVICES
WORKING TOGETHER
Virtio Device alternatives
● Qualcomm SMD and GLINK follows remoteproc state
○ Like RPMSG and other virtio based devices
● Drivers related to firmware functionality follow remoteproc state
○ State either driven by function driver or function driver following state
● Generalize virtio-device list to allow arbitrary “subdevices”
○ “probe”/”remove” these devices following the RPROC_RUNNING state
○ Provide API to allow remoteproc drivers to register these devices
○ Common types in the core?
ENGINEERS AND DEVICES
WORKING TOGETHER
Remoteproc core dump files
Beneficial to provide core dumps for post mortem analysis of crashing remoteprocs
Suggestion:
● Provide API for registering segments to be included in the dump file
○ Can come from remoteproc driver or resource parser
● During crash recovery the core generates ELF structure based on segment list
● Make ELF content accessible through debugfs
● Recover remoteproc after user space finishes acquiring a copy, or timeout
Some data dumped from device memory or registers, would need backup before
core is powered down
ENGINEERS AND DEVICES
WORKING TOGETHER
Custom firmware parser
In current implementation the core reads, parses and operates on the resource
table
Inflexible for remoteproc drivers with firmware without resource table
● Driver can inject generated resource table during load
● Transforming other information into resource table is inconvenient
Suggestion:
● Extend fw_ops with a “parse” function
○ Allows drivers to supply custom resource parser
○ Doesn’t need to generate the on-disk format
● Refactor current resource parser, register as default parser
ENGINEERS AND DEVICES
WORKING TOGETHER
Dealing with huge firmware files
Firmware files often large and residing on secondary partitions
● Firmware files available very late
● Need mechanism to “signal” the availability
● Currently two working mechanisms
○ Using kernel modules for remoteproc drivers
○ CONFIG_FW_LOADER_USER_HELPER_FALLBACK
Firmware often use case and device specific
● How to distribute firmware files?
ENGINEERS
AND DEVICES
WORKING
TOGETHER
rpmsg
A framework and wire format for exchanging messages over a
point-to-point channel to a “remote processor”
(rpmsg is not remoteproc)
ENGINEERS AND DEVICES
WORKING TOGETHER
rpmsg drivers
RPMSG drivers implement communication endpoint
● Registering with kernel interfaces and expose remote functionality
● rpmsg devices instantiated and destroyed based on channel availability
● rpmsg_send(struct rpmsg_endpoint *)
● Driver has per-endpoint callback for incoming data
● rpmsg_create_ept() and rpmsg_destroy_ept() for multi-endpoint drivers
ENGINEERS AND DEVICES
WORKING TOGETHER
Alternative wire-formats
● Traditionally only VIRTIO_ID_RPMSG with its specific wireformat
● Qualcomm SMD and GLINK channel management and API similar to RPMSG
○ Mainline version of SMD designed to mimic RPMSG
○ Buffer management and packet format differs - not virtio based
● Split rpmsg implementation in virtio-rpmsg and housekeeping + API part
● RPMSG devices presented with one API regardless of backend
● Some generic improvements
○ Send functions now operate on “endpoints”
○ Cleaned up the public header file
ENGINEERS AND DEVICES
WORKING TOGETHER
User-space interface
● Remote core exposes functionality unrelated to Linux kernel
○ E.g debug interfaces and custom application logic
● Expose rpmsg_endpoint access to user space
○ Prior art based on exposing specific channels over sockets or character devices
● Upstream solution must handle multiple channels from multiple remotes
○ Without depending on hard coded channel names in the kernel
○ Likely not acceptable to put list in DeviceTree
Suggestion:
● Mechanism for managing endpoints to be exported
○ Manager can’t rely on standard rpmsg device handling
● rpmsg_create_ept() and rpmsg_destroy_ept() tied to open/close of char
devices
ENGINEERS AND DEVICES
WORKING TOGETHER
PCAP sink
RPMSG driver development benefits from ability to dissect communication
● Wireshark support for custom dissectors
● Hack used for wcn36xx development
● Standard solution would aid development of other drivers
Suggestion:
● Develop common pcap sink implementation for all rpmsg transactions
○ Single sink with BPF support?
○ One sink per endpoint?
Thank You
#LAS16
For further information: www.linaro.org
LAS16 keynotes and videos on: connect.linaro.org

More Related Content

PDF
A practical guide to buildroot
PDF
Linux Internals - Interview essentials 4.0
PDF
Linux Internals - Part II
PDF
Booting Android: bootloaders, fastboot and boot images
PDF
LCU14-103: How to create and run Trusted Applications on OP-TEE
PDF
QEMU Disk IO Which performs Better: Native or threads?
PDF
Linux Internals - Part III
PDF
Introduction to Modern U-Boot
A practical guide to buildroot
Linux Internals - Interview essentials 4.0
Linux Internals - Part II
Booting Android: bootloaders, fastboot and boot images
LCU14-103: How to create and run Trusted Applications on OP-TEE
QEMU Disk IO Which performs Better: Native or threads?
Linux Internals - Part III
Introduction to Modern U-Boot

What's hot (20)

PDF
SFO15-TR9: PSCI, ACPI (and UEFI to boot)
PDF
U-Boot - An universal bootloader
PDF
Uboot startup sequence
ODP
Linux Internals - Kernel/Core
PDF
The Linux Kernel Scheduler (For Beginners) - SFO17-421
PDF
LAS16-200: SCMI - System Management and Control Interface
PDF
Read-only rootfs: theory and practice
PDF
USB Drivers
PDF
Intel DPDK Step by Step instructions
PDF
BusyBox for Embedded Linux
PDF
Android Things : Building Embedded Devices
PPT
Basic Linux Internals
PDF
Qemu Introduction
PDF
Message Signaled Interrupts
PDF
Embedded Android : System Development - Part II (Linux device drivers)
PDF
LCU13: An Introduction to ARM Trusted Firmware
PDF
Linux Systems: Getting started with setting up an Embedded platform
PDF
Heterogeneous multiprocessing on androd and i.mx7
PDF
A crash course in CRUSH
PDF
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
SFO15-TR9: PSCI, ACPI (and UEFI to boot)
U-Boot - An universal bootloader
Uboot startup sequence
Linux Internals - Kernel/Core
The Linux Kernel Scheduler (For Beginners) - SFO17-421
LAS16-200: SCMI - System Management and Control Interface
Read-only rootfs: theory and practice
USB Drivers
Intel DPDK Step by Step instructions
BusyBox for Embedded Linux
Android Things : Building Embedded Devices
Basic Linux Internals
Qemu Introduction
Message Signaled Interrupts
Embedded Android : System Development - Part II (Linux device drivers)
LCU13: An Introduction to ARM Trusted Firmware
Linux Systems: Getting started with setting up an Embedded platform
Heterogeneous multiprocessing on androd and i.mx7
A crash course in CRUSH
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
Ad

Similar to LAS16-TR06: Remoteproc & rpmsg development (20)

PDF
LAS16-207: Bus scaling QoS
PDF
LAS16-200: Firmware summit - Tianocore Progress and Status
PDF
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
PDF
Firmware Develpment for hybrid (ARM and FPGA) processors
PDF
Develop Your Own Operating Systems using Cheap ARM Boards
PDF
BUD17-214: Bus scaling QoS update
PDF
Time is ready for the Civil Infrastructure Platform
PDF
From Silicon to Software - IIT Madras
PDF
TSC Sponsored BoF: Can Linux and Automotive Functional Safety Mix ? Take 2: T...
PDF
An Update on the European Processor Initiative
PPTX
Easily emulating full systems on amazon fpg as
PDF
Exploiting Linux Control Groups for Effective Run-time Resource Management
PPT
Virtual platform
PPTX
1334420 634648164164717500
PDF
What's New in RHEL 6 for Linux on System z?
PDF
Buiding a better Userspace - The current and future state of QEMU and KVM int...
PDF
NVMe Over Fabrics Support in Linux
ODP
ERTS 2008 - Using Linux for industrial projects
PDF
XS Boston 2008 VT-D PCI
PPTX
Educating the computer architects of tomorrow's critical systems with RISC-V
LAS16-207: Bus scaling QoS
LAS16-200: Firmware summit - Tianocore Progress and Status
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
Firmware Develpment for hybrid (ARM and FPGA) processors
Develop Your Own Operating Systems using Cheap ARM Boards
BUD17-214: Bus scaling QoS update
Time is ready for the Civil Infrastructure Platform
From Silicon to Software - IIT Madras
TSC Sponsored BoF: Can Linux and Automotive Functional Safety Mix ? Take 2: T...
An Update on the European Processor Initiative
Easily emulating full systems on amazon fpg as
Exploiting Linux Control Groups for Effective Run-time Resource Management
Virtual platform
1334420 634648164164717500
What's New in RHEL 6 for Linux on System z?
Buiding a better Userspace - The current and future state of QEMU and KVM int...
NVMe Over Fabrics Support in Linux
ERTS 2008 - Using Linux for industrial projects
XS Boston 2008 VT-D PCI
Educating the computer architects of tomorrow's critical systems with RISC-V
Ad

More from Linaro (20)

PDF
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
PDF
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
PDF
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
PDF
Bud17 113: distribution ci using qemu and open qa
PDF
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
PDF
HPC network stack on ARM - Linaro HPC Workshop 2018
PDF
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
PDF
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
PDF
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
PDF
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
PDF
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
PDF
HKG18-100K1 - George Grey: Opening Keynote
PDF
HKG18-318 - OpenAMP Workshop
PDF
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
PDF
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
PDF
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
PDF
HKG18-TR08 - Upstreaming SVE in QEMU
PDF
HKG18-113- Secure Data Path work with i.MX8M
PPTX
HKG18-120 - Devicetree Schema Documentation and Validation
PPTX
HKG18-223 - Trusted FirmwareM: Trusted boot
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Bud17 113: distribution ci using qemu and open qa
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-100K1 - George Grey: Opening Keynote
HKG18-318 - OpenAMP Workshop
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-113- Secure Data Path work with i.MX8M
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-223 - Trusted FirmwareM: Trusted boot

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Encapsulation theory and applications.pdf
PDF
Electronic commerce courselecture one. Pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Approach and Philosophy of On baking technology
PDF
KodekX | Application Modernization Development
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Modernizing your data center with Dell and AMD
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Unlocking AI with Model Context Protocol (MCP)
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
A Presentation on Artificial Intelligence
Encapsulation theory and applications.pdf
Electronic commerce courselecture one. Pdf
The AUB Centre for AI in Media Proposal.docx
Encapsulation_ Review paper, used for researhc scholars
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Approach and Philosophy of On baking technology
KodekX | Application Modernization Development
Network Security Unit 5.pdf for BCA BBA.
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectral efficient network and resource selection model in 5G networks
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Modernizing your data center with Dell and AMD
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...

LAS16-TR06: Remoteproc & rpmsg development

  • 1. LAS16-TR06 Remoteproc & rpmsg development Bjorn Andersson
  • 2. ENGINEERS AND DEVICES WORKING TOGETHER remoteproc A framework for controlling the lifecycle of secondary processors in an asymmetric multiprocessor system
  • 3. ENGINEERS AND DEVICES WORKING TOGETHER remoteproc drivers Implements the hardware interface for starting and stopping a remoteproc ● rproc_alloc(…, ops, firmware, …) ● rproc_add() ● rproc_del() ● rproc_put() ops struct contains: ● start() ● stop() Separate ops struct for fw handling operations
  • 4. ENGINEERS AND DEVICES WORKING TOGETHER Resource table ● Firmware contains resource table section, listing: ○ Memory carveouts ○ IOMMU mappings ○ Trace buffers ○ Virtio devices ● Loaded and processed by the remoteproc core before loading code and data segments and calling start() ● Limited implementation support for controlling physical placement of memory carveouts ○ Resource table entries contains (optional) physical address ○ Dynamic allocation done in the context of the remoteproc driver
  • 5. ENGINEERS AND DEVICES WORKING TOGETHER Auto-booting a remoteproc ● Traditionally a remoteproc was booted: ○ explicitly by a client, or ○ by the virtio devices registered during early resource table parsing ● First virtio device registered boots the core ○ Resources for additional virtio devices might not yet be registered ○ No ability to control a remoteproc explicitly if it has virtio devices in its resource table ● Change introduced to flag a remoteproc to auto-boot ○ Behavior no longer depends on listed and loaded virtio devices ○ Simplifies resource handling
  • 6. ENGINEERS AND DEVICES WORKING TOGETHER Amend resource table entries ● Remoteproc driver might need to provide additional data for resources ○ Constraints on carveout allocations ○ Communicate addresses of programmatically registered resources Suggestion: ● Provide API for remoteproc drivers to register resources ● Merge resources with entries from the resource table ○ FW_RSC_ADDR_ANY can be overridden by more specific data ○ Deny size growth ○ Update resource table, when applicable
  • 7. ENGINEERS AND DEVICES WORKING TOGETHER Firmware without resource table ● Support for firmware files without resource table ○ Hard coded memory regions in driver ○ Firmware with non-standard data structures ● Still want to reuse core support for carveouts etc ● Traditionally remoteproc drivers could override resource table load operation and programmatically inject generated table ○ Resource table is a on-disk structure, making this inconvenient Suggestion: ● Expose API for remoteproc drivers to register resources with the core
  • 8. ENGINEERS AND DEVICES WORKING TOGETHER Resource-list and API ● Group different types of memory regions in common list ○ Support carveout, ioremap and other types ● Extend previously suggested APIs to cover additional resources ○ Merge and validate with existing resources ● Remoteproc drivers and resource table parser using the same API ○ Decouples the remoteproc core from version 1 of the resource table format ● Defer allocations until boot time ○ Allows the merging of static and dynamically registered resources before allocation ● Use mechanism for allocating vring memory ○ Matching on device, then physical address and falling back on carveout ○ Allows driver to register ioremap’ed region to be used to vrings
  • 9. ENGINEERS AND DEVICES WORKING TOGETHER Virtio Device alternatives ● Qualcomm SMD and GLINK follows remoteproc state ○ Like RPMSG and other virtio based devices ● Drivers related to firmware functionality follow remoteproc state ○ State either driven by function driver or function driver following state ● Generalize virtio-device list to allow arbitrary “subdevices” ○ “probe”/”remove” these devices following the RPROC_RUNNING state ○ Provide API to allow remoteproc drivers to register these devices ○ Common types in the core?
  • 10. ENGINEERS AND DEVICES WORKING TOGETHER Remoteproc core dump files Beneficial to provide core dumps for post mortem analysis of crashing remoteprocs Suggestion: ● Provide API for registering segments to be included in the dump file ○ Can come from remoteproc driver or resource parser ● During crash recovery the core generates ELF structure based on segment list ● Make ELF content accessible through debugfs ● Recover remoteproc after user space finishes acquiring a copy, or timeout Some data dumped from device memory or registers, would need backup before core is powered down
  • 11. ENGINEERS AND DEVICES WORKING TOGETHER Custom firmware parser In current implementation the core reads, parses and operates on the resource table Inflexible for remoteproc drivers with firmware without resource table ● Driver can inject generated resource table during load ● Transforming other information into resource table is inconvenient Suggestion: ● Extend fw_ops with a “parse” function ○ Allows drivers to supply custom resource parser ○ Doesn’t need to generate the on-disk format ● Refactor current resource parser, register as default parser
  • 12. ENGINEERS AND DEVICES WORKING TOGETHER Dealing with huge firmware files Firmware files often large and residing on secondary partitions ● Firmware files available very late ● Need mechanism to “signal” the availability ● Currently two working mechanisms ○ Using kernel modules for remoteproc drivers ○ CONFIG_FW_LOADER_USER_HELPER_FALLBACK Firmware often use case and device specific ● How to distribute firmware files?
  • 13. ENGINEERS AND DEVICES WORKING TOGETHER rpmsg A framework and wire format for exchanging messages over a point-to-point channel to a “remote processor” (rpmsg is not remoteproc)
  • 14. ENGINEERS AND DEVICES WORKING TOGETHER rpmsg drivers RPMSG drivers implement communication endpoint ● Registering with kernel interfaces and expose remote functionality ● rpmsg devices instantiated and destroyed based on channel availability ● rpmsg_send(struct rpmsg_endpoint *) ● Driver has per-endpoint callback for incoming data ● rpmsg_create_ept() and rpmsg_destroy_ept() for multi-endpoint drivers
  • 15. ENGINEERS AND DEVICES WORKING TOGETHER Alternative wire-formats ● Traditionally only VIRTIO_ID_RPMSG with its specific wireformat ● Qualcomm SMD and GLINK channel management and API similar to RPMSG ○ Mainline version of SMD designed to mimic RPMSG ○ Buffer management and packet format differs - not virtio based ● Split rpmsg implementation in virtio-rpmsg and housekeeping + API part ● RPMSG devices presented with one API regardless of backend ● Some generic improvements ○ Send functions now operate on “endpoints” ○ Cleaned up the public header file
  • 16. ENGINEERS AND DEVICES WORKING TOGETHER User-space interface ● Remote core exposes functionality unrelated to Linux kernel ○ E.g debug interfaces and custom application logic ● Expose rpmsg_endpoint access to user space ○ Prior art based on exposing specific channels over sockets or character devices ● Upstream solution must handle multiple channels from multiple remotes ○ Without depending on hard coded channel names in the kernel ○ Likely not acceptable to put list in DeviceTree Suggestion: ● Mechanism for managing endpoints to be exported ○ Manager can’t rely on standard rpmsg device handling ● rpmsg_create_ept() and rpmsg_destroy_ept() tied to open/close of char devices
  • 17. ENGINEERS AND DEVICES WORKING TOGETHER PCAP sink RPMSG driver development benefits from ability to dissect communication ● Wireshark support for custom dissectors ● Hack used for wcn36xx development ● Standard solution would aid development of other drivers Suggestion: ● Develop common pcap sink implementation for all rpmsg transactions ○ Single sink with BPF support? ○ One sink per endpoint?
  • 18. Thank You #LAS16 For further information: www.linaro.org LAS16 keynotes and videos on: connect.linaro.org